Skip to content

Kitty

App Terminal + Parser Backend

GPU-accelerated terminal by Kovid Goyal. Pioneer of the Kitty keyboard and graphics protocols. Written in C/Python.

Kitty was created by Kovid Goyal and first released in 2017. Written in C and Python with OpenGL GPU rendering, it was one of the first terminals to use the GPU for text rendering, achieving smooth scrolling and low latency that traditional CPU-rendered terminals couldn't match.

Kitty's most lasting contribution to the terminal ecosystem is the Kitty keyboard protocol (CSI u), which solves decades-old ambiguity in how terminals encode keypresses. The protocol has since been adopted by Ghostty, WezTerm, foot, and others. Kitty also pioneered the Kitty graphics protocol for inline image display and introduced extended underline styles (curly, dotted, dashed) with independent underline colors — features now standard in modern terminals.

Kitty supports a rich extension ecosystem through "kittens" — small Python programs that run inside the terminal. Notable kittens include an image viewer, SSH integration, and a diff viewer. The terminal also features native tab and window management, remote control via IPC, and extensive Unicode support.

Backend: GPU-accelerated terminal by Kovid Goyal. Pioneer of the Kitty keyboard and graphics protocols. Written in C/Python. · v0.46.2
89%
132 passed · 16 failed of 148 features
Tested: March 26, 2026
Analysis2026-03-26

Kitty scores 89% (132/148) on the terminfo.dev feature matrix, with gaps in the Core TUI, Modern TUI, Rich TUI, Unicode baselines. Ranks #9 of 13 tested terminals. Missing 16 features.

Character Sets

FeatureSupportNotes
DEC line drawing character set✓ yes
DEC Special Graphics✓ yes
G0/G1 character set switching✓ yes
UTF-8 mode✓ yes

Device Status

FeatureSupportNotes
Mode Report (DECRPM)✗ noHeadless mode has no output stream for DECRPM responses
Request Setting (DECRQSS)✗ noHeadless mode has no output stream for DECRQSS responses
Primary device attributes (DA1)✓ yesHeadless mode has no output stream for DA1 responses
Secondary Device Attributes (DA2)✓ yesHeadless mode has no output stream for DA2 responses
Device status report (DSR 5)✓ yesHeadless mode has no output stream for DSR responses
Feature Reporting (TERM_FEATURES)✗ no
Tertiary Device Attributes (DA3)✗ noHeadless mode has no output stream for DA3 responses
Query Terminfo (XTGETTCAP)✗ noHeadless mode has no output stream for XTGETTCAP responses
Terminal Version (XTVERSION)✗ noHeadless mode has no output stream for XTVERSION responses

Extensions

FeatureSupportNotes
iTerm2 Inline Images (OSC 1337)✓ yes
Kitty graphics protocol✗ noNo kitty graphics acknowledgment
Kitty keyboard protocol✗ noNo kitty keyboard response
Desktop Notifications (OSC 9/777)✓ yesOSC 9 notifications not exposed via Python batch bridge
VS Code Shell Integration (OSC 633)✓ yes
Icon and title (OSC 0)✓ yes
Foreground color query (OSC 10)✓ yesOSC 10 color query not exposed via Python batch bridge
Background color query (OSC 11)✓ yesOSC 11 color query not exposed via Python batch bridge
iTerm2 Capability Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported by kitty
iTerm2 Cell Size Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported by kitty
Window title (OSC 2)✓ yes
Clipboard access (OSC 52)✓ yesOSC 52 clipboard not exposed via Python batch bridge
OSC 5522 advanced clipboard? unknownOSC 5522 not exposed via Python batch bridge
OSC 66 text sizing? unknownOSC 66 not exposed via Python batch bridge — kitty supports it natively
Current directory (OSC 7)✓ yesOSC 7 CWD reporting not exposed via Python batch bridge
Hyperlinks (OSC 8)✓ yes
OSC 9;4 progress bar? unknown
Text reflow on resize✓ yes
Semantic prompts (OSC 133)✓ yes
Sixel graphics✓ yesDeclined by maintainer — kitty uses its own graphics protocol instead of sixel
Sixel support in DA1✗ noSixel not supported by kitty — uses its own graphics protocol
24-bit truecolor✓ yes

Input Protocols

FeatureSupportNotes
Button-Event Mouse (1002)✓ yesButton-event mouse tracking not exposed via headless API
CSI u Key Encoding✓ yes
modifyOtherKeys✓ yesmodifyOtherKeys not exposed via Python batch bridge
modifyOtherKeys mode 3? unknownmodifyOtherKeys mode 3 not exposed via Python batch bridge
Pixel Mouse Reporting (1016)✓ yesSGR pixel mouse mode not exposed via Python batch bridge
urxvt Mouse Reporting (1015)✓ yesurxvt mouse mode (?1015) not implemented in kitty
X10 Mouse Tracking (9)✓ yesX10 mouse mode (?9) not implemented in kitty

Modes

FeatureSupportNotes
Enter alt screen (DECSET 1049)✓ yesBehavioral: entered and responded
Exit alt screen (DECRST 1049)✓ yes
App cursor keys (DECCKM)✓ yesBehavioral: responsive after enable
Application keypad (DECKPAM)✓ yesNot exposed via Python batch bridge
Auto-wrap (DECAWM)✓ yesBehavioral: wrap confirmed
Bracketed paste (DECSET 2004)✓ yesBehavioral: terminal responsive after enable
Mode 2031 color scheme reporting? unknownMode 2031 not exposed via Python batch bridge
Focus tracking (DECSET 1004)✓ yesBehavioral: responsive after enable
Insert/replace mode (IRM)✓ yesNot exposed via Python batch bridge
Left/Right Margins (DECLRMM, Mode 69)✓ yesDECLRMM not exposed via Python batch bridge
All motion mouse (DECSET 1003)✓ yesAll-motion mouse tracking not exposed via Python batch bridge
SGR mouse mode (DECSET 1006)✓ yesSGR mouse encoding not exposed via Python batch bridge
Mouse tracking (DECSET 1000)✓ yesNot exposed via Python batch bridge
Origin mode (DECOM)✗ noNot exposed via Python batch bridge
Reverse video (DECSCNM)✓ yesNot exposed via Python batch bridge
Synchronized output (DECSET 2026)✓ yesBehavioral: responsive after enable

Reset

FeatureSupportNotes
Backend reset() method✓ yescursor at 5;5 after DECSTR
Full reset (RIS)✓ yes
SGR reset clears attributes✓ yes
Soft reset (DECSTR)✓ yesDECSTR resets modes but headless probe reads stale state

Unicode

FeatureSupportNotes
East Asian Ambiguous Width✓ yeswidth=1 (ambiguous chars vary by terminal/locale)
Grapheme Cluster Cursor Movement✗ nowidth=8, expected 2
Tab Stops (HT)✓ yes
Wide Char at Line Wrap✓ yes

Powered by Termless
Playwright for Terminals