Ghostty vs iTerm2

Ghostty vs iTerm2: Zig terminal for macOS and Linux with a text config, versus a macOS-only Objective-C terminal with tmux integration and Python API.

Updated

short verdict

Pick Ghostty if you work on both macOS and Linux, or want a terminal that works with a short key = value config file and ships with JetBrains Mono, Nerd Font symbols and themes built in. Pick iTerm2 if you are on a Mac and want tmux -CC integration, triggers, automatic profile switching and a Python scripting API, and you are fine configuring most of it in a Settings window.

Both are GPU-accelerated terminal emulators with tabs and split panes, but they differ in scope. Ghostty is MIT-licensed, written in Zig, runs on macOS and Linux, and keeps its feature set close to terminal emulation plus native UI. iTerm2 is GPL-2.0, written in Objective-C, runs only on macOS, and adds a large layer of automation, shell integration and session management on top.

this page is for

  • Developers choosing a terminal for macOS who want to compare a minimal-config option with a feature-heavy one
  • Developers who use both macOS and Linux and want one terminal on each
  • Mac users who rely on tmux, SSH-heavy workflows or terminal automation
pick

Ghostty

★ 62.8kZig
details

Better pick when you want the same terminal on macOS and Linux, a plain-text config, and sensible defaults without setup.

best for

  • Developers on both macOS and Linux
  • People who want to edit a text config file and version it
  • Users of Kitty graphics or keyboard protocols

strengths

  • Runs on macOS (SwiftUI, Metal) and Linux (GTK, OpenGL) with native tabs, windows and splits
  • Works without config: embeds JetBrains Mono and Nerd Font symbols, ships hundreds of themes that follow light/dark mode
  • Config is key = value lines in config.ghostty, with hundreds of options
  • Supports the Kitty graphics and keyboard protocols, and shell integration is injected for bash, elvish, fish, nushell and zsh

weaknesses

  • No tmux-style session integration; multiplexing needs a separate terminal multiplexer
  • Only left-to-right text is supported
  • Remote hosts without Ghostty's terminfo files cause problems; the ssh wrapper is off by default and ghostty +ssh is only planned for 1.4
pick

iTerm2

★ 18.2kObjective-C
details

Better pick when you are on a Mac and want tmux -CC integration, triggers, per-host profiles and a Python scripting API.

best for

  • Mac users who attach to tmux sessions over SSH
  • People who automate the terminal with triggers or Python scripts
  • Users who want features like Instant Replay, paste history and Open Quickly built in

strengths

  • tmux -CC turns tmux windows into native windows and tabs, and sessions survive crashes, SSH disconnects and app upgrades
  • Triggers fire regex-based actions, and profiles switch by hostname, username, directory or running command
  • Python scripting API can add status bar components, triggers and menu items
  • Dynamic Profiles in JSON or XML property lists reload as soon as they change

weaknesses

  • macOS only; there is no build for Linux or Windows
  • Most configuration lives in the Settings window rather than a text file, though profiles export as JSON
  • Ligatures render through CoreText, which the font documentation says is significantly slower
  • A tab holding a tmux window cannot also contain non-tmux split panes

Key differences

  • Platforms: Ghostty runs on macOS and Linux; iTerm2 is macOS only.
  • License and language: Ghostty is MIT and written in Zig; iTerm2 is GPL-2.0 and written in Objective-C.
  • Configuration: Ghostty uses a key = value text file; iTerm2 uses a Settings window, with JSON profile export.
  • tmux: iTerm2 maps tmux windows to native tabs with tmux -CC; Ghostty has no such integration.
  • Scripting: iTerm2 has a Python API; Ghostty's macOS app has an AppleScript dictionary.
  • Embedding: Ghostty publishes libghostty, a C and Zig library whose libghostty-vt API is still changing.

Choose Ghostty when

  • You use both macOS and Linux and want the same terminal on each.
  • You want a short text config and defaults that include a font, Nerd Font symbols and themes.
  • You need the Kitty graphics or keyboard protocols, or ligatures without a documented speed penalty.
  • You want a native UI on each platform: SwiftUI on macOS, GTK on Linux.

Choose iTerm2 when

  • You attach to tmux sessions and want them as native macOS windows and tabs via tmux -CC.
  • You want triggers, automatic profile switching (for example a red background on production hosts) or per-host command history.
  • You want to extend the terminal with Python scripts or Dynamic Profiles kept in version control.
  • You use features like Instant Replay, copy mode, Open Quickly (Cmd-Shift-O) or imgcat for inline images.

When not to use these

  • You need a terminal on Windows; Ghostty lists Windows as planned and iTerm2 has no build for it.
  • You need right-to-left text rendering; Ghostty supports only left-to-right text.

FAQ

Which is faster, Ghostty or iTerm2?
Neither project publishes a head-to-head benchmark. Ghostty uses per-terminal read, write and render threads, SIMD parsing and Metal or OpenGL rendering. iTerm2 has a GPU renderer with settings for when it is used, and its documentation notes that ligatures go through CoreText and are significantly slower.
Can I use both Ghostty and iTerm2?
On macOS, yes, since they are separate apps and neither documents a conflict. On Linux only Ghostty is available.
Which is easier to configure?
Ghostty is meant to work without configuration and uses a plain key = value file when you do change something. iTerm2 is configured mostly through its Settings window, with JSON export and Dynamic Profiles for file-based setups.
Does either support tmux?
iTerm2 documents tmux integration: tmux -CC maps tmux windows to native windows and tabs. Ghostty documents no tmux integration, so you would run a terminal multiplexer inside it.

related