Appearance
Kitty graphics: animation
The animation frame action (
a=f) adds animation frames to a previously transmitted image. Supports frame composition modes (overwrite, blend), per-frame timing, and looping. Not all terminals that support kitty graphics support animation.
Animation is one of the least portable parts of the Kitty graphics protocol. It assumes the terminal stores image state, composes frames, and schedules timing rather than just painting cells. Applications should detect support and provide a static-image fallback, especially through multiplexers or remote sessions.How this is testedautomated
Transmit a base image, then add an animation frame with
Transmit a base image, then add an animation frame with
a=f. Check response for success (not EINVAL).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-05-17
Supported by 10 of 14 backends (71%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | |
| Ghostty | 1.3.1 | ✓ yes | |
| VS Code | ✓ yes | ||
| Warp | ✓ yes | ||
| Kitty | 0.46.2 | ✓ yes | |
| Cursor | ✓ yes | ||
| Terminal.app | ✓ yes |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| vterm.js | 0.2.0 | ✓ yes | |
| Alacritty | 0.26.0 | ✗ no | Kitty graphics not implemented in alacritty |
| vt100.js | 0.2.1 | ✗ no | Not implemented — pure TypeScript emulator |
| WezTerm | 0.1.0-fork.5 | ✗ no | Kitty graphics not implemented in wezterm-term crate |
| xterm.js | 5.5.0 | ✗ no | Kitty graphics protocol not implemented in xterm.js |