Skip to content

Kitty graphics protocol

Category: extensions · 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.

Supported by 2 of 6 backends (33%)

Support Matrix

BackendVersionSupportNotes
Ghostty1.3.1✓ yes
Kitty0.40.0✓ yes
Alacritty0.26.0✗ noNot implemented in alacritty ↗ upstream
vt1000.1.0✗ 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

Powered by Termless
Playwright for Terminals