WezTerm vs Kitty
Two GPU-accelerated terminals for power users. Lua scripting vs the Kitty graphics protocol. Both fast, both extensible, different ecosystems.
The short answer
WezTerm over Kitty for most cases. WezTerm's Lua configuration system is more flexible than Kitty's config format, the built-in multiplexer eliminates the need for tmux, and cross-platform.
- Pick WezTerm if want Lua-powered dynamic configuration, a built-in multiplexer to replace tmux, or need Windows support
- Pick Kitty if want inline image display via the Kitty graphics protocol, prefer a simpler config format, or use tools that leverage Kitty's keyboard protocol
- Also consider: Both support the Kitty graphics protocol now. The choice often comes down to multiplexer (WezTerm) vs ecosystem/protocol innovation (Kitty).
— Nice Pick, opinionated tool recommendations
GPU Terminals for Power Users
Both WezTerm and Kitty are GPU-accelerated terminals aimed at developers who care about performance and customization. Neither is a casual choice. If you're considering these, you've outgrown your default terminal.
The key difference: WezTerm leans into programmable configuration (Lua), while Kitty leans into protocol innovation (graphics, keyboard).
WezTerm: The Programmable Terminal
WezTerm's Lua config means your terminal setup is a program, not a config file. Dynamic behavior, custom key handlers with logic, event-driven actions, and a built-in multiplexer that makes tmux optional.
The multiplexer is the standout feature. Native splits, tabs, and workspaces without the overhead of tmux. SSH multiplexing lets you manage remote sessions natively.
Cross-platform support is genuine. macOS, Linux, and Windows all work well.
Kitty: Protocol Innovator
Kitty's graphics protocol is a real standard that other terminals are adopting. Display images, plots, and rich content inline in your terminal. Tools like ranger, neovim plugins, and plotting libraries use it.
The keyboard protocol is another innovation: proper key reporting that distinguishes Ctrl+I from Tab, something most terminals get wrong. Kitty's kittens (extensions) provide useful utilities: SSH with automatic shell integration, file transfer, Unicode input.
Performance is excellent. Written in C and Python, with OpenGL rendering.
The Configuration Trade-off
Kitty uses a traditional config file format. Clean, readable, well-documented, but static. You can't have conditional logic, dynamic values, or programmatic behavior.
WezTerm's Lua config is more powerful but also more complex. If you just want to set colors and key bindings, Kitty's config is simpler. If you want your terminal to adapt dynamically, WezTerm wins.
Quick Comparison
| Factor | WezTerm | Kitty |
|---|---|---|
| Configuration | Lua scripting | Config file |
| Graphics Protocol | Supports Kitty protocol | Created the protocol |
| Built-in Multiplexer | Yes (native) | Basic (layouts) |
| Extensions | Lua scripts | Kittens (Python) |
| Performance | Fast (Rust) | Fast (C + Python) |
| Windows Support | Yes | No |
| Keyboard Protocol | Standard | Enhanced (Kitty protocol) |
| SSH Integration | Multiplexed SSH | Kitty SSH kitten |
The Verdict
Use WezTerm if: You want Lua-powered dynamic configuration, a built-in multiplexer to replace tmux, or need Windows support.
Use Kitty if: You want inline image display via the Kitty graphics protocol, prefer a simpler config format, or use tools that leverage Kitty's keyboard protocol.
Consider: Both support the Kitty graphics protocol now. The choice often comes down to multiplexer (WezTerm) vs ecosystem/protocol innovation (Kitty).
WezTerm vs Kitty: FAQ
Is WezTerm or Kitty better?
WezTerm is the Nice Pick. WezTerm's Lua configuration system is more flexible than Kitty's config format, the built-in multiplexer eliminates the need for tmux, and cross-platform support is better. Kitty's graphics protocol is excellent for image-heavy workflows, but WezTerm is the more complete package.
When should you use WezTerm?
You want Lua-powered dynamic configuration, a built-in multiplexer to replace tmux, or need Windows support.
When should you use Kitty?
You want inline image display via the Kitty graphics protocol, prefer a simpler config format, or use tools that leverage Kitty's keyboard protocol.
What's the main difference between WezTerm and Kitty?
Two GPU-accelerated terminals for power users. Lua scripting vs the Kitty graphics protocol. Both fast, both extensible, different ecosystems.
How do WezTerm and Kitty compare on configuration?
WezTerm: Lua scripting. Kitty: Config file. WezTerm wins here.
Are there alternatives to consider beyond WezTerm and Kitty?
Both support the Kitty graphics protocol now. The choice often comes down to multiplexer (WezTerm) vs ecosystem/protocol innovation (Kitty).
WezTerm's Lua configuration system is more flexible than Kitty's config format, the built-in multiplexer eliminates the need for tmux, and cross-platform support is better. Kitty's graphics protocol is excellent for image-heavy workflows, but WezTerm is the more complete package.
Related Comparisons
Disagree? nice@nicepick.dev