go-pretty is a Go library that provides utilities for prettifying console output of tables, lists, progress bars, and text with emphasis on customization and flexibility.
The library solves the problem of rendering structured data in terminals with visual polish and control. Its table package handles pretty-printing with colors, auto-merge, sorting, paging, and multiple output formats including ASCII, HTML, Markdown, CSV, and TSV. The progress package tracks task completion with ETA calculation, speed metrics, indeterminate indicators, and customizable styles. The list package renders hierarchical data with multiple levels and indentation, also supporting ASCII, HTML, and Markdown output. The text package provides string manipulation utilities with full ANSI escape sequence support, including alignment, colors, formatting, cursor control, and transformations for case, JSON, time, and URLs.
Developers should choose this library when building command-line tools that need polished table rendering, progress tracking, or formatted list output. It suits projects where console presentation matters and where flexibility in styling and output format is valuable. The library's strength lies in its breadth across multiple output types rather than depth in any single area, making it useful for tools that need to display various kinds of structured data.
The project maintains active development with regular updates across its multiple packages. Work spans the full range of functionality, from core table and progress features to supporting utilities in the text package. The codebase receives ongoing refinement and bug fixes, indicating sustained attention to both new capabilities and stability.