SGR 5 — Blink (slow)
Blink the following text (≤ 150 blinks/minute).
Byte forms
Every common string-literal form so you can paste-and-search either direction.
\x1b[5m\033[5m\e[5mESC [ 5 m1b 5b 35 6dLive preview
Rendered in your browser via the same tokeniser the decoder uses — no terminal needed.
Description
ECMA-48 §8.3.117 defines SGR 5 as "slow blink" — at most 150 transitions per minute — and SGR 6 as "rapid blink" (> 150/min). The byte sequence is \x1b[5m. Almost no modern emulator implements the two rates separately; xterm explicitly collapses SGR 6 to SGR 5 and most others ignore SGR 6 entirely, so the slow-blink escape is what every cross-terminal "blink" library actually emits. The visual effect is the terminal alternating the character cell's foreground colour with its background colour at the implementation-defined rate (typically 0.5–1 Hz); the underlying bytes are stable, so the text remains selectable, copyable, and visible to screen readers. The matching close is SGR 25 (\x1b[25m) — surgical, leaves fg / bg / bold / italic / underline untouched.
Support varies more by *policy* than by capability. xterm, iTerm2, kitty, wezterm, gnome-terminal, Konsole and Ghostty animate the cell. Apple Terminal.app deliberately does not animate ("blink disagrees with Mac UI design") — the attribute is parsed but rendering is identical to non-blink. alacritty historically refused to animate as a UX choice; current builds (2024+) accept the attribute but render statically. Linux console / fbcon implements blink but the rate is locked to the hardware cursor blink rate. Both Windows Terminal and most Linux GUI emulators ship a "no blinking text" preference that suppresses SGR 5 globally — users who toggle it on (very common for accessibility) will never see your blink. The bigger concern is WCAG 2.x guideline 2.3.1, which caps any flashing content at 3 Hz to avoid seizure triggers; SGR 5 implementations sit below that floor, but photosensitive-epilepsy and vestibular-sensitivity complaints still recur from any flickering UI. Screen readers ignore the attribute entirely — the screen-readers pitfall extends here, since assistive software cannot render motion.
Disable with SGR 25 (\x1b[25m). The hard rule: never use blink as the sole signal for any user-meaningful content. Pair it with an explicit colour, icon, or text label per color-only-signal — a blinking word with no surrounding "[!]" / "[error]" prefix conveys nothing to anyone with blink globally disabled, on Apple Terminal.app, on alacritty, or running a screen reader. The terminfo cap is blink (tput blink / close via tput sgr0 since there is no surgical rmblink); many modern terminfo entries leave blink set even when the emulator ignores blink, so terminfo-based feature-detection is unreliable. Related: sgr-reset (SGR 0 — full reset), sgr-reverse (SGR 7 — a far safer cell-attention attribute with universal support), sgr-hidden (SGR 8 — the adjacent visibility attribute).
Spec citation: ECMA-48 §8.3.117 (SGR parameter 5)
Examples
printf '\033[5mblink\033[25m steady\033[0m\n'print('\x1b[5mblink\x1b[0m')fmt.Print("\x1b[5mblink\x1b[0m")console.log('\x1b[5mblink\x1b[0m')printf("\x1b[5mblink\x1b[0m\n");Frequently asked
Short answers to the questions developers actually search for this sequence.
- Does anyone still render blink in 2026?
- Yes, but unevenly. xterm, urxvt, Linux console / fbcon, gnome-terminal (VTE), konsole, and macOS Terminal.app still blink. kitty, alacritty, wezterm, and ghostty render the text statically — the modern-stack consensus is that blink causes accessibility and migraine problems. Never rely on blink to convey critical information; treat it as a stylistic flourish that is invisible on roughly half the terminals readers actually use.
- How do I turn off blinking text — both in my output stream and per-terminal?
- In your stream, emit
\x1b[25mto disable blink without touching weight or colour (or\x1b[0mfor a full reset). Per-terminal: iTerm2 has *Profiles → Text → Blinking text*; gnome-terminal has *Preferences → Profile → Text → Allow blinking text*; konsole has *Settings → Profile → Advanced → Enable blinking text*; xterm honours thecursorBlinkX resource. ConPTY does not blink even when the host terminal would.
Terminal support
- xterm
- yes
- Linux console (fbcon)
- yes
- macOS Terminal.app
- no
- iTerm2
- yes
- Windows Terminal
- partial
- cmd.exe / ConPTY
- no
- kitty
- yes
- alacritty
- partial
- 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 | no | yes | partial | no | yes | partial | yes | yes | yes | yes | yes | yes |