Skip to content

Faint/dim (SGR 2)

Category: sgr · Baseline: core · Tags: ECMA-48 Standard, VT100 · Specification ↗

ESC [ 2 m
SGR 2 renders text with reduced intensity (dimmed). The sequence is ESC [ 2 m. Commonly used for secondary or de-emphasized text in TUI applications — status bars, disabled items, or metadata. Faint is reset by SGR 22, which also resets bold (SGR 1). There is no separate reset code for faint alone. Most modern terminals support faint rendering, typically by reducing the alpha or brightness of the foreground color.
How this is testedautomated
Send \x1b[2mX, verify the cell at (0,0) has dim=true. Confirms SGR 2 (faint) is parsed and stored as a distinct attribute.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-04-06

Supported by 11 of 12 terminals (92%). Not supported by: vt100.js. Part of the Core TUI baseline. Notes: vt100.js: Not in VT100/VT220 — use vterm.js for modern SGR.

Supported by 13 of 14 backends (93%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
Kitty0.40.0✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes
vt100.js0.2.1✗ noNot in VT100/VT220 — use vterm.js for modern SGR