{
  "name": "macOS terminal emulator feature support",
  "description": "What six macOS terminal emulators do with modern escape codes on their factory settings: colour, text styles, underlines, emoji, images and protocol support.",
  "url": "https://terminal.ninja/tools/terminal-feature-support/",
  "updated": "2026-10-02T22:13:52+00:00",
  "licence": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "terminal ninja, https://terminal.ninja/tools/terminal-feature-support/"
  },
  "results": {
    "yes": "Works.",
    "no": "Doesn't.",
    "partial": "Sort of works; the note says how.",
    "noreply": "The terminal didn't answer the query. Usually, but not always, a lack of support.",
    "pending": "Not checked yet."
  },
  "methods": {
    "screenshot": "Judged from a screenshot of a test pattern, and confirmed by a person.",
    "query": "The terminal's own reply when asked, recorded verbatim in `reply`.",
    "clipboard": "Text written to the clipboard with OSC 52, then read back with pbpaste.",
    "hover": "The pointer moved over an OSC 8 link and over identical plain text, with and without Cmd held: supported if the window changes over the link and not over the text."
  },
  "terminals": {
    "alacritty": {
      "name": "Alacritty",
      "version": "0.17.0",
      "macos": "15.3.2",
      "queried_at": "2026-10-02T22:04:19+00:00",
      "screenshot_taken_at": "2026-10-01T22:20:35+00:00",
      "hovered_at": "2026-10-02T22:08:21+00:00"
    },
    "ghostty": {
      "name": "Ghostty",
      "version": "1.3.1",
      "macos": "15.3.2",
      "queried_at": "2026-10-02T22:04:23+00:00",
      "screenshot_taken_at": "2026-10-01T22:20:39+00:00",
      "hovered_at": "2026-10-02T22:12:56+00:00"
    },
    "iterm2": {
      "name": "iTerm2",
      "version": "3.5.11",
      "macos": "15.3.2",
      "queried_at": "2026-10-02T22:05:31+00:00",
      "screenshot_taken_at": "2026-10-01T22:20:45+00:00",
      "hovered_at": "2026-10-02T22:08:42+00:00"
    },
    "kitty": {
      "name": "kitty",
      "version": "0.49.1",
      "macos": "15.3.2",
      "queried_at": "2026-10-02T22:04:32+00:00",
      "screenshot_taken_at": "2026-10-01T22:20:50+00:00",
      "hovered_at": "2026-10-02T22:08:52+00:00"
    },
    "terminal-app": {
      "name": "Terminal.app",
      "version": "2.14",
      "macos": "15.3.2",
      "queried_at": "2026-10-02T22:04:37+00:00",
      "screenshot_taken_at": "2026-10-02T17:08:59+00:00",
      "hovered_at": "2026-10-02T22:13:52+00:00"
    },
    "wezterm": {
      "name": "WezTerm",
      "version": "20260929-043349-cab25161",
      "macos": "15.3.2",
      "queried_at": "2026-10-02T22:04:43+00:00",
      "screenshot_taken_at": "2026-10-01T22:21:00+00:00",
      "hovered_at": "2026-10-02T22:09:13+00:00"
    }
  },
  "features": [
    {
      "id": "truecolor",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#truecolor",
      "section": "Colour",
      "label": "24-bit colour (truecolor)",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Ignores 24-bit colour codes and reads their values as other attributes; a red gradient comes out as one flat teal band."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "italic",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#italic",
      "section": "Text styles",
      "label": "Italic",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "bold-italic",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#bold-italic",
      "section": "Text styles",
      "label": "Bold and italic together",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "dim",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#dim",
      "section": "Text styles",
      "label": "Dim",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "strikethrough",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#strikethrough",
      "section": "Text styles",
      "label": "Strikethrough",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "overline",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#overline",
      "section": "Text styles",
      "label": "Overline",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "no"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "no"
        },
        "kitty": {
          "result": "no"
        },
        "terminal-app": {
          "result": "no"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "underline-single",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#underline-single",
      "section": "Underlines",
      "label": "Single",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Reads the colon form of these codes (4:3 for a curly underline) as a background colour, so styled text arrives in coloured blocks with no underline."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "underline-double",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#underline-double",
      "section": "Underlines",
      "label": "Double",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "partial",
          "note": "Drawn as a plain single underline."
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Reads the colon form of these codes (4:3 for a curly underline) as a background colour, so styled text arrives in coloured blocks with no underline."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "undercurl",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#undercurl",
      "section": "Underlines",
      "label": "Curly (undercurl)",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Reads the colon form of these codes (4:3 for a curly underline) as a background colour, so styled text arrives in coloured blocks with no underline."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "underline-dotted",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#underline-dotted",
      "section": "Underlines",
      "label": "Dotted",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "partial",
          "note": "Drawn as a plain single underline."
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Reads the colon form of these codes (4:3 for a curly underline) as a background colour, so styled text arrives in coloured blocks with no underline."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "underline-dashed",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#underline-dashed",
      "section": "Underlines",
      "label": "Dashed",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "partial",
          "note": "Drawn as a plain single underline."
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Reads the colon form of these codes (4:3 for a curly underline) as a background colour, so styled text arrives in coloured blocks with no underline."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "underline-colour",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#underline-colour",
      "section": "Underlines",
      "label": "Coloured underline",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Reads the colon form of these codes (4:3 for a curly underline) as a background colour, so styled text arrives in coloured blocks with no underline."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "emoji",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#emoji",
      "section": "Characters",
      "label": "Emoji",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "emoji-skin-tone",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#emoji-skin-tone",
      "section": "Characters",
      "label": "Emoji skin tones",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "no",
          "note": "Draws the thumb and the skin-tone swatch separately."
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "emoji-flag",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#emoji-flag",
      "section": "Characters",
      "label": "Flag emoji",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "no",
          "note": "Shows the two regional-indicator letters instead of a flag."
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "partial",
          "note": "Drawn, but given one cell instead of two, so it overlaps the next character and shifts the rest of the line."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "emoji-zwj",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#emoji-zwj",
      "section": "Characters",
      "label": "Combined emoji (family)",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "no",
          "note": "Draws the three people separately, three times the width."
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "cjk-width",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#cjk-width",
      "section": "Characters",
      "label": "Double-width CJK",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "box-drawing",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#box-drawing",
      "section": "Characters",
      "label": "Box drawing and blocks",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "yes"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "ligatures",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#ligatures",
      "section": "Characters",
      "label": "Ligatures, default font",
      "method": "screenshot",
      "note": "Depends on the font the terminal ships with as much as on the terminal: any terminal here can be given a font that has them.",
      "results": {
        "alacritty": {
          "result": "no"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "no"
        },
        "kitty": {
          "result": "no"
        },
        "terminal-app": {
          "result": "no"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "nerd-font",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#nerd-font",
      "section": "Characters",
      "label": "Nerd Font icons, default font",
      "method": "screenshot",
      "note": "Depends on the font the terminal ships with as much as on the terminal: any terminal here can be given a font that has them.",
      "results": {
        "alacritty": {
          "result": "partial",
          "note": "Draws powerline arrows itself, but no other Nerd Font icons."
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "no"
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "sixel",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#sixel",
      "section": "Images",
      "label": "Sixel",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "no"
        },
        "ghostty": {
          "result": "no"
        },
        "iterm2": {
          "result": "yes"
        },
        "kitty": {
          "result": "no"
        },
        "terminal-app": {
          "result": "no",
          "note": "Prints the image data on screen as text."
        },
        "wezterm": {
          "result": "yes",
          "note": "Clipped from the right when characters are printed immediately before the image on the same line. Images that start a line, or that follow a cursor move, are drawn in full."
        }
      }
    },
    {
      "id": "kitty-graphics",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#kitty-graphics",
      "section": "Images",
      "label": "kitty graphics protocol",
      "method": "screenshot",
      "results": {
        "alacritty": {
          "result": "no"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "partial",
          "note": "Draws the image but ignores the requested size: a six-by-one-cell image came out one cell wide and nine rows tall. It also leaves the protocol's support query unanswered."
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no",
          "note": "Prints the image data on screen as text."
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "hyperlinks",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#hyperlinks",
      "section": "Hyperlinks and clipboard",
      "label": "Hyperlinks (OSC 8)",
      "method": "hover",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes",
          "note": "Shown only while Cmd is held."
        },
        "iterm2": {
          "result": "yes",
          "note": "Shown only while Cmd is held."
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "clipboard-write",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#clipboard-write",
      "section": "Hyperlinks and clipboard",
      "label": "Copy to clipboard (OSC 52)",
      "method": "clipboard",
      "results": {
        "alacritty": {
          "result": "yes"
        },
        "ghostty": {
          "result": "yes"
        },
        "iterm2": {
          "result": "no",
          "note": "Off by default: Settings > General > Selection > Applications in terminal may access clipboard turns it on."
        },
        "kitty": {
          "result": "yes"
        },
        "terminal-app": {
          "result": "no"
        },
        "wezterm": {
          "result": "yes"
        }
      }
    },
    {
      "id": "kitty-keyboard",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#kitty-keyboard",
      "section": "Protocols (the terminal's own answer)",
      "label": "kitty keyboard protocol",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "yes",
          "reply": "\u001b[?0u"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?0u"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b[?0u"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?0u"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "noreply",
          "note": "Off by default; enable_kitty_keyboard = true turns it on.",
          "reply": null
        }
      }
    },
    {
      "id": "synchronized-output",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#synchronized-output",
      "section": "Protocols (the terminal's own answer)",
      "label": "Synchronised output (mode 2026)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "yes",
          "reply": "\u001b[?2026;2$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?2026;2$y"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b[?2026;2$y"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?2026;2$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001b[?2026;2$y"
        }
      }
    },
    {
      "id": "bracketed-paste",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#bracketed-paste",
      "section": "Protocols (the terminal's own answer)",
      "label": "Bracketed paste (mode 2004)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "yes",
          "reply": "\u001b[?2004;2$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?2004;2$y"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b[?2004;2$y"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?2004;2$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001b[?2004;2$y"
        }
      }
    },
    {
      "id": "focus-events",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#focus-events",
      "section": "Protocols (the terminal's own answer)",
      "label": "Focus events (mode 1004)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "yes",
          "reply": "\u001b[?1004;2$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?1004;2$y"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b[?1004;2$y"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?1004;2$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001b[?1004;2$y"
        }
      }
    },
    {
      "id": "sgr-mouse",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#sgr-mouse",
      "section": "Protocols (the terminal's own answer)",
      "label": "SGR mouse reporting (mode 1006)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "yes",
          "reply": "\u001b[?1006;2$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?1006;2$y"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b[?1006;2$y"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?1006;2$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001b[?1006;2$y"
        }
      }
    },
    {
      "id": "grapheme-clusters",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#grapheme-clusters",
      "section": "Protocols (the terminal's own answer)",
      "label": "Grapheme clustering (mode 2027)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "no",
          "reply": "\u001b[?2027;0$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?2027;1$y"
        },
        "iterm2": {
          "result": "no",
          "reply": "\u001b[?2027;4$y"
        },
        "kitty": {
          "result": "no",
          "reply": "\u001b[?2027;0$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001b[?2027;3$y"
        }
      }
    },
    {
      "id": "colour-scheme-query",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#colour-scheme-query",
      "section": "Protocols (the terminal's own answer)",
      "label": "Light/dark mode query",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "noreply",
          "reply": null
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?997;2n"
        },
        "iterm2": {
          "result": "noreply",
          "reply": null
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?997;1n"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "noreply",
          "reply": null
        }
      }
    },
    {
      "id": "colour-scheme-updates",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#colour-scheme-updates",
      "section": "Protocols (the terminal's own answer)",
      "label": "Light/dark change notices (mode 2031)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "no",
          "reply": "\u001b[?2031;0$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?2031;2$y"
        },
        "iterm2": {
          "result": "no",
          "reply": "\u001b[?2031;4$y"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?2031;2$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "no",
          "reply": "\u001b[?2031;0$y"
        }
      }
    },
    {
      "id": "in-band-resize",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#in-band-resize",
      "section": "Protocols (the terminal's own answer)",
      "label": "In-band resize (mode 2048)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "no",
          "reply": "\u001b[?2048;0$y"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b[?2048;2$y"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b[?2048;2$y"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b[?2048;2$y"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "no",
          "reply": "\u001b[?2048;0$y"
        }
      }
    },
    {
      "id": "colour-queries",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#colour-queries",
      "section": "Protocols (the terminal's own answer)",
      "label": "Colour queries (OSC 10/11)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "yes",
          "reply": "\u001b]11;rgb:1818/1818/1818\u001b\\"
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001b]11;rgb:2828/2c2c/3434\u001b\\"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001b]11;rgb:158e/193a/1e75\u001b\\"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001b]11;rgb:0000/0000/0000\u001b\\"
        },
        "terminal-app": {
          "result": "yes",
          "reply": "\u001b]11;rgb:1e1e/1e1e/1e1e\u0007"
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001b]11;rgb:0000/0000/0000\u001b\\"
        }
      }
    },
    {
      "id": "xtversion",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#xtversion",
      "section": "Protocols (the terminal's own answer)",
      "label": "Reports its name and version (XTVERSION)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "noreply",
          "reply": null
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001bP>|ghostty 1.3.1\u001b\\"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001bP>|iTerm2 3.5.11\u001b\\"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001bP>|kitty(0.49.1)\u001b\\"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001bP>|WezTerm 20260929-043349-cab25161\u001b\\"
        }
      }
    },
    {
      "id": "xtgettcap",
      "url": "https://terminal.ninja/tools/terminal-feature-support/#xtgettcap",
      "section": "Protocols (the terminal's own answer)",
      "label": "Answers terminfo queries (XTGETTCAP)",
      "method": "query",
      "results": {
        "alacritty": {
          "result": "noreply",
          "reply": null
        },
        "ghostty": {
          "result": "yes",
          "reply": "\u001bP1+r544E=787465726D2D67686F73747479\u001b\\"
        },
        "iterm2": {
          "result": "yes",
          "reply": "\u001bP1+r544E=787465726D\u001b\\"
        },
        "kitty": {
          "result": "yes",
          "reply": "\u001bP1+r544E=787465726d2d6b69747479\u001b\\"
        },
        "terminal-app": {
          "result": "noreply",
          "reply": null
        },
        "wezterm": {
          "result": "yes",
          "reply": "\u001bP1+r544E=57657A5465726D\u001b\\"
        }
      }
    }
  ]
}