Skip to content

iTerm2 Inline Images (OSC 1337)

Category: extensions · Baseline: rich · Tags: Operating System Commands (OSC) · Specification ↗

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.

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 8 of 12 terminals (67%). Not supported by: vt100.js, Alacritty, WezTerm, xterm.js. Part of the Rich TUI baseline.

Supported by 9 of 14 backends (64%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.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.

BackendVersionSupportNotes
vterm0.2.0✓ yes
Alacritty0.26.0✗ noiTerm2 inline images not supported by alacritty
Kitty0.40.0✗ noiTerm2 inline images not supported — Kitty uses its own graphics protocol
vt100.js0.2.1✗ noNot implemented — pure TypeScript emulator
WezTerm0.1.0-fork.5✗ noiTerm2 inline images not supported by wezterm
xterm.js5.5.0✗ noiTerm2 inline images not implemented in xterm.js