Skip to content

Scroll region (DECSTBM)

Category: scrollback · Baseline: core · Tags: DEC Private Modes, VT100 · Specification ↗

ESC [ top ; bottom r
DECSTBM (Set Top and Bottom Margins) defines a scroll region — a subset of rows where scrolling operations take effect. The sequence is ESC [ top ; bottom r, where top and bottom are 1-based row numbers. ESC [ r resets to the full screen. Scroll regions are fundamental to TUI applications. A terminal multiplexer like tmux uses them to scroll one pane without affecting others. Editors use them to scroll the document area while keeping status bars fixed. When content scrolls within the region, lines outside the region remain untouched. Virtually every full-screen terminal application depends on DECSTBM. Universally supported since the VT100.
How this is testedautomated
Send \x1b[5;10r (DECSTBM), verify cursor moves to home position (0,0). Then reset with \x1b[r.

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 all 12 tested terminals — universal adoption. Part of the Core TUI baseline.

Supported by 14 of 14 backends (100%)

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
vt100.js0.2.1✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes