Skip to content
🌐

Unicode Baseline

Unicode correctness — wide chars, combining, emoji

Correct handling of Unicode text: East Asian wide characters (CJK ideographs occupying two terminal columns), emoji with zero-width joiners (family emoji, skin tone modifiers), regional indicator flags, variation selectors (VS16 forcing emoji presentation), combining characters, and grapheme cluster cursor movement. These features determine whether a terminal can correctly display and navigate international text and modern emoji.

8 features in this baseline

Analysis2026-04-06

3 of 12 tested terminals achieve 100% Unicode compliance. Lagging: vt100.js (38%), Kitty (63%), Terminal.app (63%). Most commonly missing: Variation selector 16 (emoji presentation), Emoji ZWJ sequences (2 cols), Grapheme Cluster Cursor Movement.

Compliance Scorecard

Terminal Applications

iTerm2
100%8 / 8
Ghostty
100%8 / 8
VS Code
63%5 / 8
Warp
63%5 / 8
Cursor
63%5 / 8
Terminal.app
63%5 / 8

Headless Backends

vterm
100%8 / 8
xterm.js
63%5 / 8
Kitty
100%8 / 8
Alacritty
75%6 / 8
WezTerm
75%6 / 8
vt100.js
38%3 / 8

Guidance

For Developers

Unicode bugs cause cursor misalignment and broken layouts. If your app displays user-generated text, emoji, or CJK characters, test against the Unicode baseline. Use libraries that implement UAX #11 width calculation.

For Terminal Authors

Unicode correctness is the hardest baseline to achieve. The width of a character depends on Unicode version, grapheme cluster rules, variation selectors, and font metrics — and terminals must agree with each other for TUI layouts to work.

Features

Terminal Applications