Skip to content

HPA horizontal position absolute (CSI `)

Category: cursor · Baseline: core · Tags: ECMA-48 Standard · Specification ↗

CSI Ps `
HPA (Horizontal Position Absolute) moves the cursor to an absolute column on the current row. The sequence is CSI Ps ` where Ps is the 1-based column number (default 1). HPA is functionally equivalent to CHA (CSI G) but uses a different final character. Both are defined in ECMA-48 — some older terminals only implement one of the two.
How this is testedautomated
Write "ABCDEFGH" then send \x1b[5` (HPA col 5), verify cursor column is 4 (0-based).

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: HPA (horizontal position absolute) not implemented in vterm.js; vt100.js: HPA (horizontal position absolute) not implemented in vt100.js baseline emulator.

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✗ noHPA (horizontal position absolute) not implemented in vt100.js baseline emulator
vterm0.2.0✗ noHPA (horizontal position absolute) not implemented in vterm.js