Markdown has become the universal standard for technical documentation, open-source README guides, personal notes, and software project logs. However, inspecting a formatted markdown document inside the Linux terminal is often inconvenient. Opening files in cat or less displays raw markup cluttered with hashtags, asterisks, and unformatted tables, while opening an external web browser or graphical markdown editor pulls you away from your command-line workflow.
To deliver an elegant, fully rendered reading experience directly inside the shell, Charm developed glow. Written in Go, glow is an open-source terminal markdown reader that translates GitHub-flavoured markdown into beautifully styled, colour-coded terminal output complete with formatted tables, syntax-highlighted code blocks, and keyboard-driven pager navigation.
Why glow Is the Ideal Terminal Markdown Reader
While standard shell utilities treat markdown as plain text, glow functions as an intelligent terminal rendering engine:
- GitHub-Flavoured Markdown Support: Renders bold text, headers, blockquotes, ordered lists, checklists, and complex ASCII border tables cleanly.
- Syntax-Highlighted Code Blocks: Automatically detects programming languages in fenced code blocks (Python, C, Rust, Bash, JSON) and applies terminal syntax highlighting.
- Integrated Paging: Automatically pipes output through an internal pager when documents exceed the terminal viewport, allowing you to scroll using standard Vim keys (j, k).
- Remote URL Rendering: Reads and renders markdown files hosted on remote servers, GitHub raw links, and Gists directly from the web without downloading them first.
Installing glow on Ubuntu and Linux
glow is available across Linux distributions through several package managers:
Method 1: Direct Installation via APT (Official Charm Repository)
To install glow on Ubuntu with automated package updates, add the official Charm repository:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update
sudo apt install glow
Method 2: Installation via Snap
On any Linux distribution configured with Snap:
sudo snap install glow
Method 3: Installation via Homebrew
brew install glow
Reading Local Markdown Files
To render any local markdown document in your current directory, simply run:
glow README.md
glow reads the terminal window dimensions, wraps paragraphs neatly, draws clean table borders, and highlights code snippets using your terminal’s color palette.
To read a long document with keyboard-controlled scrolling, invoke the pager mode:
glow -p documentation.md
Inside pager mode, use Down or j to scroll downward, Up or k to scroll upward, and press q to exit back to your shell prompt.
Fetching and Rendering Markdown from URLs
You can read remote documentation directly from GitHub without cloning the entire repository:
glow https://raw.githubusercontent.com/torvalds/linux/master/README
glow fetches the remote payload over HTTPS, parses the markup in memory, and displays the formatted text immediately.
Customising Styles and Themes
glow ships with several built-in color schemes tailored to dark and light terminal backgrounds:
glow -s dark README.md # Optimized for dark terminal themes
glow -s light README.md # Optimized for white/light terminal themes
glow -s auto README.md # Automatically detects terminal background
To configure a permanent default style, generate a user configuration file:
glow config
This opens or creates your configuration file at ~/.config/glow/glow.yml, where you can set your preferred style theme, word wrap column width, and default pager preferences permanently.