Skip to content

Kitty graphics protocol

Category: extensions · Baseline: rich · Tags: Kitty Extensions · Specification ↗

The Kitty graphics protocol enables inline image display in the terminal using a structured escape sequence format. Unlike Sixel, which encodes pixel data as ASCII characters, Kitty graphics transmits images as base64-encoded PNG, RGB, or RGBA data via APC (Application Program Command) sequences. Images are sent with ESC_G <control data> ; <payload> ESC \. Large images are split into chunks using the m=1 flag for continuation. The protocol supports placement (positioning images relative to cells), virtual image references (transmit once, display many times), animation frames, and z-layering. Each image gets a numeric ID, and Unicode placeholder characters allow images to participate in text layout and scrollback. Compared to Sixel, the Kitty protocol offers higher fidelity (full 32-bit RGBA), streaming, and compositing — but requires explicit terminal support. Adopted by Ghostty, WezTerm, and Konsole.
How this is testedautomated
Send a minimal Kitty graphics payload (ESC_P G ... ESC \) and check for an acknowledgment response.

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 6 of 12 terminals (50%). Part of the Rich TUI baseline.

Supported by 7 of 14 backends (50%)

Terminal Applications

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

Headless Backends

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

BackendVersionSupportNotes
Kitty0.40.0✓ yes
vterm0.2.0✓ yes
Alacritty0.26.0✗ noNot implemented in alacritty ↗ upstream
vt100.js0.2.1✗ noNot implemented — pure TypeScript emulator
WezTerm0.1.0-fork.5✗ noNot implemented in wezterm-term crate
xterm.js5.5.0✗ noNot implemented in xterm.js

Sub-features

This feature has 4 individually testable sub-features.

Sub-featureiTerm2GhosttyVS CodeWarpCursorTerminal.app
Kitty graphics: animation
Kitty graphics: display
Kitty graphics: transmit
Kitty graphics: Unicode placeholders