Skip to content

HTS set tab stop (ESC H)

Category: text · Baseline: core · Tags: ECMA-48 Standard, VT100 · Specification ↗

ESC H
HTS (Horizontal Tab Set) sets a tab stop at the current cursor column. The sequence is ESC H. After setting a custom tab stop, subsequent HT (tab) characters will stop at that column. HTS works in conjunction with TBC (Tab Clear) to allow applications to define custom tab layouts. Default tab stops are every 8 columns, but HTS allows finer control for columnar data alignment.
How this is testedautomated
Clear all tab stops with \x1b[3g, position cursor at column 5 and send \x1bH (HTS), return to column 0 and send a tab — verify cursor advances to column 5.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-04-06

Supported by 7 of 9 terminals (78%). Not supported by: vterm.js, vt100.js. Part of the Core TUI baseline. Notes: vterm.js: Tab stop manipulation not implemented in vterm.js; vt100.js: Tab stop manipulation not implemented in vt100.js.

Supported by 11 of 14 backends (79%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
Kitty0.40.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes
vt100.js0.2.1✗ noTab stop manipulation not implemented in vt100.js
vterm0.2.0✗ noTab stop manipulation not implemented in vterm.js