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
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
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.