Skip to content

xterm.js

Backend: @xterm/headless — JS-only, no DOM rendering. (js) · v5.5.0

⚠ Headless mode doesn't expose cursor visibility or underline variants

81%
50 passed · 12 failed of 62 features
Tested: March 24, 2026

Cursor

FeatureSupportNotes
Hide cursor (DECTCEM)✗ noHeadless mode doesn't track cursor visibility
Cursor position (CUP)✓ yes
Cursor back (CUB)✓ yes
Cursor down (CUD)✓ yes
Cursor forward (CUF)✓ yes
Cursor home✓ yes
Cursor up (CUU)✓ yes
Save/restore cursor (DECSC)✓ yes

Extensions

FeatureSupportNotes
Kitty graphics protocol✗ noNot implemented in xterm.js
Kitty keyboard protocol✗ noNot implemented in xterm.js
Window title (OSC 2)✓ yes
Hyperlinks (OSC 8)✓ yes
Text reflow on resize✓ yes
Semantic prompts (OSC 133)✗ noNot implemented in xterm.js
Sixel graphics✗ noNot implemented in xterm.js
24-bit truecolor✓ yes

Reset

FeatureSupportNotes
Backend reset() method✓ yes
Full reset (RIS)✓ yes
SGR reset clears attributes✓ yes

Scrollback

FeatureSupportNotes
Scrollback accumulates✓ yes
Alt screen separate scrollback✓ yes
Reverse index (RI)✓ yes
Scroll up (SU)✗ noHeadless API reads from buffer, not viewport after scroll
Total line count✓ yes

SGR (Text Styling)

FeatureSupportNotes
256-color bg (SGR 48;5)✓ yes
24-bit bg (SGR 48;2)✓ yes
Blink (SGR 5)✓ yesHeadless mode doesn't expose blink attribute
Bold (SGR 1)✓ yes
Faint/dim (SGR 2)✓ yes
256-color fg (SGR 38;5)✓ yes
24-bit fg (SGR 38;2)✓ yes
Hidden/invisible (SGR 8)✓ yesHeadless mode doesn't expose hidden attribute
Inverse video (SGR 7)✓ yes
Italic (SGR 3)✓ yes
Reset all (SGR 0)✓ yes
Strikethrough (SGR 9)✓ yes
Curly underline (SGR 4:3)✗ noHeadless mode treats all underline variants as single
Dashed underline (SGR 4:5)✗ noHeadless mode treats all underline variants as single
Dotted underline (SGR 4:4)✗ noHeadless mode treats all underline variants as single
Double underline (SGR 21)✗ noHeadless mode treats all underline variants as single
Underline (SGR 4)✓ yes

Text

FeatureSupportNotes
Basic text rendering✓ yes
Carriage return✓ yes
Line feed✓ yes
Overwrite at cursor✓ yes
Tab stops✓ yes
CJK wide chars (2 cols)✓ yes
Emoji wide chars (2 cols)✗ noHeadless mode reports emoji as single-width
Text wraps at width✓ yes

Powered by Termless
Playwright for Terminals