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 expected in any general-purpose 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.

80 features in this baseline

Analysis2026-04-06

0 of 12 tested terminals achieve 100% Core TUI compliance. Lagging: vt100.js (77%), Ghostty (94%), iTerm2 (94%). Most commonly missing: TBC clear tab stop (CSI g), CHT forward tab (CSI I), CBT backward tab (CSI Z).

Compliance Scorecard

Terminal Applications

iTerm2
93%74 / 80
Ghostty
93%74 / 80
VS Code
90%72 / 80
Warp
90%72 / 80
Cursor
90%72 / 80
Terminal.app
90%72 / 80

Headless Backends

vterm
93%74 / 80
xterm.js
98%78 / 80
Kitty
98%78 / 80
Alacritty
96%77 / 80
WezTerm
95%76 / 80
vt100.js
76%61 / 80

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. For general-purpose terminals, Core failures will usually surface as interoperability bugs.

Features

Terminal Applications

FeatureiTerm2GhosttyVS CodeWarpCursorTerminal.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
VPA vertical position absolute (CSI d)
CPL cursor preceding line (CSI F)
HPA horizontal position absolute (CSI `)
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
HTS set tab stop (ESC H)
TBC clear tab stop (CSI g)
CHT forward tab (CSI I)
CBT backward tab (CSI Z)
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
TERM env variable??????
Icon name (OSC 1)

Headless Backends

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

Featurevtermxterm.jsKittyAlacrittyWezTermvt100.js
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
VPA vertical position absolute (CSI d)
CPL cursor preceding line (CSI F)
HPA horizontal position absolute (CSI `)
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
HTS set tab stop (ESC H)
TBC clear tab stop (CSI g)
CHT forward tab (CSI I)
CBT backward tab (CSI Z)
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
TERM env variable??????
Icon name (OSC 1)