Skip to content
🟢

Core TUI Baseline

Every terminal should support these

The universal baseline — features that have been standard since the VT100/VT220 era and are supported by every modern terminal emulator. If a terminal fails Core features, it cannot reliably run any TUI application. This baseline covers SGR text styling basics (bold, italic, underline, colors up to 256), cursor positioning and visibility, screen and line erasing, line/character editing, the alternate screen buffer, scroll regions, and basic character set handling.

71 features in this baseline

Analysis2026-03-26

4 of 8 tested terminals achieve 100% Core TUI compliance. Lagging: Ghostty (99%), Kitty (99%), iTerm2 (99%). Most commonly missing: CUP with DECOM.

Compliance Scorecard

Terminal Applications

iTerm2
99%70 / 71
Ghostty
99%70 / 71
VS Code
100%71 / 71
Warp
100%71 / 71
Cursor
100%71 / 71
Kitty
99%70 / 71
Terminal.app
99%70 / 71

Headless Backends

vterm
100%71 / 71
Alacritty
99%70 / 71
WezTerm
97%69 / 71
vt100
94%67 / 71

Guidance

For Developers

If your TUI only uses Core features, it will work in every terminal — including Terminal.app, older xterm builds, and embedded terminals in IDEs. This is the safe target for maximum compatibility.

For Terminal Authors

100% Core compliance is table stakes. Any failure here is a bug, not a missing feature.

Features

Terminal Applications

FeatureiTerm2GhosttyVS CodeWarpCursorKittyTerminal.app
Bold (SGR 1)
Faint/dim (SGR 2)
Italic (SGR 3)
Underline (SGR 4)
Inverse video (SGR 7)
Hidden/invisible (SGR 8)
Strikethrough (SGR 9)
Standard fg colors (SGR 30-37)
Standard bg colors (SGR 40-47)
Default fg color (SGR 39)
Default bg color (SGR 49)
Reset bold/dim (SGR 22)
Reset underline (SGR 24)
Reset inverse (SGR 27)
Reset italic (SGR 23)
Reset all (SGR 0)
Hide cursor (DECTCEM)
Cursor position (CUP)
Cursor up (CUU)
Cursor down (CUD)
Cursor forward (CUF)
Cursor back (CUB)
Cursor home
Save/restore cursor (DECSC)
CUP at screen boundaries
CUU stops at top
CUD stops at bottom
CUP with DECOM
Erase to EOL (EL 0)
Erase to BOL (EL 1)
Erase line (EL 2)
Erase above (ED 1)
Erase screen (ED 2)
Erase below (ED 0)
Erase scrollback (ED 3)
Erase character (ECH)
EL erases with bg color
ED at scroll region boundary
Enter alt screen (DECSET 1049)
Exit alt screen (DECRST 1049)
Reverse video (DECSCNM)
Auto-wrap (DECAWM)
Scrollback accumulates
Total line count
Scroll up (SU)
Scroll down (SD)
Reverse index (RI)
Scroll region (DECSTBM)
Alt screen separate scrollback
DECSTBM constrains scrolling
DECSTBM reset to full screen
Basic text rendering
Text wraps at width
CJK wide chars (2 cols)
Tab stops
Tab Stops (HT)
Carriage return
Line feed
Backspace (BS)
Index (IND)
Next line (NEL)
Reverse Index at Scroll Top
Overwrite at cursor
SGR reset clears attributes
Full reset (RIS)
Soft reset (DECSTR)
Backend reset() method
DEC Special Graphics
UTF-8 mode
G0/G1 character set switching
DEC line drawing character set

Headless Backends

Parser correctness tested via Termless. A means the parser accepts the sequence, not that it renders correctly.

FeaturevtermAlacrittyWezTermvt100
Bold (SGR 1)
Faint/dim (SGR 2)
Italic (SGR 3)
Underline (SGR 4)
Inverse video (SGR 7)
Hidden/invisible (SGR 8)~~
Strikethrough (SGR 9)
Standard fg colors (SGR 30-37)~~
Standard bg colors (SGR 40-47)~
Default fg color (SGR 39)
Default bg color (SGR 49)
Reset bold/dim (SGR 22)
Reset underline (SGR 24)
Reset inverse (SGR 27)
Reset italic (SGR 23)
Reset all (SGR 0)
Hide cursor (DECTCEM)
Cursor position (CUP)
Cursor up (CUU)
Cursor down (CUD)
Cursor forward (CUF)
Cursor back (CUB)
Cursor home
Save/restore cursor (DECSC)
CUP at screen boundaries
CUU stops at top
CUD stops at bottom
CUP with DECOM
Erase to EOL (EL 0)
Erase to BOL (EL 1)
Erase line (EL 2)
Erase above (ED 1)
Erase screen (ED 2)
Erase below (ED 0)
Erase scrollback (ED 3)
Erase character (ECH)
EL erases with bg color
ED at scroll region boundary
Enter alt screen (DECSET 1049)
Exit alt screen (DECRST 1049)
Reverse video (DECSCNM)~
Auto-wrap (DECAWM)
Scrollback accumulates
Total line count
Scroll up (SU)
Scroll down (SD)
Reverse index (RI)
Scroll region (DECSTBM)
Alt screen separate scrollback
DECSTBM constrains scrolling
DECSTBM reset to full screen
Basic text rendering
Text wraps at width
CJK wide chars (2 cols)
Tab stops
Tab Stops (HT)
Carriage return
Line feed
Backspace (BS)
Index (IND)
Next line (NEL)
Reverse Index at Scroll Top
Overwrite at cursor
SGR reset clears attributes
Full reset (RIS)
Soft reset (DECSTR)~~
Backend reset() method
DEC Special Graphics
UTF-8 mode
G0/G1 character set switching
DEC line drawing character set

Powered by Termless
Playwright for Terminals