xterm.js¶
A terminal emulator written in TypeScript for the browser. It is the engine behind VS Code's integrated terminal, Hyper, Tabby, ttyd, JupyterLab, Theia, and many web consoles.
Identity¶
TERM,COLORTERM, andTERM_PROGRAMare set by the host that owns the PTY, not by xterm.js. VS Code setsTERM_PROGRAM=vscodeandTERM_PROGRAM_VERSION; other hosts vary.- DA1:
CSI ? 1 ; 2 c?(configurable by the host through the API). - DA2:
CSI > 0 ; 276 ; 0 c?. - XTVERSION:
?
Documentation¶
Addon model¶
The core handles parsing, the screen model, mouse and keyboard encoding, and basic rendering. Optional behavior lives in addons that a host must load:
@xterm/addon-image: Sixel and iTerm2 inline images.@xterm/addon-clipboard: OSC 52.@xterm/addon-unicode11(and later Unicode versions): character width tables newer than the built-in Unicode 6 table.@xterm/addon-ligatures,@xterm/addon-webgl,@xterm/addon-canvas: rendering only.@xterm/addon-web-links: URL detection in text, distinct from OSC 8.
Two hosts on the same core version therefore differ in graphics, clipboard, and width behavior according to which addons they load.
Notable behavior¶
- Supports truecolor, DECSCUSR, all xterm mouse modes, bracketed paste, alternate screen, OSC 8, underline styles, and synchronized output (2026).
- Does not implement the Kitty keyboard protocol or the Kitty graphics protocol in core.
- The host decides which keys reach the terminal at all; browser and editor keybindings frequently intercept chords before xterm.js sees them.
Version notes¶
5.x releases; the package moved from xterm to @xterm/xterm in 5.4.
See the release notes for VT additions.
Probe¶
echo "$TERM_PROGRAM $TERM_PROGRAM_VERSION"
tools/query '\033[>c'
Feature support¶
Records are maintained independently in tdn/terminals/xtermjs.yaml. Unlisted features are unknown. See the comparison for all features.
| Feature | Support | As of | Notes and evidence |
|---|---|---|---|
BEL urgency/visualc0-bel-attention | PartialImported · unverified | Unversioned | Partial |
14/16 pixel sizescsi-14-16-t-pixel-sizes | SupportedImported · unverified | Unversioned | Yes |
18 size in cellscsi-18-t-text-size | SupportedImported · unverified | Unversioned | Yes |
22/23 title stackcsi-22-23-t-title-stack | SupportedImported · unverified | Unversioned | Yes |
ED 3 (scrollback)csi-3-j-erase-scrollback | SupportedImported · unverified | Unversioned | Yes |
DECRQMcsi-decrqm | SupportedImported · unverified | Unversioned | Yes |
DECSLRM / ?69csi-decslrm | UnsupportedImported · unverified | Unversioned | No ([xterm.js supported terminal sequences](https://xtermjs.org/docs/api/vtfeatures/) lists DECSLRM as unsupported.) |
DECSTBMcsi-decstbm | SupportedImported · unverified | Unversioned | Yes |
DECSTRcsi-decstr | SupportedImported · unverified | Unversioned | Yes |
ED/EL/ECH/ICH/DCH/IL/DLcsi-editing-operations | SupportedImported · unverified | Unversioned | Yes |
REPcsi-rep | SupportedImported · unverified | Unversioned | Yes |
SU/SDcsi-su-sd-scroll | SupportedImported · unverified | Unversioned | Yes |
Kitty keyboard protocolcsi-u-kitty-keyboard | UnknownImported · unverified | Unversioned | ?; Open feature request ([xtermjs/xterm.js issue tracker](https://github.com/xtermjs/xterm.js/issues).) |
DECRQSSdcs-decrqss | SupportedImported · unverified | Unversioned | Yes; [vtfeatures](https://xtermjs.org/docs/api/vtfeatures/): `m`, `r`, `SP q` |
Sixeldcs-sixel | SupportedImported · unverified | Unversioned | Yes, addon ([@xterm/addon-image](https://github.com/jerch/xterm-addon-image).) | Also recorded: Yes, addon ([@xterm/addon-image](https://github.com/jerch/xterm-addon-image).); `@xterm/addon-image` |
XTGETTCAPdcs-xtgettcap | UnknownImported · unverified | Unversioned | ?; not in vtfeatures |
1000 mousedec-mode-1000-mouse | SupportedImported · unverified | Unversioned | Yes |
1002 button motiondec-mode-1002-button-motion | SupportedImported · unverified | Unversioned | Yes |
1003 all motiondec-mode-1003-all-motion | SupportedImported · unverified | Unversioned | Yes |
1004 focusdec-mode-1004-focus | SupportedImported · unverified | Unversioned | Yes ([xterm.js supported sequences](https://xtermjs.org/docs/api/vtfeatures/).) |
1006 sgr mousedec-mode-1006-sgr-mouse | SupportedImported · unverified | Unversioned | Yes |
1007 alternate scrolldec-mode-1007-alternate-scroll | SupportedImported · unverified | Unversioned | Yes |
1015 urxvt mousedec-mode-1015-urxvt-mouse | SupportedImported · unverified | Unversioned | Yes |
1049 alternate screendec-mode-1049-alternate-screen | SupportedImported · unverified | Unversioned | Yes |
2004 bracketed pastedec-mode-2004-bracketed-paste | SupportedImported · unverified | Unversioned | Yes | Also recorded: Yes; ([xterm.js supported sequences](https://xtermjs.org/docs/api/vtfeatures/).) |
2026 synchronized outputdec-mode-2026-synchronized-output | SupportedImported · unverified | Unversioned | Yes |
Grapheme cluster mode (2027)dec-mode-2027-grapheme-clusters | UnknownImported · unverified | Unversioned | ?; Per-code-point storage |
?45 reverse wrapdec-mode-45-reverse-wrap | SupportedImported · unverified | Unversioned | Yes |
win32-input-modedec-mode-9001-win32-input | UnknownImported · unverified | Unversioned | ?; Not a Unix protocol; not documented by any of them |
DECSCA/DECSED/DECSELdec-selective-erase | PartialImported · unverified | Unversioned | Partial |
DEC Special Graphicsesc-dec-special-graphics | SupportedImported · unverified | Unversioned | Yes ([xterm.js](https://xtermjs.org/), `src/common/data/Charsets.ts`.) |
OSC 0/2 setosc-0-2-title | SupportedImported · unverified | Unversioned | Yes |
OSC 10/11 queryosc-10-11-default-colors-query | SupportedImported · unverified | Unversioned | Yes |
OSC 10/11 setosc-10-11-default-colors-set | SupportedImported · unverified | Unversioned | Yes |
104/110/111 resetosc-104-110-111-color-reset | SupportedImported · unverified | Unversioned | Yes |
OSC 12 cursorosc-12-cursor-color | SupportedImported · unverified | Unversioned | Yes |
iTerm2osc-1337-inline-images | SupportedImported · unverified | Unversioned | Yes, addon ([@xterm/addon-image](https://github.com/jerch/xterm-addon-image).) | Also recorded: Yes, addon ([@xterm/addon-image](https://github.com/jerch/xterm-addon-image).); `@xterm/addon-image`; also used by the VS Code terminal |
OSC 4 queryosc-4-palette-query | SupportedImported · unverified | Unversioned | Yes |
OSC 4 setosc-4-palette-set | SupportedImported · unverified | Unversioned | Yes |
OSC 52 readosc-52-read | PartialImported · unverified | Unversioned | Partial; Requires `@xterm/addon-clipboard`; the addon's provider decides |
OSC 52 writeosc-52-write | PartialImported · unverified | Unversioned | Partial; Requires `@xterm/addon-clipboard`; the addon's provider decides |
OSC 8 hyperlinksosc-8-hyperlinks | SupportedImported · unverified | Unversioned | Yes (5.0) |
256 colorssgr-256-colors | SupportedImported · unverified | Unversioned | Yes |
Italic 3sgr-3-italic | SupportedImported · unverified | Unversioned | Yes |
Colon form 38:2sgr-38-2-colon-form | SupportedImported · unverified | Unversioned | Yes |
Truecolor 38;2sgr-38-2-truecolor | SupportedImported · unverified | Unversioned | Yes |
Underline styles 4:nsgr-4-underline-styles | SupportedImported · unverified | Unversioned | Yes |
Blink 5sgr-5-blink | SupportedImported · unverified | Unversioned | Yes |
Overline 53sgr-53-overline | SupportedImported · unverified | Unversioned | Yes |
Underline color 58sgr-58-underline-color | SupportedImported · unverified | Unversioned | Yes |
Strikethrough 9sgr-9-strikethrough | SupportedImported · unverified | Unversioned | Yes |
bceterminfo-bce | SupportedImported · unverified | Unversioned | Yes |
Bold-is-bright optiontext-bold-is-bright | PartialImported · unverified | Unversioned | Partial |
Synthesized box drawingtext-box-drawing | SupportedImported · unverified | Unversioned | Yes |
Color emoji renderingtext-color-emoji | SupportedImported · unverified | Unversioned | Yes |
Italic facetext-italic-face | SupportedImported · unverified | Unversioned | Yes |
Ligatures / shapingtext-shaping | PartialImported · unverified | Unversioned | Partial (canvas renderer) |
Bundled Unicode tablestext-unicode-tables | SupportedImported · unverified | Unversioned | Yes |