Skip to content

Cursor up (CUU)

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

ESC [ N A
CUU moves the cursor up by N rows without changing the column. The sequence is ESC [ N A (default N=1). The cursor stops at the top margin of the scroll region and does not wrap or scroll. CUU is relative movement within the active scrolling area. It is widely used by progress displays and TUIs that redraw a small region above the current cursor. A correct implementation clamps at the top margin instead of scrolling content, which distinguishes cursor movement from index/reverse-index operations.
How this is testedautomated
Move cursor down 5 then up 2 via \x1b[5B\x1b[2A, verify cursor row is 3 (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-05-17

Supported by 8 of 12 terminals (67%). Not supported by: Terminal.app, Warp, Cursor, VS Code. Part of the Core TUI baseline.

Supported by 9 of 14 backends (64%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
Kitty0.46.2✓ yes
VS Code✗ no
Warp✗ no
Cursor✗ no
Terminal.app✗ no

Headless Backends

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

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
vt100.js0.2.1✓ yes
vterm.js0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes