alacritty — ANSI escape code support
alacritty is a Rust-native, GPU-accelerated terminal emulator that deliberately ships zero TUI conveniences — no tabs, no splits, no scrollback search, no built-in config UI. The thesis is to do one thing very fast: render VT100 + xterm-ctlseqs as quickly as the GPU allows, and let tmux / zellij handle the rest. Released by Joe Wilm in 2017, now maintained by the alacritty contributors.
For ANSI escape compatibility, alacritty implements a focused xterm-ctlseqs subset: full SGR (24-bit color, bold, italic, strikethrough), full cursor + erase + scroll, mouse modes, bracketed paste, and the alt-screen pair. It does NOT ship image protocols (Sixel, kitty graphics, OSC 1337) — that's left to tmux passthrough or a different terminal.
Last updated
Feature support
How this terminal scores against the 15 features tracked in the site-wide support matrix. Click any feature name to see the full row across every terminal.
- 8 basic colors (30–37 / 40–47)SGR 30–37 foreground, 40–47 background.yes
- Bright (aixterm) colors (90–97 / 100–107)aixterm SGR extension.yes
- 256-color palette (38;5;n / 48;5;n)xterm 256-color extension.yes
- 24-bit truecolor (38;2;r;g;b)16.7M direct RGB. Set $COLORTERM=truecolor.yes
- Italic (SGR 3)Italic text attribute.yes
- Styled underlines (4:1–4:5)Curly/dotted/dashed underline styles.partial
- Strikethrough (SGR 9)Horizontal line through text.yes
- OSC 8 hyperlinksInline clickable URIs.no
- Alt screen (?1049h)Full-screen app buffer.yes
- Mouse tracking (SGR ?1006)Mouse click/drag events.yes
- Bracketed paste (?2004)Pasted text wrapped in ESC[200~/ESC[201~.yes
- Focus events (?1004)ESC[I on focus in, ESC[O on focus out.yes
- Sixel graphicsDEC sixel inline raster images.no
- Kitty graphics protocolPNG/RGB inline images, animations.no
- Synchronized output (?2026)Atomic frame updates to avoid tearing.yes
Sequences that work here
Canonical reference pages for the escape sequences this terminal handles cleanly. Each links to a full page with byte forms, citations, and per-language examples.
- SGR 38;2;R;G;B — 24-bit truecolor foreground
\x1b[38;2;R;G;BmPick any of 16,777,216 foreground RGB colors directly.
- DECSET 1049 — Alternate screen buffer
\x1b[?1049h (enter) \x1b[?1049l (leave)Switch to a separate screen buffer (like vim/less do on launch).
- CUP — Set cursor position
\x1b[row;colHMove the cursor to absolute row/column (1-indexed).
- DECSET ?2004 — Bracketed paste mode
\x1b[?2004h (enable) \x1b[?2004l (disable)Wrap pasted text in distinct escape markers so apps can tell paste from typing.
- SGR 1 — Bold / Increased intensity
\x1b[1mRender following text in bold (or bright on some terminals).
Quirks & version notes
Per-terminal caveats you'll want to know before relying on a sequence in production.
- No OSC 8 hyperlinks (issue alacritty#922 closed wontfix)
- OSC 8 hyperlink support is explicitly out of scope. Apps that emit OSC 8 will see the URL leak as visible text on alacritty. lsd, eza, and gh all detect and skip OSC 8 on alacritty by checking $TERM or the DA1 reply. If you need hyperlink rendering, run alacritty inside tmux 3.4+ which strips OSC 8 cleanly, or switch terminals.
- Styled underlines partial — only 4:3 (curly), no 4:4/4:5
- Since alacritty 0.13 (2024) the renderer supports SGR 4:3 (curly underline) and SGR 58:2;r;g;b underline color, used by neovim for diagnostic squiggles. SGR 4:4 (dotted) and 4:5 (dashed) are not implemented — neovim downgrades them to straight underline. The terminfo entry `alacritty` advertises Smulx for this reason; opt in via $TERM=alacritty (Debian / Fedora package ship it).
- Synchronized output (?2026) shipped in 0.13
- DECSET ?2026h / ?2026l atomic-frame mode landed in alacritty 0.13 (Dec 2023). Apps that use it (tmux 3.4+, kitty session passthrough, ratatui/textual UIs) avoid visible tearing during full-screen redraws. No config option — it's always on.
- Config is TOML at $XDG_CONFIG_HOME/alacritty/alacritty.toml
- alacritty 0.13 switched from YAML to TOML; the old `~/.config/alacritty/alacritty.yml` is silently ignored. There's no live-reload UI — edit the file, save, the terminal picks up changes within ~50 ms. No `bindings` section means none of your $TERM=xterm-256color escape-driven keyboard mappings will work; configure them in TOML or switch to kitty / wezterm for in-app remapping.