Terminal Emulators: How to Choose the Right One

A guide to choosing a terminal emulator for coding with AI. Compare popular options and learn what features matter most for modern workflows.

Your terminal emulator is the window between you and your development tools. Most developers use whatever came with their OS and never think about it again. But the right terminal can genuinely improve your workflow, especially as AI coding agents become a bigger part of how you work.

What is a terminal emulator?

A terminal emulator is software that emulates the old hardware terminals that connected to mainframe computers. Modern terminal emulators provide a graphical window where you run a shell (bash, zsh, fish, PowerShell) and interact with command-line programs.

The terminal emulator handles rendering, input, tabs, and visual features. The shell handles interpreting your commands. They’re separate things, and you can mix and match.

What matters for developers

Speed

A fast terminal makes everything feel responsive. GPU-accelerated terminals (Alacritty, Kitty, WezTerm) render text faster than CPU-based ones. This matters most when AI agents produce large amounts of output quickly.

Tabs and panes

Multiple sessions in one window. Essential when you’re working across projects. Some terminals offer splits (horizontal/vertical panes within a tab), which is useful for watching output in one pane while working in another.

Scrollback

How much output history you can scroll through. AI coding sessions generate a lot of output, so you need deep scrollback to review what happened earlier in a session.

Font rendering

Ligatures, emoji, true color (24-bit), and good font rendering make terminal output easier to read. Most modern terminals support these.

Customization

Themes, key bindings, opacity, blur effects. These are personal preference, but a terminal you enjoy looking at is one you’ll use more.

macOS

Terminal.app. The built-in macOS terminal. Basic but functional. No GPU acceleration and limited customization. Fine for light use.

iTerm2. The most popular third-party terminal on macOS. Feature-rich: splits, profiles, triggers, tmux integration, and search. Mature and stable. Can feel heavy next to newer options.

Alacritty. GPU-accelerated, minimal, and fast. Configured via a YAML/TOML file. No tabs or splits by design, so it’s meant to pair with a window manager or tmux. Cross-platform.

Kitty. GPU-accelerated with more built-in features than Alacritty (tabs, splits, image rendering). Extensible via Python. Cross-platform.

WezTerm. A GPU-accelerated terminal written in Rust. Tabs, splits, multiplexing, and Lua scripting. Cross-platform, with a good balance of speed and features.

crystl. A macOS terminal designed specifically for AI-assisted development with Claude Code. It organizes projects as gems with terminal sessions (shards), manages permission approvals through floating glass panels, and supports parallel agents via git worktree-backed isolated sessions. Not a general-purpose terminal. It’s purpose-built for the AI coding workflow.

Linux

GNOME Terminal and Konsole. Default terminals for GNOME and KDE. Functional and well-integrated with the desktop.

Alacritty, Kitty, and WezTerm. The same cross-platform options as macOS. Popular with developers who want speed and customization.

Tilix. A tiling terminal for GNOME. Built-in splits and session management without needing tmux.

Windows

Windows Terminal. Microsoft’s modern terminal. Tabs, splits, GPU-accelerated rendering, and theming. Supports PowerShell, CMD, WSL, and more. The clear default choice on Windows.

WezTerm and Alacritty. Cross-platform options that also run on Windows.

The AI coding agent factor

AI coding agents change what you need from a terminal. Traditional terminal features (tabs, speed, font rendering) still matter, but new requirements emerge:

  • Session organization. When you’re running multiple AI agents, you need more than tabs. You need project-level organization so you can see which agents belong to which project.
  • Approval management. AI agents ask for permission before acting. In a standard terminal, those prompts are just text in the output stream. You have to be looking at the right terminal to catch them.
  • Session persistence. AI conversations are valuable context. Close a terminal window and lose the conversation, and you lose that context.
  • Parallel session support. Running two AI agents on the same repo needs isolation (like git worktrees). Most terminals don’t help with this.
  • Keeping agents running. An agent that stalls on every approval, or runs out of queued work, isn’t really working. A terminal built for agents can queue a task backlog, auto-approve the safe operations, and push the decisions that actually need you to your phone. See how to run AI coding agents for longer.

These are the problems crystl was built to solve. If you’re using AI coding agents occasionally, any good terminal works. If they’re a core part of your daily workflow, a terminal designed for that workflow makes a real difference.

Recommendations

Occasional terminal use: Terminal.app (macOS), Windows Terminal, or your desktop’s default terminal.

Daily development: iTerm2 (macOS), Kitty or WezTerm (cross-platform), Windows Terminal.

Speed-focused: Alacritty with tmux for session management.

AI-heavy workflow on macOS: crystl for Claude Code sessions, plus a general-purpose terminal for everything else.