Appearance
iTerm2 Inline Images (OSC 1337)
iTerm2 inline images use the proprietary OSC 1337 protocol to display images directly in terminal output. The image data is base64-encoded and transmitted inline with the escape sequence. iTerm2 supports PNG, JPEG, GIF, and other formats.
This protocol predates the Kitty graphics protocol and is simpler but less capable — it lacks features like image placement, animation control, and chunked transfer. Several other terminals (WezTerm, mintty) have adopted the iTerm2 protocol alongside or instead of Kitty graphics. The protocol is documented in iTerm2's documentation but has no formal specification.
How this is testedautomated
Check if the terminal responds to iTerm2 capability queries (OSC 1337) indicating inline image support.
Check if the terminal responds to iTerm2 capability queries (OSC 1337) indicating inline image support.
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 9 of 14 backends (64%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | |
| Ghostty | 1.3.1 | ✓ yes | |
| VS Code | ✓ yes | ||
| Warp | ✓ yes | ||
| Cursor | ✓ yes | ||
| Terminal.app | ✓ yes |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| vterm | 0.2.0 | ✓ yes | |
| Alacritty | 0.26.0 | ✗ no | iTerm2 inline images not supported by alacritty |
| Kitty | 0.40.0 | ✗ no | iTerm2 inline images not supported — Kitty uses its own graphics protocol |
| vt100.js | 0.2.1 | ✗ no | Not implemented — pure TypeScript emulator |
| WezTerm | 0.1.0-fork.5 | ✗ no | iTerm2 inline images not supported by wezterm |
| xterm.js | 5.5.0 | ✗ no | iTerm2 inline images not implemented in xterm.js |