SGR 100–107 — Bright background color
Bright variants of the 8 basic background colors.
Byte forms
Every common string-literal form so you can paste-and-search either direction.
\x1b[101m (bright red bg, 100–107)\033[101m\e[101mESC [ 1 0 1 m1b 5b 31 30 31 6dLive preview
Rendered in your browser via the same tokeniser the decoder uses — no terminal needed.
Description
Bright background equivalents of sgr-bg-basic SGR 40–47, parallel to the SGR 90–97 bright foreground family. Maps 1:1 — 100 bright black, 101 bright red, 102 bright green, 103 bright yellow, 104 bright blue, 105 bright magenta, 106 bright cyan, 107 bright white. The 100–107 range, like 90–97, originated in IBM's aixterm and is documented in xterm-ctlseqs as the canonical extension; ECMA-48 itself reserves only SGR 40–47 + 48 + 49. Every terminal in the matrix above supports it, including the Linux console / fbcon and ConPTY, which makes it the most portable way to express a non-basic background color short of dropping into the indexed sgr-bg-256 palette.
Background brights are mostly used for status-line highlights, selection cues, and severity badges (\x1b[97;101m FAIL \x1b[0m for white-on-bright-red error labels in CI output). The same theme-override caveat applies as for the foreground brights: the exact RGB depends on the user's terminal color scheme, so the "bright red" you ship may render as a deep magenta or muted pink on a customized profile. For severity badges where the precise hue matters (status indicators, brand colors), prefer sgr-bg-truecolor (\x1b[48;2;220;0;0m) — the truecolor path bypasses the user palette. Unlike the foreground case, SGR 1 (sgr-bold) does not affect background color on any modern terminal, so the bold-as-bright wrinkle that complicates SGR 30–37 has no background analog.
Disable just the background with \x1b[49m (SGR default-bg) — surgical, leaves foreground and other attributes intact. The full reset \x1b[0m clears everything. A common pattern in tabular output is alternating row backgrounds: emit \x1b[100m (bright black / dim gray bg) for even rows and \x1b[49m to clear before the row newline — the resulting zebra-striped table reads well against any base color scheme. The corresponding terminfo expansion on xterm-256color is tput setab 9 through tput setab 15 for portable scripts that prefer cap names over raw escapes.
Spec citation: aixterm color extension
Examples
for c in 100 101 102 103 104 105 106 107; do printf "\033[${c}m \033[0m"; done; echofor c in range(100, 108): print(f'\x1b[{c}m \x1b[0m', end='')for c := 100; c <= 107; c++ { fmt.Printf("\x1b[%dm \x1b[0m", c) }for (let c = 100; c <= 107; c++) process.stdout.write(`\x1b[${c}m \x1b[0m`)for (int c = 100; c <= 107; c++) printf("\x1b[%dm \x1b[0m", c);Used in
Real-world tools that emit this sequence — anchors the bytes to commands you've already used.
- deltabright bg on added/removed line gutters when contrast on dark themes needs lifting
- fzfconfigurable --color=bg+:* — many users set a bright bg for the active row
- ranger, mc (Midnight Commander)selection row bg
- vim, neovim Visual mode highlight on legacy 16-colour terminals
- htop, btop column-header backgrounds
Frequently asked
Short answers to the questions developers actually search for this sequence.
- Is
\x1b[101mthe same as\x1b[41;1m? - No. SGR 100–107 are aixterm-standard background slots that target palette indices 8–15 directly; SGR 1 (
bold) is a font-weight attribute, and on the *foreground* path some terminals *also* brighten the colour as a side effect — but that side effect was never standardised for backgrounds.\x1b[41;1mtherefore renders as a bold-text-on-normal-red background almost everywhere, not as bright-red background. If you want palette slot 9, write\x1b[101m(aixterm), or pick truecolor with\x1b[48;2;r;g;bmfor guaranteed RGB — seesgr-bg-256andsgr-bg-truecolor. - Why does
\x1b[101mrender the same as\x1b[41minside CI logs? - Your CI's log viewer (GitHub Actions, GitLab, Buildkite) is downgrading to an 8-colour ANSI renderer that doesn't recognise 100–107 and treats the bright bit as no-op — it falls back to slot 1 (normal red). Set
FORCE_COLOR=3orCOLORTERM=truecolorif your tool honours them; otherwise emit truecolor\x1b[48;2;255;85;85m(xterm bright-red equivalent) which most log renderers handle as raw RGB. Don't fight the renderer — pick the colour space it speaks.
Terminal support
- xterm
- yes
- Linux console (fbcon)
- yes
- macOS Terminal.app
- yes
- iTerm2
- yes
- Windows Terminal
- yes
- cmd.exe / ConPTY
- yes
- kitty
- yes
- alacritty
- yes
- WezTerm
- yes
- Ghostty
- yes
- GNOME Terminal
- yes
- Konsole
- yes
- tmux
- yes
- GNU screen
- yes
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |