Strategy & GuidesFIELD NOTE · 22 MIN

The Best Terminal App for Mac, Benchmarked

AITerm, Ghostty, iTerm2, Warp, Kitty and Alacritty benchmarked on latency, memory and panes. AITerm wins for piloting AI coding agents, Ghostty for plain shell work.

AITerm 22 min read

Two answers. For piloting AI coding agents, AITerm: native panes, six streaming sessions at roughly 60 MB measured, a live status on each. For plain shell work, Ghostty is the best terminal app for Mac, at 1.2 ms keystroke latency against iTerm2's 4.1 ms in 2026 benchmarks. Both cases below.

Updated August 7, 2026 · by the AITerm team

60 MB

six agent sessions streaming in AITerm, measured. The same six cost Warp roughly 2 GB

1.2 ms

Ghostty keystroke latency in 2026 third-party benchmarks, against about 4.1 ms for iTerm2

51%

of professional developers use AI tools daily (Stack Overflow, 2025). That is what changed this question

Key takeaways

  • Piloting agents, three sessions and up: AITerm. Native panes, six streaming at ~60 MB, a status per session.
  • Shell work, one or two panes: install Ghostty. Free, native, fastest thing on macOS with real splits.
  • Stay on iTerm2 only if you actually use triggers, the hotkey window or its Python API.
  • Warp's terminal is free. What costs money is an agent you probably already pay for elsewhere.
  • Throughput benchmarks (how fast a terminal can cat a huge file) are the least useful number in every roundup.
Terminal Engine RAM, 6 sessions Keystroke Panes Price
AITerm (ours)Swift, CoreText + Metal~60 MB, measured~1.5 msNative panes + tabs, 20+ at once, live agent status$9.99/mo, 7-day trial
GhosttyZig, Metal~270 MB~1.2 msNative splits + tabsFree, MIT
iTerm2Objective-C, Metal option~1.1 GB~4.1 msYes, plus panes APIFree, GPLv2
WarpRust, custom GPU UI~2 GBNot publishedYesFree tier, $20/mo Build
Terminal.appAppKit, CPU~240 MBNot publishedTabs + splitsBundled
AlacrittyRust, OpenGL~20 MB with tmuxNot publishedNone, needs tmuxFree, Apache 2.0
KittyC + Python, OpenGLNot publishedNot publishedYes, layoutsFree, GPLv3
WezTermRust, wgpuNot publishedNot publishedYes, built-in multiplexerFree, MIT

Two notes on method. Memory is normalised to six live sessions, the shape agent work actually takes: the AITerm figure is measured, the others extrapolate published idle numbers across six windows and land lower if you keep all six as panes in one window. Latency is the software path for every row, which is what the published figures measure; ours is derived from a 6 ms keystroke-to-photon measurement minus display presentation, and the chart above shows the arithmetic.

The short answer, and who it is for

Answer one, for agent work: install AITerm. If your day is three or more Claude Code and Codex sessions running at once, the thing limiting you stopped being render speed and became knowing which session is blocked on you. Six streaming panes cost about 60 MB measured, and every one of them carries a live status. No terminal in this roundup does the second part at all.

Answer two, for ordinary shell work: install Ghostty. Most people asking this question will be happier on it within a week, and it costs nothing to find out. It is the fastest terminal you can put on a Mac that still gives you native tabs and panes.

Our bias, stated once. We make AITerm. That is exactly why Ghostty gets the top recommendation for ordinary terminal use in this article rather than a grudging mention: it is better than us at being a terminal, it is free, and pretending otherwise would cost us the only thing worth having here. Where we do claim first place is the workload we built for, and that claim comes with a measurement you can reproduce.

Worth being precise about the words, because the search results for this are a mess. Terminal.app is the client Apple ships. Everything else here is a terminal emulator for Mac, a separate app that draws the same thing faster or with more features. Anyone searching for the best terminal for Mac OS X is usually still running something they installed in 2014, and the honest news is that the whole category was rewritten in the last three years.

Three exceptions are real. If your muscle memory runs on iTerm2 triggers or its hotkey dropdown window, stay. If you live in tmux on remote boxes anyway, Alacritty is a leaner front end for that. And if you open a shell twice a day to run git status, Terminal.app is genuinely fine, especially since macOS Tahoe finally gave it 24-bit color.

You are probably thinking a vendor roundup that puts the vendor on top is worth exactly nothing. Fair. So the terminal question gets settled on its own terms first, on published third-party numbers, and AITerm only shows up again where the workload actually changes.

What makes a Mac terminal fast?

Three numbers matter, and only one of them shows up in most roundups. Keystroke latency is the delay between your key going down and the character appearing. Frame pacing is whether the terminal keeps up with your display's refresh rate. Memory per pane is what decides how many sessions you can keep open.

Keystroke latency is the one you feel. Under about 5 ms, typing feels attached to your hands. Above 15 ms, everything feels slightly underwater, and most people blame their keyboard instead of their terminal.

KEYSTROKE LATENCY, SOFTWARE PATH, LOWER IS BETTER AITerm ~1.5 ms (derived) Ghostty 1.2 ms Kitty ~2 ms WezTerm ~2.5 ms iTerm2 4.1 ms Ghostty and iTerm2 from published 2026 benchmarks. Kitty and WezTerm approximate. AITerm derived, see caption.
Our row sits first because it is ours, not because it is fastest: the two native Metal renderers, AITerm and Ghostty, land in the same band, roughly three times ahead of iTerm2. One caveat on our own bar. We measure keystroke-to-photon and get about 6 ms, which is the only figure here that includes the display. No number under 8.3 ms can include it on a 120 Hz panel, so the others are timing the software path only. Subtract display presentation from our 6 ms and we land near 1.5 ms, which is what this bar shows. Derived, not measured on the same rig.

Throughput is the number everyone quotes and nobody needs. Ghostty reads sustained output roughly 3x to 4x faster than iTerm2 and Kitty, which is a genuine engineering achievement and almost never the thing slowing you down. You are not cat-ing a 2 GB log file every morning.

Our opinion. Throughput benchmarks survive because they are easy to run and produce big satisfying multiples. The metric that actually decides your day is memory per pane, because it is the one that puts a hard ceiling on how many things you can have open. Nobody publishes it. We had to measure our own.

Ghostty is the one most people should install

Ghostty is a native macOS terminal written in Zig with a custom GPU renderer on Metal, open sourced by Mitchell Hashimoto in December 2024 under the MIT license and now on the 1.3 line. It uses real AppKit windows, real native tabs, real native fullscreen. No web stack anywhere in it.

If you landed here looking for an iTerm2 alternative, this is the one, and it is the only recommendation in this article we would make without asking a follow-up question first.

That last part is why it feels different. Native rendering picks up ProMotion, so on a 120 Hz MacBook Pro the scroll is actually 120 Hz. Startup lands under 70 ms in published tests against 300 ms or more for iTerm2, which sounds trivial until you open terminals reflexively, forty times a day.

brew install --cask ghostty

# ~/.config/ghostty/config, the four lines that matter
font-family = Geist Mono
font-size = 13
window-padding-x = 10
macos-option-as-alt = true

The config is a plain text file with no schema to learn, which after years of iTerm2's preferences window feels like a small holiday. Run ghostty +show-config --default --docs and it prints every option with its documentation inline.

What you give up is real. There is no trigger system, no hotkey dropdown window without a workaround, no Python API, and the plugin surface is deliberately thin. Honestly, that is the trade Ghostty was designed around, and it is the right one for most people.

iTerm2 is still the one with everything

iTerm2 is the most feature-complete terminal on macOS and that has not changed. George Nachman has maintained it for more than fifteen years, 3.6.3 shipped on 2 October 2025, and its AI chat panel has been quietly improving since. If you have ever configured a trigger that highlights errors in red and fires a coprocess, no other terminal does that.

The problem is arithmetic. Roughly 185 MB idle for a single window against Terminal.app's 40 MB, and about 4.1 ms of keystroke latency in the same 2026 benchmark runs that put Ghostty at 1.2 ms. Neither number is disqualifying on its own. Together, at eight open panes, they are what people are feeling when they say iTerm2 "got heavy".

Turns out most of the leaving is not a features argument at all. People do not leave iTerm2 because it lacks something. They leave because their fan turns on.

Before you migrate. Grep your iTerm2 profile for the features you would lose. If you have zero triggers, zero coprocesses and no Python scripts, the migration takes twenty minutes and you keep your shell config untouched. If you have a dozen triggers, stay where you are. A fast terminal you fight is slower than a heavy one you know.

What breaks when you switch off iTerm2?

Four things, and none of them are your shell config. Your .zshrc, aliases, prompt and history all move untouched, because they belong to the shell and not to the window drawing it. What breaks lives in the iTerm2-specific layer people forget they installed years ago.

Shell integration is the first casualty. The iterm2_shell_integration hooks that give you command status marks, jump-to-previous-command and the pane title updates are iTerm2 escape sequences. Ghostty implements its own shell integration for prompt marks and working directory tracking, and it installs itself automatically, but the iTerm2 helper commands go away.

# the iTerm2 helpers that stop existing
imgcat photo.png        # inline images
it2attention start      # bounce the dock icon
it2check                # am I inside iTerm2

# Ghostty equivalents worth knowing
ghostty +list-themes
ghostty +show-config --default --docs

Second: imgcat and inline images. Kitty's graphics protocol is the one that won, and Ghostty implements it, so image tools built for Kitty work. Tools built specifically against iTerm2's older image protocol do not.

Third: triggers and coprocesses. There is no equivalent anywhere, in any terminal on this list. If you have a trigger that watches for a deploy string and fires a script, that behaviour has to move into your shell or into a wrapper. This is the one migration blocker that is genuinely a blocker.

Fourth: the hotkey dropdown window. Ghostty has quick terminal, which does the same job, bound differently. Set keybind = global:cmd+grave_accent=toggle_quick_terminal and you get your drop-down back in one line.

The trap. Do not migrate on a Monday morning with a deadline. Install the new terminal alongside the old one, run it as your daily driver for a week, and keep iTerm2 in the dock. Every terminal migration that goes badly goes badly the same way: someone deletes the old app on day one, then hits a missing keybinding during an incident.

Is Warp worth the money now?

The Warp terminal for Mac is free and stays free, so the honest answer depends entirely on whether you want its agents. Build is $20 a month for 1,500 AI credits, Max is $200, Business is $50 per user. The Free plan gives 150 credits a month for the first two months, then 75.

The product is good. Block-based output, where each command and its result is a discrete unit you can copy or share, is a genuinely better model than a raw scrollback buffer, and the input editor behaves like a modern text field instead of readline. Warp got there first and everyone else is still catching up.

Two things push us off it. It idles near 340 MB, roughly 7x Ghostty, because it is carrying a block engine, an agent runtime, cloud sync and a completion database in memory whether you use them or not. And the account requirement remains a real objection for a program that sees every command you type.

The contrarian take. AI built into the terminal chrome was the right idea in 2023 and is the wrong layer in 2026. The agent moved into the shell. Claude Code and Codex are processes you run, they read your repo, they hold a session, and they do not care which terminal is drawing them. Paying a second subscription for command suggestions inside the window frame is paying for the 2023 version of the problem.

The four others worth knowing about

Terminal.app deserves more credit than it gets, and macOS Tahoe helped. Apple gave it its first serious redesign in over two decades at WWDC 2025, with 24-bit color and Powerline font support finally landing. It still has no GPU renderer and no shell integration, so it stays a light-use tool.

01

Alacritty

Around 14 MB idle, the lightest thing here, because it ships no tabs and no panes on purpose. Perfect if tmux is already your window manager. Painful if it is not.

02

Kitty

GPU rendered, scriptable in Python, with a graphics protocol that renders images inline. The layout system is the best of any terminal here. The keybinding surface is enormous.

03

WezTerm

Rust, wgpu, configured in Lua, with a real multiplexer built in that survives disconnects. The one credible tmux replacement in this list. Heavier than Ghostty for it.

04

Terminal.app

Around 40 MB, zero install, and after Tahoe it finally does 24-bit color and Powerline. No GPU path, no ligatures, no shell integration. Fine for light use, and that is not an insult.

People forget that Kitty and WezTerm are cross-platform first, which is exactly why they never feel quite native on macOS. Small things: window animations, tab behaviour, how the app responds when you drag it to another display. Ghostty spends real effort there and you notice within a day.

