charmbracelet/glamour
charmbracelet/glamour has 3,752 GitHub stars and 346 forks. GitHot measured +3 stars in 24 hours. Last checked 2026-11-08 15:58 UTC. Last push 2026-11-01.
Stylesheet-based markdown rendering for your CLI apps 💇🏻♀️
Measured star growth
- in 24h
- +3
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalGlamour
Stylesheet-based markdown rendering for your CLI apps.
glamour lets you render markdown
documents & templates on ANSI
compatible terminals. You can create your own stylesheet or simply use one of
the stylish defaults.
Usage
import "charm.land/glamour/v2"
in := `# Hello World
This is a simple example of Markdown rendering with Glamour!
Check out the [other examples](https://github.com/charmbracelet/glamour/tree/main/examples) too.
Bye!
`
out, err := glamour.Render(in, "dark")
fmt.Print(out)

Custom Renderer
import "charm.land/glamour/v2"
r, _ := glamour.NewTermRenderer(
// wrap output at specific width (default is 80)
glamour.WithWordWrap(40),
)
out, err := r.Render(in)
fmt.Print(out)
Color Downsampling
Since the renderer is designed to be "pure" and always produce the same output for the same input, it doesn't have access to the terminal's capabilities. This means that color downsampling is not performed by default. In this case, use Lip Gloss to perform downsampling before rendering:
import (
"charm.land/glamour/v2"
"charm.land/lipgloss/v2"
)
r, _ := glamour.NewTermRenderer(
// wrap output at specific width (default is 80)
glamour.WithWordWrap(40),
)
out, err := r.Render(in)
if err != nil {
// handle error
}
// downsample colors based on terminal capabilities.
lipgloss.Print(out)
Styles
You can find all available default styles in our gallery. Want to create your own style? Learn how!
There are a few options for using a custom style:
- Call
glamour.Render(inputText, "desiredStyle") - Set the
GLAMOUR_STYLEenvironment variable to your desired default style or a file location for a style and callglamour.RenderWithEnvironmentConfig(inputText) - Set the
GLAMOUR_STYLEenvironment variable and passglamour.WithEnvironmentConfig()to your custom renderer
Glamourous Projects
Check out these projects, which use glamour:
- Glow, a markdown renderer for the command-line.
- GitHub CLI, GitHub’s official command line tool.
- GitLab CLI, GitLab's official command line tool.
- Gitea CLI, Gitea's official command line tool.
- Meteor, an easy-to-use, plugin-driven metadata collection framework.
Contributing
See contributing.
Feedback
We’d love to hear your thoughts on this project. Feel free to drop us a note!
License
Part of Charm.
Charm热爱开源 • Charm loves open source
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,195 starspublic-apis/public-apis
A collective list of free APIs
497,410 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
445,188 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,229 stars