Skip to content

Report cell size in pixels (CSI 16 t)

Category: device · Baseline: rich · Tags: Xterm Extensions · Specification ↗

ESC [ 16 t
XTWINOPS subcode 16 queries the dimensions of a single character cell in pixels. The query is CSI 16 t; the response is CSI 6 ; height ; width t. This is the canonical xterm-style equivalent of OSC 1337 ; ReportCellSize and is essential for any protocol that needs to render images at a precise cell-aligned size. Unlike OSC 1337 (an iTerm2 extension), CSI 16 t is part of the broader XTWINOPS spec and is supported by xterm, Ghostty, Kitty, WezTerm, foot, Contour, and many others. Applications should prefer this query when targeting modern terminals that follow xterm conventions.
How this is testedautomated
Send \x1b[16t, verify response matches CSI 6 ; H ; W t.

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 4 of 9 terminals (44%). Not supported by: Kitty, iTerm2, Terminal.app, vterm.js, vt100.js. Part of the Rich TUI baseline. Notes: Kitty: Window operations not exposed via Python batch bridge; vterm.js: XTWINOPS cell pixel-size report not implemented in vterm.js; vt100.js: XTWINOPS not implemented — post-dates VT220 baseline.

Supported by 2 of 14 backends (14%)

Terminal Applications

TerminalVersionSupportNotes
Ghostty1.3.1✓ yes26x14 px/cell
iTerm23.6.9✗ noNo XTWINOPS 16 response
Terminal.app2.15✗ noNo XTWINOPS 16 response
Kitty0.46.2✗ noWindow operations not exposed via Python batch bridge
VS Code1.113.0? unknown
Warp0.2026.03.18.08.24.03? unknown
Cursor2.6.21? unknown

Headless Backends

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

BackendVersionSupportNotes
Alacritty0.26.0~ partialCell pixel-size report requires a real window system
WezTerm0.1.0-fork.5~ partialCell pixel-size report requires a real window system
xterm.js5.5.0~ partialWindow operations require real window system; not exposed in headless mode
vt100.js0.2.1✗ noXTWINOPS not implemented — post-dates VT220 baseline
vterm0.2.0✗ noXTWINOPS cell pixel-size report not implemented in vterm.js