Skip to content

OSC 66 text sizing โ€‹

Category: extensions ยท Tags: Kitty ยท Specification โ†—

OSC 66 is the Kitty text sizing protocol, allowing applications to render text at different sizes (scale 1-7x) and explicitly specify character cell widths. The sequence ESC ] 66 ; params BEL controls text sizing with s=N for scale factor and w=N for explicit cell width. This protocol addresses the fundamental character width ambiguity problem โ€” applications can tell the terminal exactly how wide a character should be, rather than relying on potentially inconsistent wcwidth() calculations. Supported by kitty and foot, with Ghostty parsing (but not yet rendering) the sequences.
How this is tested: Query text sizing state with OSC 66;? BEL and check for response. Fallback: send OSC 66;s=2 BEL and verify the sequence is consumed.
Analysis2026-03-26

Supported by 1 of 6 terminals (17%). Not supported by: vterm.js, vt100.js, Alacritty, WezTerm, xterm.js. Part of the Rich TUI baseline.

Supported by 1 of 18 backends (6%)

Terminal Applications โ€‹

TerminalVersionSupportNotes
cmuxโœ“ yesConsumed (no query)
iTerm23.6.9? unknown
Ghostty1.3.1? unknown
VS Code1.112.0? unknown
Cursor2.6.21? unknown
Warp0.2026.03.18.08.24.03? unknown
Terminal.app2.15? unknown
Kitty0.46.2? unknownOSC 66 not exposed via Python batch bridge โ€” kitty supports it natively

Headless Backends โ€‹

Parser correctness only โ€” a โœ“ means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0โœ— noOSC 66 text sizing not implemented in alacritty
vt100.js0.2.1โœ— noNot implemented โ€” pure TypeScript emulator
vterm0.2.0โœ— noOSC 66 text sizing not implemented
WezTerm0.1.0-fork.5โœ— noOSC 66 text sizing not implemented in wezterm
xterm.js5.5.0? unknownOSC 66 text sizing not implemented in xterm.js
xterm.js6.0.0? unknownOSC 66 text sizing not implemented in xterm.js
xterm.js5.4.0? unknownOSC 66 text sizing not implemented in xterm.js
xterm.js6.1.0-beta.195? unknownOSC 66 text sizing not implemented in xterm.js

Powered by Termless
Playwright for Terminals