Terminal feature support matrix
Which ANSI / VT feature works in which terminal? Truth-table for 12 emulators plus tmux + GNU screen — 14 rows × 15 features. Cells: yes / partial / no.
Last updated
| Feature | xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8 basic colors (30–37 / 40–47) SGR 30–37 foreground, 40–47 background. | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
Bright (aixterm) colors (90–97 / 100–107) aixterm SGR extension. | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
256-color palette (38;5;n / 48;5;n) xterm 256-color extension. | yes | no | yes | yes | yes | partial | yes | yes | yes | yes | yes | yes | yes | partial |
24-bit truecolor (38;2;r;g;b) 16.7M direct RGB. Set $COLORTERM=truecolor. | yes | no | partial | yes | yes | partial | yes | yes | yes | yes | yes | yes | partial | partial |
Italic (SGR 3) Italic text attribute. | yes | no | yes | yes | yes | no | yes | yes | yes | yes | yes | yes | yes | partial |
Styled underlines (4:1–4:5) Curly/dotted/dashed underline styles. | partial | no | no | yes | yes | no | yes | partial | yes | yes | yes | yes | partial | no |
Strikethrough (SGR 9) Horizontal line through text. | yes | no | yes | yes | yes | no | yes | yes | yes | yes | yes | yes | yes | no |
OSC 8 hyperlinks Inline clickable URIs. | partial | no | no | yes | yes | no | yes | no | yes | yes | yes | yes | partial | no |
Alt screen (?1049h) Full-screen app buffer. | yes | yes | yes | yes | yes | partial | yes | yes | yes | yes | yes | yes | yes | yes |
Mouse tracking (SGR ?1006) Mouse click/drag events. | yes | partial | yes | yes | yes | partial | yes | yes | yes | yes | yes | yes | partial | partial |
Bracketed paste (?2004) Pasted text wrapped in ESC[200~/ESC[201~. | yes | no | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | partial |
Focus events (?1004) ESC[I on focus in, ESC[O on focus out. | yes | no | no | yes | yes | no | yes | yes | yes | yes | yes | yes | partial | no |
Sixel graphics DEC sixel inline raster images. | yes | no | no | yes | yes | no | no | no | yes | yes | no | yes | partial | no |
Kitty graphics protocol PNG/RGB inline images, animations. | no | no | no | no | no | no | yes | no | partial | yes | no | yes | no | no |
Synchronized output (?2026) Atomic frame updates to avoid tearing. | no | no | no | yes | yes | no | yes | yes | yes | yes | yes | yes | partial | no |
Multiplexers (tmux, screen)
tmux and GNU screen run on top of one of the emulators above — output passes through their parser before reaching the terminal. Effective support is the lower of the two: a feature marked yes on the emulator but no on the multiplexer is stripped before reaching the screen. The dedicated landings detail the passthrough rules per feature.
About this matrix
Each row is one feature; each column is one terminal. We use three states: yes means documented in the terminal's manual or release notes AND working in its default configuration; partial means working only with a caveat (e.g. specific version, opt-in flag, known glitch, or a degraded fallback like 24-bit truecolor downsampled to 256 colours); no means the terminal silently drops the bytes or renders them as literal characters.
Sources are xterm-ctlseqs (xterm man page), per-terminal release notes and bug trackers, and hands-on testing on macOS, Linux, and Windows hosts. The matrix tracks the latest stable release of each terminal as of the page's dateModified — older releases may downgrade.
Found a cell that's wrong on your version? Reach us via the channel listed on the About page — we want this matrix to be the most accurate one on the open web.