Kitty vs iTerm2
Kitty vs iTerm2: a cross-platform GPU terminal configured by kitty.conf versus a macOS-only terminal with a Settings window and Python API.
Updated
short verdict
Pick Kitty if you work on Linux, BSD or both Linux and macOS, and want one kitty.conf, session files and remote control over SSH. Pick iTerm2 if you are on macOS only and want native tmux integration via `tmux -CC`, triggers, automatic profile switching and a Settings-window workflow.
Both are GPU-accelerated terminal emulators with built-in tabs and splits, but they come from different places. Kitty is written in Python/C, licensed GPL-3.0, runs on Linux, macOS and BSD, and is configured in a text file. iTerm2 is written in Objective-C, licensed GPL-2.0, runs only on macOS, and is configured mostly through a Settings window. The choice usually comes down to platform and to how you want to configure and extend the terminal.
this page is for
- macOS users deciding between a cross-platform and a Mac-only terminal
- Developers who want text-file config versus a GUI settings workflow
- People who rely on a terminal multiplexer and want to know how each handles it
The better pick when you use Linux or BSD, or want identical text-file config and scripting across Linux and macOS.
best for
- Linux, BSD and macOS users who want one config
- Keyboard-driven users who script their terminal
strengths
- Runs on Linux, macOS and BSD, with all settings in a single kitty.conf
- Seven layouts (Fat, Grid, Horizontal, Splits, Stack, Tall, Vertical) and session files via `kitty --session`
- Remote control lets scripts, even over SSH, open windows, change colors and send text between windows
- Kittens such as `kitten icat`, `kitten diff` and `kitten ssh`; ligatures and variable fonts are supported
weaknesses
- The custom xterm-kitty terminfo entry can cause unknown-terminal errors or broken arrow keys on remote hosts and under sudo or su
- No built-in tmux session integration, triggers or Instant Replay-style features documented
- Not available on Windows
The better pick when you are on macOS and want tmux windows as native tabs, triggers and profiles that switch per host.
best for
- macOS-only users who live in the shell all day
- People who want a GUI Settings window and Python API automation
strengths
- `tmux -CC` turns tmux windows into native windows and tabs, and sessions survive crashes and SSH disconnects
- Triggers fire regex-matched actions; profiles switch by hostname, username, directory or running command
- Shell integration adds prompt marks, per-host history, SCP downloads on click and drag-and-drop uploads
- Python scripting API adds status bar components, triggers and menu items; Dynamic Profiles in JSON or plist reload on change
weaknesses
- macOS only; there is no build for Linux or Windows
- Most configuration is in the Settings window rather than a single text file
- Ligatures render through CoreText, which the font documentation says is significantly slower
Key differences
- Platform: Kitty runs on Linux, macOS and BSD; iTerm2 is macOS only.
- Language and license: Kitty is Python/C under GPL-3.0; iTerm2 is Objective-C under GPL-2.0.
- Configuration: Kitty uses a single kitty.conf; iTerm2 mostly uses its Settings window, with JSON profile export.
- Extension: Kitty uses kittens, watchers (Python) and remote control; iTerm2 uses a Python scripting API and triggers.
- Multiplexing: Kitty has seven layouts and session files; iTerm2 has split panes plus `tmux -CC` integration.
- Images: Kitty has its own graphics protocol and `kitten icat`; iTerm2 shows inline images and GIFs with `imgcat`.
Choose Kitty when
- You use Linux or BSD, or switch between those and macOS and want the same setup everywhere.
- You want your whole configuration in one kitty.conf and startup layouts in session files.
- You script the terminal from the shell or over SSH using remote control and Python watchers.
- You want `kitten ssh` to copy terminfo and set up shell integration on remote hosts.
Choose iTerm2 when
- You are on macOS and want `tmux -CC` to map tmux windows to native tabs and windows.
- You want triggers that highlight output, send notifications or run scripts on regex matches.
- You want profiles to change automatically by host, user, directory or command, such as a red production background.
- You prefer a Settings window, with Dynamic Profiles in JSON for version-controlled setups.
When not to use these
- You need a terminal on Windows; neither Kitty nor iTerm2 supports it.
- You want built-in session persistence on Linux; iTerm2 is macOS only, and Kitty documents no equivalent of its tmux integration.
FAQ
- Which is faster, Kitty or iTerm2?
- Neither project publishes a head-to-head benchmark. Kitty draws with OpenGL using threaded rendering and SIMD instructions, and iTerm2 has a GPU renderer you can turn off on battery power. iTerm2's docs note that ligatures render through CoreText, which is significantly slower.
- Can I use both on the same Mac?
- Yes, they are separate applications and nothing in either project says they conflict. Kitty uses kitty.conf and iTerm2 uses its own settings, so you configure each independently.
- Which is easier to configure?
- It depends on your preference. iTerm2 is configured mostly in a Settings window, while Kitty keeps everything in one kitty.conf text file that is easy to version-control. iTerm2 also supports Dynamic Profiles in JSON or plist for that.
- Does Kitty work on Linux and does iTerm2?
- Kitty supports Linux, macOS and BSD. iTerm2 is macOS only, with no Linux or Windows build.