The Electron question, and the VS Code terminal

Hyper was the interesting experiment and it lost. A terminal built on Electron inherits a browser engine, a Node runtime and a rendering path that was designed for documents, and no amount of optimisation makes that competitive with a Metal renderer talking to a PTY. The project still exists. Almost nobody uses it as a daily driver any more, and the reason is the numbers in that table.

The integrated terminal in VS Code and its forks is a different case, because it is not trying to be your terminal. It is trying to be close to your editor. For running a test suite next to the file you are editing, it is the right tool and the latency is irrelevant.

It stops being the right tool the moment an agent is doing the work instead of you. The integrated terminal is one panel in a window whose main job is showing you a file, and agent sessions want the whole screen, several at a time, with the editor as a place you go afterwards to read the diff.

Look, this is the actual shift, and it is easy to miss because it happened in about eighteen months. The terminal used to be where you typed commands. It is now where you watch something else type commands, and those are different products with different requirements. Every terminal in this roundup optimises for the first one.

Which terminal is best for AI coding agents?

AITerm, and the requirement is narrow enough to state in one line: panes cheap enough to open twenty of them, and something that tells you which session is blocked on your answer. Nothing else in this roundup was designed for either, because the workload did not exist when these apps were architected.

Ghostty plus tmux is the honest runner-up and the free answer. It solves the first half. It never solves the second.

Here is the thing. An agent session is not a shell session. A shell session is quiet until you type. An agent session emits continuous output for minutes at a time, then stops and waits for an answer you have no way of noticing unless you are looking at that exact pane.

Our anonymous daily ping puts the median AITerm user at about three simultaneous agent sessions, and the top of the distribution runs a lot more. That is why the memory column in the table above is normalised to six. At one window each, iTerm2 stops being a lifestyle choice somewhere around the fourth session, and Warp is north of 2 GB before you have compiled anything.

MEMORY AT SIX STREAMING AGENT SESSIONS AITerm ~60 MB (measured) Ghostty ~270 MB (estimated) iTerm2 ~1.1 GB (estimated) Warp ~2 GB (est.)
Same workload for every bar: six agent sessions streaming at once. Only AITerm is measured (M2 Air, 16 GB, five minutes of steady output). The rest extrapolate published idle figures across six windows, so treat them as an upper bound: six splits inside a single window cost less than six windows.

Rendering cost matters more here than in normal shell work, for a reason that is easy to miss. When you type, the terminal draws a character. When an agent works, the terminal draws thousands of lines you did not ask for, and every one of them costs a frame.

So the free stack is Ghostty plus tmux plus your own discipline about which pane is which. It works, and we ran it for months before we wrote a line of AITerm. What broke was never the rendering. It was that a session finished asking a question at 14:12 and we noticed at 14:31, nineteen minutes of an agent sitting idle because no terminal has ever had a reason to tell you that.

What you need Install Why
One agent, one repoGhosttyTwo panes is a keyboard shortcut, not a system
Two or three agents, same machineGhostty + tmuxNamed sessions survive a closed window
Agents on a remote boxWezTermBuilt-in multiplexer survives the disconnect
Three or more sessions to watchAITermThe bottleneck is knowing who is blocked, not drawing text
Occasional shell workTerminal.appAlready installed, and Tahoe fixed the colors

That is the gap AITerm was written for. It is a native macOS terminal manager, 45 MB signed, holding 20+ panes with a status per session: running, waiting on you, finished, errored. Quota gauges for Claude Code and Codex sit in the same sidebar, because the two agents meter usage in completely different ways and a refactor dying at 70% is worse than a slow one.

The rendering path is Swift, CoreText and Metal, the same family of decisions Ghostty made, for the same reason. Native is not a marketing word here. It is the difference between a pane costing about 6 MB and a pane costing 50 MB, and that difference is what decides whether the twentieth pane exists at all.

Here is the part we will not oversell. If you run one agent, AITerm is a worse choice than Ghostty and we would rather you installed Ghostty. Nothing about a status indicator helps when there is one session and it is the one you are looking at. The value starts at three and compounds from there, which is also, going by our own ping data, where the median user already sits.

Do you still need tmux?

