Introduction
Glamour is a Go library by Charmbracelet that renders Markdown documents as styled ANSI terminal output. It provides a stylesheet system for controlling colors, indentation, and formatting, making it easy to display rich text content in CLI applications without building custom rendering logic.
What Glamour Does
- Converts Markdown to beautifully formatted ANSI terminal output
- Applies configurable stylesheets for dark, light, and custom themes
- Handles headings, code blocks, tables, lists, and links with color coding
- Wraps text to fit terminal width automatically
- Supports GitHub-Flavored Markdown including task lists and strikethrough
Architecture Overview
Glamour parses Markdown using the goldmark parser and then applies a style tree to produce ANSI-escaped output. Each Markdown element type (heading, paragraph, code block) maps to a style definition that controls foreground/background colors, margins, padding, and text decoration. The library outputs plain strings with embedded ANSI codes, compatible with any terminal emulator.
Self-Hosting & Configuration
- Add Glamour to your Go project with
go get github.com/charmbracelet/glamour - Use the
glamour.Render()function for quick single-call rendering - Create a custom
glamour.TermRendererwith a specific style for reuse - Choose from built-in styles:
DarkStyle,LightStyle,AutoStyle, orNoTTYStyle - Define custom JSON stylesheets to match your application's branding
Key Features
- Zero external dependencies beyond the Go standard library and goldmark
- Word wrapping that respects terminal width and avoids mid-word breaks
- Syntax highlighting for fenced code blocks via the chroma library
- Emoji rendering with Unicode support in code and prose
- Integration with other Charm tools like Bubble Tea and Lip Gloss
Comparison with Similar Tools
- Rich (Python) — similar terminal rendering but Python-only, not a Go library
- termimad (Rust) — Markdown rendering for Rust terminals, smaller feature set
- mdcat — standalone CLI for rendering Markdown, not an embeddable library
- Glow (Charm) — CLI Markdown viewer built on Glamour for end-user use
- ANSI Markdown — various language-specific solutions without stylesheet support
FAQ
Q: Can I use Glamour in a Bubble Tea TUI application? A: Yes. Glamour output is plain ANSI text that integrates naturally with Bubble Tea views.
Q: Does Glamour support HTML inside Markdown? A: HTML tags are stripped by default. Glamour focuses on standard Markdown elements for terminal rendering.
Q: How do I handle long documents?
A: Set a max width on the renderer and pipe output through a pager like less -R for scrollable viewing.
Q: Is there a way to disable colors?
A: Use the NoTTYStyle or set GLAMOUR_STYLE=notty to produce plain uncolored output for piping.