<img src="https://github.com/user-attachments/assets/23aabf2a-8bd8-4e7b-bb50-993bce32541d" width="300" alt="Glamour Title Treatment">
<a href="https://github.com/charmbracelet/glamour/releases"><img src="https://img.shields.io/github/release/charmbracelet/glamour.svg" alt="Latest Release"></a>
<a href="https://pkg.go.dev/github.com/charmbracelet/glamour?tab=doc"><img src="https://godoc.org/github.com/golang/gddo?status.svg" alt="GoDoc"></a>
<a href="https://github.com/charmbracelet/glamour/actions"><img src="https://github.com/charmbracelet/glamour/workflows/build/badge.svg" alt="Build Status"></a>
<a href="https://coveralls.io/github/charmbracelet/glamour?branch=master"><img src="https://coveralls.io/repos/github/charmbracelet/glamour/badge.svg?branch=master" alt="Coverage Status"></a>
<a href="https://goreportcard.com/report/charmbracelet/glamour"><img src="https://goreportcard.com/badge/charmbracelet/glamour" alt="Go ReportCard"></a>
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.
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)

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)
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)
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:
glamour.Render(inputText, "desiredStyle")GLAMOUR_STYLE environment variable to your desired default style or a file location for a style and call glamour.RenderWithEnvironmentConfig(inputText)GLAMOUR_STYLE environment variable and pass glamour.WithEnvironmentConfig() to your custom rendererCheck out these projects, which use glamour:
See contributing.
We’d love to hear your thoughts on this project. Feel free to drop us a note!
Part of Charm.
Charm热爱开源 • Charm loves open source
$ claude mcp add glamour \
-- python -m otcore.mcp_server <graph>