Appearance
Ghostty
App Terminal + Parser Backend
GPU-accelerated terminal by Mitchell Hashimoto. Written in Zig, Metal/OpenGL/Vulkan. Excellent standards compliance.
Ghostty is a terminal emulator created by Mitchell Hashimoto, founder of HashiCorp (Terraform, Vagrant, Vault). Written in Zig with GPU-accelerated rendering via Metal (macOS), OpenGL, and Vulkan. First released in late 2024 after years of development, Ghostty quickly gained attention for its focus on correctness and performance.
Ghostty's architecture separates the terminal emulation core into libghostty, a reusable library that other projects can embed. This is how cmux (the Ghostty multiplexer) gets its terminal emulation — it links against libghostty directly. The library handles VT parsing, grid management, and rendering, while the app adds window management and platform integration.
Among modern terminals, Ghostty has some of the best standards compliance, supporting kitty keyboard protocol, kitty graphics, sixel, OSC 8 hyperlinks, semantic prompts, and full Unicode including grapheme clustering. It scores consistently near the top of terminfo.dev's feature matrix.
Backend: GPU-accelerated terminal by Mitchell Hashimoto. Written in Zig, Metal/OpenGL/Vulkan. Excellent standards compliance. · v1.3.1
95%
140 passed · 8 failed of 148 features
Tested: March 26, 2026
Analysis2026-03-26
Ghostty scores 95% (140/148) on the terminfo.dev feature matrix, with gaps in the Core TUI, Rich TUI baselines. Ranks #3 of 13 tested terminals. Missing: CUP with DECOM, Tertiary Device Attributes (DA3), Sixel support in DA1, Sixel graphics, iTerm2 Cell Size Reporting (OSC 1337), iTerm2 Capability Reporting (OSC 1337), Kitty graphics protocol, Feature Reporting (TERM_FEATURES).
Character Sets
| Feature | Support | Notes |
|---|---|---|
| DEC line drawing character set | ✓ yes | |
| DEC Special Graphics | ✓ yes | |
| G0/G1 character set switching | ✓ yes | |
| UTF-8 mode | ✓ yes |
Cursor
| Feature | Support | Notes |
|---|---|---|
| CUD stops at bottom | ✓ yes | |
| CUP at screen boundaries | ✓ yes | |
| CUP with DECOM | ✗ no | got 1;1, expected 5;1 |
| CUU stops at top | ✓ yes | |
| Hide cursor (DECTCEM) | ✓ yes | |
| Cursor horizontal absolute (CHA) | ✓ yes | |
| Cursor position (CUP) | ✓ yes | |
| Cursor back (CUB) | ✓ yes | |
| Cursor down (CUD) | ✓ yes | |
| Cursor forward (CUF) | ✓ yes | |
| Cursor home | ✓ yes | |
| Cursor up (CUU) | ✓ yes | |
| Cursor next line (CNL) | ✓ yes | |
| Cursor position report (DSR 6) | ✓ yes | |
| Reverse Wrap (Mode 45) | ✓ yes | |
| Save/restore cursor (DECSC) | ✓ yes | |
| Cursor shape (DECSCUSR) | ✓ yes |
Device Status
| Feature | Support | Notes |
|---|---|---|
| Mode Report (DECRPM) | ✓ yes | DECAWM is set |
| Request Setting (DECRQSS) | ✓ yes | |
| Primary device attributes (DA1) | ✓ yes | |
| Secondary Device Attributes (DA2) | ✓ yes | |
| Device status report (DSR 5) | ✓ yes | |
| Feature Reporting (TERM_FEATURES) | ✗ no | |
| Tertiary Device Attributes (DA3) | ✗ no | No DA3 response |
| Query Terminfo (XTGETTCAP) | ✓ yes | |
| Terminal Version (XTVERSION) | ✓ yes |
Editing
| Feature | Support | Notes |
|---|---|---|
| Delete characters (DCH) | ✓ yes | |
| Delete lines (DL) | ✓ yes | |
| Insert characters (ICH) | ✓ yes | |
| Insert lines (IL) | ✓ yes | |
| Repeat character (REP) | ✓ yes |
Erase
| Feature | Support | Notes |
|---|---|---|
| Erase character (ECH) | ✓ yes | |
| ED at scroll region boundary | ✓ yes | |
| EL erases with bg color | ✓ yes | |
| Erase line (EL 2) | ✓ yes | |
| Erase to BOL (EL 1) | ✓ yes | |
| Erase to EOL (EL 0) | ✓ yes | |
| Erase above (ED 1) | ✓ yes | |
| Erase screen (ED 2) | ✓ yes | |
| Erase below (ED 0) | ✓ yes | |
| Erase scrollback (ED 3) | ✓ yes | |
| Selective Erase (DECSED) | ✓ yes |
Extensions
| Feature | Support | Notes |
|---|---|---|
| iTerm2 Inline Images (OSC 1337) | ✓ yes | |
| Kitty graphics protocol | ✗ no | No kitty graphics acknowledgment |
| Kitty keyboard protocol | ✓ yes | |
| Desktop Notifications (OSC 9/777) | ✓ yes | |
| VS Code Shell Integration (OSC 633) | ✓ yes | |
| Icon and title (OSC 0) | ✓ yes | |
| Foreground color query (OSC 10) | ✓ yes | |
| Background color query (OSC 11) | ✓ yes | |
| iTerm2 Capability Reporting (OSC 1337) | ✗ no | iTerm2-specific protocol not supported |
| iTerm2 Cell Size Reporting (OSC 1337) | ✗ no | iTerm2-specific protocol not supported |
| Window title (OSC 2) | ✓ yes | |
| Clipboard access (OSC 52) | ✓ yes | |
| OSC 5522 advanced clipboard | ? unknown | |
| OSC 66 text sizing | ? unknown | |
| Current directory (OSC 7) | ✓ yes | |
| Hyperlinks (OSC 8) | ✓ yes | |
| OSC 9;4 progress bar | ? unknown | |
| Text reflow on resize | ✓ yes | |
| Semantic prompts (OSC 133) | ✓ yes | |
| Sixel graphics | ✗ no | Sixel image didn't move cursor |
| Sixel support in DA1 | ✗ no | DA1 response missing ;4 (sixel) |
| 24-bit truecolor | ✓ yes |
Input Protocols
| Feature | Support | Notes |
|---|---|---|
| Button-Event Mouse (1002) | ✓ yes | |
| CSI u Key Encoding | ✓ yes | |
| modifyOtherKeys | ✓ yes | |
| modifyOtherKeys mode 3 | ? unknown | |
| Pixel Mouse Reporting (1016) | ✓ yes | SGR pixel mouse mode not tracked by ghostty-web WASM backend |
| urxvt Mouse Reporting (1015) | ✓ yes | |
| X10 Mouse Tracking (9) | ✓ yes |
Modes
| Feature | Support | Notes |
|---|---|---|
| Enter alt screen (DECSET 1049) | ✓ yes | DECRPM: mode reset |
| Exit alt screen (DECRST 1049) | ✓ yes | |
| App cursor keys (DECCKM) | ✓ yes | DECRPM: mode reset |
| Application keypad (DECKPAM) | ✓ yes | |
| Auto-wrap (DECAWM) | ✓ yes | DECRPM: mode set |
| Bracketed paste (DECSET 2004) | ✓ yes | DECRPM: mode reset |
| Mode 2031 color scheme reporting | ? unknown | |
| Focus tracking (DECSET 1004) | ✓ yes | DECRPM: mode reset |
| Insert/replace mode (IRM) | ✓ yes | |
| Left/Right Margins (DECLRMM, Mode 69) | ✓ yes | DECLRMM not tracked by ghostty-web WASM backend |
| All motion mouse (DECSET 1003) | ✓ yes | DECRPM: mode reset |
| SGR mouse mode (DECSET 1006) | ✓ yes | DECRPM: mode reset |
| Mouse tracking (DECSET 1000) | ✓ yes | DECRPM: mode reset |
| Origin mode (DECOM) | ✓ yes | DECRPM: mode reset |
| Reverse video (DECSCNM) | ✓ yes | DECRPM: mode reset |
| Synchronized output (DECSET 2026) | ✓ yes | DECRPM: mode reset |
Reset
| Feature | Support | Notes |
|---|---|---|
| Backend reset() method | ✓ yes | cursor at 5;5 after DECSTR |
| Full reset (RIS) | ✓ yes | |
| SGR reset clears attributes | ✓ yes | |
| Soft reset (DECSTR) | ✓ yes |
Scrollback
| Feature | Support | Notes |
|---|---|---|
| Scrollback accumulates | ✓ yes | |
| Alt screen separate scrollback | ✓ yes | |
| DECSTBM constrains scrolling | ✓ yes | |
| DECSTBM reset to full screen | ✓ yes | |
| Reverse index (RI) | ✓ yes | |
| Scroll down (SD) | ✓ yes | |
| Scroll up (SU) | ✓ yes | |
| Scroll region (DECSTBM) | ✓ yes | |
| Total line count | ✓ yes | Content written to scrollback |
SGR (Text Styling)
| Feature | Support | Notes |
|---|---|---|
| 256-color bg (SGR 48;5) | ✓ yes | |
| Bright bg colors (SGR 100-107) | ✓ yes | |
| Default bg color (SGR 49) | ✓ yes | |
| Standard bg colors (SGR 40-47) | ✓ yes | |
| 24-bit bg (SGR 48;2) | ✓ yes | |
| Blink (SGR 5) | ✓ yes | |
| Bold (SGR 1) | ✓ yes | |
| Faint/dim (SGR 2) | ✓ yes | |
| 256-color fg (SGR 38;5) | ✓ yes | |
| Bright fg colors (SGR 90-97) | ✓ yes | |
| Default fg color (SGR 39) | ✓ yes | |
| Standard fg colors (SGR 30-37) | ✓ yes | |
| 24-bit fg (SGR 38;2) | ✓ yes | |
| Hidden/invisible (SGR 8) | ✓ yes | |
| Inverse video (SGR 7) | ✓ yes | |
| Italic (SGR 3) | ✓ yes | |
| Overline (SGR 53) | ✓ yes | |
| Reset all (SGR 0) | ✓ yes | |
| Reset bold/dim (SGR 22) | ✓ yes | |
| Reset inverse (SGR 27) | ✓ yes | |
| Reset italic (SGR 23) | ✓ yes | |
| Reset underline (SGR 24) | ✓ yes | |
| Strikethrough (SGR 9) | ✓ yes | |
| Underline color (SGR 58) | ✓ yes | |
| Curly underline (SGR 4:3) | ✓ yes | |
| Dashed underline (SGR 4:5) | ✓ yes | |
| Dotted underline (SGR 4:4) | ✓ yes | |
| Double underline (SGR 21) | ✓ yes | |
| Underline (SGR 4) | ✓ yes |
Text
| Feature | Support | Notes |
|---|---|---|
| Backspace (BS) | ✓ yes | |
| Basic text rendering | ✓ yes | |
| Combining characters (0 cols) | ✓ yes | |
| Carriage return | ✓ yes | |
| Index (IND) | ✓ yes | |
| Line feed | ✓ yes | |
| Next line (NEL) | ✓ yes | |
| Overwrite at cursor | ✓ yes | |
| Reverse Index at Scroll Top | ✓ yes | |
| Tab stops | ✓ yes | |
| CJK wide chars (2 cols) | ✓ yes | |
| Emoji wide chars (2 cols) | ✓ yes | |
| Regional indicator flags (2 cols) | ✓ yes | |
| Variation selector 16 (emoji presentation) | ✓ yes | |
| Emoji ZWJ sequences (2 cols) | ✓ yes | |
| Text wraps at width | ✓ yes |
Unicode
| Feature | Support | Notes |
|---|---|---|
| East Asian Ambiguous Width | ✓ yes | width=1 (ambiguous chars vary by terminal/locale) |
| Grapheme Cluster Cursor Movement | ✓ yes | |
| Tab Stops (HT) | ✓ yes | |
| Wide Char at Line Wrap | ✓ yes |