Glow: A Terminal Markdown Reader with TUI and CLI Modes
Render markdown on the CLI, with pizzazz! 💅🏻
At a glance
- What is it?
- Glow is a command-line Markdown reader from Charmbracelet that renders formatted Markdown in the terminal, discovers local files and Git repositories, and provides a full TUI with a fuzzy-searchable file browser. It is available across package managers and supports custom stylesheets.
- Who is it for?
- Glow is the right tool for engineers who regularly read documentation files in the terminal and want formatted output without opening a browser. The TUI mode makes it useful for browsing unfamiliar repositories where you do not know which Markdown files exist.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Glow is and who it is for
Glow renders Markdown files directly in the terminal with formatting: headings, code blocks, bold, links, and other Markdown elements are presented with visual styling rather than raw markup. It has two distinct modes: a TUI (textual user interface) for browsing and a CLI for rendering specific files or URLs.
The intended audience is developers and technical writers who work primarily in the terminal and want to read README files, documentation, and notes without switching to a browser. The README describes it as "designed from the ground up to bring out the beauty and power of the CLI", and the module path charm.land/glow/v3 confirms this is the v3 major release.
TUI mode: discovery and browsing
Running `glow` without arguments starts the TUI. Glow searches the current directory and all subdirectories for Markdown files. If the working directory is inside a Git repository, Glow searches the entire repository tree. The file list is displayed with fuzzy search, so typing filters the list as you type.
Selected files open in a high-performance pager. The README states that most keystrokes from `less` work in this pager, and pressing `?` shows the full list of available hotkeys. The TUI respects the `showLineNumbers` config key, which adds line numbers to the pager view when set to true.
The config file (glow.yml in the platform's default config path, or created with `glow config`) controls TUI behavior:
# style name or JSON path (default "auto")
style: "light"
# mouse wheel support (TUI-mode only)
mouse: true
# use pager to display markdown
pager: true
# at which column should we word wrap?
width: 80
# show all files, including hidden and ignored.
all: false
# show line numbers (TUI-mode only)
showLineNumbers: false
# preserve newlines in the output
preserveNewLines: falseRunning `glow config` opens the config file in the editor set by the `$EDITOR` environment variable.
CLI mode: rendering files, URLs, and stdin
The CLI mode renders a specific Markdown source. The README documents four input types:
# Read from file
glow README.md
# Read from stdin
echo "[Glow](https://github.com/charmbracelet/glow)" | glow -
# Fetch README from GitHub / GitLab
glow github.com/charmbracelet/glow
# Fetch markdown from HTTP
glow https://host.tld/file.mdThe `-w` flag sets a maximum column width for line wrapping. The `-p` flag routes the output through a pager, defaulting to `less -r` if `$PAGER` is not set. The `-s` flag selects a style; when no flag is given, Glow detects the terminal background color and automatically picks dark or light.
Custom styles are JSON files passed with `-s mystyle.json`. The README links to the Glamour Style Section in the Charmbracelet glamour repository for additional community styles, and notes that creating a custom style is possible using the same JSON format.
Installation across platforms
Glow is available through a wide range of package managers. On macOS or Linux with Homebrew:
brew install glowOn Arch Linux:
pacman -S glowWith Go:
go install charm.land/glow/v3@latestAdditional options listed in the README include MacPorts (sudo port install glow), Void Linux (xbps-install -S glow), Nix (nix-shell -p glow), FreeBSD (pkg install glow), Solus (eopkg install glow), Windows via Chocolatey, Scoop, or Winget (winget install charmbracelet.glow), Android via Termux (pkg install glow), Ubuntu via Snapcraft (sudo snap install glow), and Debian/Ubuntu via the Charm apt repository. For Fedora/RHEL, the Charm yum repository is also documented.
Binaries for macOS, Linux, Windows, FreeBSD, and OpenBSD are available on the Releases page, including Debian packages, RPM packages, Alpine packages, and ARM builds.
Limitations and what Glow cannot do
Glow renders Markdown in the terminal. It does not generate HTML, PDF, or any other format. The rendered output is styled ANSI terminal output. For documentation pipelines that need converted files, Glow is not a substitute for pandoc or similar converters.
The README mentions that Glow uses the Glamour rendering library (charm.land/glamour/v2 in the go.mod) for the actual Markdown-to-terminal conversion. The quality of rendering for edge cases such as complex tables, nested lists, or inline HTML depends on Glamour's implementation, not Glow's. The `-s auto` behavior relies on terminal background color detection, which may not work correctly in all terminal emulators.
Glow's TUI runs on a single machine. It does not have a server mode, synchronization, or sharing features. The README's reference to a cloud stash feature (from older Glow versions) does not appear in the current v3 README, suggesting that functionality was removed or changed.
For the Go install path, the go.mod requires Go 1.26.6, which is a recent version. The fsnotify dependency (github.com/fsnotify/fsnotify v1.9.0) in the go.mod suggests that Glow watches the config file for changes, though the README does not explicitly document hot reload of the configuration. The sahilm/fuzzy package is listed as a dependency, which is the library behind the fuzzy-search feature in the TUI browser.
Dependencies and maintenance
Glow v3.0.0 was released on 2026-08-11. The last push was on 2026-09-27, confirming active development. The go.mod module path changed from github.com/charmbracelet/glow to charm.land/glow/v3, indicating that v3 is a major release with a new module home.
The dependency tree includes charm.land/bubbletea/v2 for the TUI framework, charm.land/glamour/v2 for Markdown rendering, charm.land/lipgloss/v2 for terminal styling, and the spf13/cobra and spf13/viper combination for CLI parsing and configuration. The Glamour library uses alecthomas/chroma for syntax highlighting in code blocks.
Compared to bat, another terminal file viewer, Glow is Markdown-specific while bat is a general-purpose syntax highlighter for many file types. bat uses a pager approach without a TUI browser; Glow's TUI browser is more useful when you do not know which Markdown files exist in a repository. For reading a single known file, bat with a .md file renders the Markdown source with syntax highlighting rather than Glow's formatted prose rendering. The two tools serve overlapping but distinct use cases.
The licence is MIT, permitting use in commercial tools without restrictions. Glow is part of the Charm suite of terminal tools, which includes Bubbletea (the TUI framework), Glamour (the Markdown renderer), Lipgloss (terminal styling), and VHS (terminal GIF recorder). These libraries share a dependency tree and are developed together, meaning a Glow v3 update often tracks updates to the underlying Charm libraries. The Dockerfile in the repository is a single-binary image based on gcr.io/distroless/static, useful for running Glow in container environments where a full OS is not needed.
Editorial conclusion
Glow is the right tool for engineers who regularly read documentation files in the terminal and want formatted output without opening a browser. The TUI mode makes it useful for browsing unfamiliar repositories where you do not know which Markdown files exist. It is not a documentation site generator and does not produce HTML. For pipelines that need HTML output from Markdown, tools like pandoc are more appropriate. If the project you are reading has no Markdown files, Glow's discovery logic has nothing to find.
Frequently asked questions
What is the best terminal viewer for viewing Markdown?
Glow is a purpose-built terminal Markdown viewer that renders formatting and provides both a TUI browser and a CLI mode. The README describes it as designed for CLI-first documentation reading, with support for files, URLs, GitHub repositories, and stdin.
How do I install Glow?
The README documents installation via Homebrew (brew install glow), pacman, Nix, Winget, apt (via the Charm apt repository), yum, Snapcraft, and Go (go install charm.land/glow/v3@latest). Pre-built binaries are available for macOS, Linux, Windows, FreeBSD, and OpenBSD on the GitHub Releases page.
How do I use Glow with a custom style?
Pass a custom JSON stylesheet with the `-s` flag: `glow -s mystyle.json`. When no flag is given, Glow detects the terminal background color and picks dark or light automatically. The README links to the Glamour Style Section in the charmbracelet/glamour repository for additional community styles.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/charmbracelet-glow)