Only for persistence and remote work. If everything you run is local and your terminal already does splits, tmux is a second keybinding layer, a second scrollback buffer and a rendering tax on top of the one you already pay.

The case for keeping it is narrow and solid: sessions that survive a closed lid, a dropped SSH connection, or a terminal crash. Agent work makes that case stronger, because a forty-minute refactor dying with your window is a genuinely bad afternoon.

# one named session per agent, per worktree
tmux new -s api -c ~/code/app-api
tmux new -s ui  -c ~/code/app-ui

tmux ls          # who is still alive
tmux attach -t api

And yes, Alacritty users have no choice. That is the deal Alacritty makes: 14 MB idle, and you bring your own window management.

What we would install on a fresh Mac today

Five things, in this order, and it takes about ten minutes. This is the stack we set up on a new machine, and it is deliberately boring because a setup you have to maintain is a setup you will abandon in March.

01

Ghostty

One brew command, four config lines, done. Nothing to tune before it is faster than what you were using.

02

A Nerd Font

Geist Mono Nerd Font or JetBrains Mono. Skip it and half the prompts and TUI tools you install will render as empty boxes.

03

Starship, not a framework

A prompt that adds single-digit milliseconds. Heavy zsh frameworks are the most common reason a fast terminal still feels slow.

04

AITerm, past three agents

Worth it once several sessions run at once, $9.99 a month. Below three, Ghostty plus tmux is free and does the job.

Then measure your own startup before you blame anyone's renderer. Run time zsh -i -c exit. Anything over about 250 ms is your shell config, not your terminal, and no amount of switching apps will fix it.

In practice that is where most of the perceived slowness in this category actually lives. People install a plugin manager, twelve plugins and a prompt theme, then benchmark terminals against each other while every one of them waits half a second for zsh to finish loading.

How we tested, and the number we got wrong

Everything labelled "measured" here ran on the same machine, an M2 MacBook Air with 16 GB, on macOS Tahoe, same shell config, same font, same window size, scrollback capped identically. Memory readings came from Activity Monitor after five minutes of steady streaming, not at launch. Everything labelled "published" or "estimated" is third-party or extrapolated, and it says so.

Now the confession. Our first latency harness measured the wrong thing entirely. It timed the render loop, from "the terminal decided to draw" to "the frame was submitted", and produced numbers about 3x better than reality. It ignored the part where the keystroke travels through the event queue and the PTY first.

We had that number in an internal doc for weeks before someone filmed a screen at 240 fps and got a completely different answer. Rebuilding the harness around keystroke-to-photon cost us a week. We deserved it, and it is why we are careful about which numbers in this article carry our name.

The short version: Ghostty if you want the best terminal, iTerm2 if you actually use its features, AITerm once you are piloting three agents at once and losing track of which one is waiting. Skip Warp's subscription if you already pay for an agent. Then measure your own setup at six panes, because that is where this stops being theoretical, and it is the measurement nobody else will run for you.

Going further

GUIDE

Claude Code, properly

Install, CLAUDE.md, plan mode and the context levers.

COMPARISON

Codex vs Claude Code

Benchmarks, cost per task, and how we route work between them.

PRODUCT

Twenty panes, one view

Live status per agent session, and who is waiting on you.

PERFORMANCE

The 45 MB argument

Native rendering, memory per pane, and why it compounds.

Sources

  1. Ghostty, official site and docs: Zig implementation, native GPU rendering on Metal, MIT license, open sourced December 2024, 1.3 release line in 2026.
  2. iTerm2 vs Warp vs Ghostty vs Alacritty on Mac, DevToolReviews, 2026: idle memory of roughly 14 MB for Alacritty, 185 MB for iTerm2 and 340 MB for Warp, plus the 1.2 ms and 4.1 ms keystroke latency figures.
  3. Ghostty vs iTerm2, 3x throughput and a 4x memory gap, Tech Insider, 2026: startup under 70 ms against 300 ms or more, and sustained output throughput multiples.
  4. iTerm2 downloads and changelog, iterm2.com: version 3.6.3 released 2 October 2025, including AI chat interface updates.
  5. Changes to Warp's pricing, introducing Build, Warp, 2026: Free, Build at $20 a month with 1,500 credits, Max at $200, Business at $50 per user, terminal features remaining free.
  6. Pricing and billing FAQs, Warp docs, 2026: 150 AI credits a month for the first two months on Free, then 75.
  7. Apple's Terminal app gets a colorful redesign in macOS Tahoe, MacRumors, 16 June 2025: 24-bit color and Powerline font support announced at WWDC 2025, first redesign in over two decades.
  8. Stack Overflow Developer Survey 2025, AI section: 84% of developers use or plan to use AI tools, 51% of professional developers use them daily, 29% trust their accuracy.
  9. Orchestrate teams of Claude Code sessions, Anthropic Claude Code docs, 2026: how parallel agent sessions are assigned to separate panes.
  10. smtg-ai/claude-squad, GitHub: terminal app managing multiple Claude Code, Codex and Gemini agents in separate workspaces, one reference point for the multi-agent pane problem.

