Lip Gloss
Terminal styling library for Go from Charmbracelet. CSS-inspired API for styling terminal output with colors, borders, padding, margins, and layout. Works standalone for simple styling or as the visual layer in Bubble Tea applications. Supports true color, adaptive color (dark/light mode detection), and responsive width/height.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
Terminal styling library — no network access, no security concerns.
⚡ Reliability
Best When
Styling Go terminal output or building the visual layer for Bubble Tea TUI applications.
Avoid When
You need interactive keyboard handling — combine with Bubble Tea for full TUI.
Use Cases
- • Style terminal CLI output with colors, bold, borders, and padding using a CSS-like API in Go
- • Compose complex terminal layouts with horizontal/vertical joins for side-by-side and stacked terminal panels
- • Implement responsive terminal UIs that adapt to terminal width using lipgloss.Width() and adaptive styles
- • Create visually polished Go CLI tools with consistent color schemes using lipgloss style definitions
- • Build the visual layer for Bubble Tea TUI applications with reusable style definitions
Not For
- • Interactive input handling — Lip Gloss is styling only; use Bubble Tea for interactive TUI with keyboard input
- • Web or non-terminal UIs — Lip Gloss is terminal-specific ANSI escape code styling
- • Python or Node.js projects — use Rich (Python) or chalk/kleur (Node) for equivalent terminal styling
Interface
Authentication
Library — no auth needed.
Pricing
MIT licensed open source library from Charmbracelet.
Agent Metadata
Known Gotchas
- ⚠ lipgloss v1.0 (2024) changed the color model and removed some deprecated APIs — code from tutorials using v0.x may need updates
- ⚠ Measuring styled string width requires lipgloss.Width() not len() — ANSI escape codes inflate the byte count but not visual width
- ⚠ Adaptive colors (lipgloss.AdaptiveColor) detect dark/light mode but detection requires a terminal — may not work correctly in CI or non-interactive contexts
- ⚠ Layout with JoinHorizontal/JoinVertical aligns by line count — strings with different numbers of lines may need padding with lipgloss.PlaceVertical
- ⚠ True color (24-bit) requires terminal support — falls back to 256 or 16 colors on older terminals; test in target environments
- ⚠ Styles are immutable value types — calling style.Bold(true) returns a new Style; must assign the result: style = style.Bold(true)
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Lip Gloss.
Scores are editorial opinions as of 2026-03-06.