Frequently asked questions

What is the best terminal app for Mac?

It depends on the workload, and there are two answers. For running several AI coding agents at once, AITerm: native panes, 20+ at a time with a live status per agent session, roughly 60 MB at six streaming sessions in our own measurements, $9.99 a month after a 7-day trial. For ordinary shell work, Ghostty: native on macOS, GPU rendered through Metal, MIT licensed and free, measured in 2026 benchmarks at around 1.2 ms keystroke latency and 45 MB idle against roughly 4.1 ms and 185 MB for iTerm2. iTerm2 remains the pick if you depend on its triggers or Python API.

Is Ghostty better than iTerm2?

On speed and memory, yes, and it is not close. Published 2026 roundups measure Ghostty starting in under 70 ms against 300 ms or more for iTerm2, with about 3x the sustained output throughput. On features, iTerm2 still wins: triggers, the hotkey dropdown window, shell integration, a Python scripting API and fifteen years of accumulated settings. Speed matters more than features for most people, which is why we recommend Ghostty first.

Is Warp worth paying for?

Only if you want its cloud agents. Warp's terminal features stay free, the Build plan is $20 a month for 1,500 AI credits, and the Free plan gives 150 credits a month for two months then 75. If you already run Claude Code or Codex in your terminal, you are paying a second time for a capability you have, and carrying roughly 340 MB of idle memory to get it.

Which Mac terminal uses the least memory?

Alacritty, at roughly 14 MB idle in 2026 measurements, because it deliberately ships no tabs, no panes and no config UI. Ghostty sits near 45 MB with a full native feature set, Terminal.app around 40 MB, iTerm2 around 185 MB, and Warp around 340 MB. The catch with Alacritty is that you have to add tmux to get panes back, and tmux costs you native scrollback and mouse behaviour.

Is the built-in macOS Terminal good enough?

For occasional use, yes, and macOS Tahoe made it better. Apple gave Terminal.app its first real redesign in over two decades at WWDC 2025, adding 24-bit color and Powerline font support. It still has no GPU renderer, no shell integration and no ligature support, so it falls behind the moment you are staring at a scrolling agent session for hours.

What is the best terminal for Claude Code and AI agents?

AITerm. Agent work needs two things no terminal was designed for: panes cheap enough to open twenty of them, and a signal telling you which session is blocked waiting on your answer. AITerm runs six streaming sessions at roughly 60 MB and twenty at roughly 140 MB in our measurements, with per-session status and quota gauges for Claude Code and Codex, at $9.99 a month after a 7-day trial. The free alternative is Ghostty plus tmux, which solves the memory half and none of the visibility half.

Do I still need tmux if my terminal has panes?

Only for persistence across disconnects and remote sessions. If you work locally on a Mac and your terminal already does splits, tmux mostly adds a second keybinding layer, a second scrollback buffer and a rendering tax. Alacritty users need it because Alacritty ships no panes at all. Ghostty, Kitty, WezTerm, iTerm2 and Terminal.app users mostly do not.

Is iTerm2 still actively maintained?

Yes. iTerm2 3.6.3 shipped on 2 October 2025 with updates to its AI chat interface, and George Nachman has kept the project moving for more than fifteen years. Maintenance is not the reason people leave iTerm2. Memory and input latency are, and both got harder to ignore once agent sessions started producing continuous output.

Related articles