How rbterm compares to nine other terminals
Every claim on this sheet is a capability check or a measurement, and the trade-offs are written in both directions. 28 rows across five terminals, then a round-trip benchmark of 1000 samples per terminal on one machine.
Feature comparison
rbterm against the four terminals it gets compared to most often. Where a competitor is better, the row says so.
| Feature | rbterm | PuTTY | iTerm2 | Alacritty | kitty |
|---|---|---|---|---|---|
| Cross-platform binary | macOS / Linux / Win | Windows only | macOS only | All three | macOS / Linux |
| GPU-accelerated | raylib / OpenGL | GDI | Metal (macOS) | OpenGL | OpenGL |
| Built-in SSH | libssh (key + agent) | Built-in | Needs ssh CLI | Needs ssh CLI | Needs ssh CLI |
| SFTP upload / download | Built-in modal | Separate PSFTP | No | No | No |
| SSH key manager | Generate + install + delete | PuTTYgen (separate) | No | No | No |
| SSH port forwarding (in-app) | -L / -R / -D SOCKS5 | Manual -L/-R | Via ssh CLI | Via ssh CLI | Via ssh CLI |
| Tabs | Up to 16 | No | Unlimited | No (use tmux) | Unlimited |
| Split panes | Vertical + horizontal | No | Yes | No | Yes |
| Themes baked in | 252 palettes | Manual RGB | ~10 presets | TOML config | conf file |
| Fonts baked in | 37 monospace fonts | System fonts | System fonts | System fonts | System fonts |
| Sixel images | Native | No | Yes | No | No (kitty protocol) |
| Kitty image protocol | Native | No | No | No | Native |
| Session recording | GIF / WebP / MP4 / cast | Log to file | Replay (proprietary) | No | No |
| System-info HUD | Per-pane overlay | No | No | No | No |
| OSC 8 hyperlinks | Cmd+click | No | Yes | Regex URLs | Yes |
| OSC 133 prompt nav | Jump + gutter badges | No | Yes | No | Yes |
| Scrollback search | Live substring | No | Regex | Regex (vi mode) | Regex |
| Startup tab config | Settings Launch tab | No | Profiles + arrangements | No | startup_session |
| Quake-style global hotkey | Cmd+CapsLock | No | Hotkey window | No | No |
| Per-host cursor color | App-wide + per-host | Manual config | Per-profile | No | No |
| Ligature shaping | HarfBuzz + 7 fonts | No | Yes | Yes | Yes |
| Cinema pane effects | 19 presets (CRT, VHS…) | No | No | No | No |
| Single binary, zero deps | ≈19 MB | ~5 MB | ~180 MB .app | ~8 MB | Python runtime |
| Round-trip latency | 0.018 ms | —not compared here | —not compared here | —not compared here | —not compared here |
| Throughput (real-app flood) | 185 MB/s | —not compared here | 17 MB/s | 161 MB/s | 116 MB/s |
| Idle CPU | ~0.1% | —not compared here | —not compared here | —not compared here | —not compared here |
| Electron / web tech | None | None | None | None | None |
| Language | C99 | C | Obj-C | Rust | C + Python |
Head to head, in detail: PuTTY · iTerm2 · Alacritty · kitty · WezTerm · Ghostty · Windows Terminal · Warp · MobaXterm
Measured, not marketing
Snappiness is easy to claim and hard to prove, so rbterm ships the proof — and the script that reproduces it in any terminal.
Echo round-trip
Milliseconds, median of 1000 samples, lower is better. Logarithmic scale — the field spans three decades.
Bulk output
Megabytes per second, higher is better. Capture ~10 MB of a real full-screen animation and replay the identical bytes into each terminal.
0.018 ms median round-trip latency. On a tight loop of CSI 6n cursor-position queries — write the query, parse the reply, read the answer — rbterm clocks a 0.018 ms median round-trip. That is roughly 190× faster than kitty (3.470 ms) and about 1,200× faster than iTerm2 (21.288 ms) on the same machine.
And fastest at bulk output, too. rbterm ingests the replayed flood at 185 MB/s — ahead of Alacritty (161), ~1.6× kitty (116), and ~11× iTerm2 (17). Lowest latency and highest throughput.
It is not a cherry-picked demo. Run it yourself: tools/bench-here.sh auto-detects the host terminal and writes the numbers to a file you can diff against any other terminal. Combined with a ~0.1% idle CPU floor on macOS — even with SSH panes and the HUD active — rbterm stays out of your way whether it is working or waiting.
Method. tools/echo_bench.c writes an ANSI DSR query (CSI 6n), waits for the terminal's CSI r;c R reply and records the round-trip — parser plus PTY I/O, nothing else. 1000 samples per terminal, same machine, same session, August 2026. Tail figures: rbterm p99 0.045 ms / worst 0.079 ms; alacritty worst 7.470 ms; kitty worst 15.218 ms.
vs PuTTY
PuTTY is the terminal you learned on. It works, it's small, and it's been rock-solid since 1999. But it was designed for a world where you SSH into one host at a time and scp files separately.
- No tabs, no panes. Every host is a separate window. rbterm gives you 16 tabs with vertical + horizontal splits, each with its own PTY and theme.
- SSH + SFTP in one window. PuTTY needs a separate PSFTP program. rbterm has upload and download modals built into every SSH pane — pick a file, watch the progress toast.
- Theming is manual. PuTTY makes you set 22 RGB values in a dialog. rbterm ships 252 themes — click one, it applies to the active tab instantly.
- No images. Sixel, kitty graphics, inline images — PuTTY can't render any of them. rbterm handles both protocols natively.
- Windows-only. If you switch between macOS and Linux, PuTTY isn't there. rbterm builds on all three from the same source.
vs iTerm2
iTerm2 is the gold standard on macOS. It's mature, polished, and endlessly configurable. If you live exclusively on a Mac, it's hard to beat. rbterm makes different trade-offs:
- Cross-platform. iTerm2 is macOS-only. If you also work on Linux or Windows, rbterm is the same binary everywhere — same keybindings, same themes, same config.
- Everything is baked in. iTerm2 needs you to install fonts, download color schemes, configure profiles. rbterm ships 252 themes and 37 fonts inside the binary — scp it to a bare server and it works.
- Built-in SSH with SFTP. iTerm2 shells out to
ssh. rbterm connects via libssh directly, with per-host theme/font/HUD overrides and integrated file transfers. - Tiny footprint. iTerm2 is a ~180 MB macOS app bundle. rbterm is a ≈19 MB self-contained binary.
- Session recording to GIF/WebP/MP4. iTerm2 can replay sessions in its own format. rbterm records to standard formats you can share anywhere.
- System-info HUD. Hostname, IP, CPU load, memory, disk — overlaid per-pane, including for SSH sessions (polled over the connection). iTerm2 has nothing equivalent built in.
vs Alacritty
Alacritty's philosophy is "do one thing well" — be a fast GPU terminal and delegate everything else to tmux. That's a valid design. rbterm's philosophy is "one binary, batteries included."
- Tabs, panes, search — no tmux required. Alacritty has no tabs and no splits — you need tmux or screen for those. rbterm has them built in, plus in-scrollback search.
- Built-in SSH. Alacritty doesn't even know what SSH is. rbterm connects to hosts directly, manages saved hosts, and transfers files over SFTP.
- Inline images. Alacritty deliberately doesn't support image protocols. rbterm renders sixel and kitty images natively.
- 252 themes, 37 fonts, zero config. Alacritty requires a TOML config file and font installation. rbterm works out of the box with everything embedded.
- Session recording. Alacritty can't record. rbterm captures to GIF, WebP, MP4, WebM, APNG, or asciicast.
- Startup tab configuration. Alacritty opens one window. rbterm's Settings Launch tab lets you define which local and SSH tabs open automatically when you start.
vs kitty
kitty is the closest competitor in feature set. It has tabs, splits, image rendering, and a scripting layer. The differences are in architecture and philosophy:
- C99 vs C + Python. kitty's core is C, but its UI and extension system run on Python. rbterm is pure C99 — no runtime interpreter, no garbage collector, no Python dependency chain.
- Built-in SSH with SFTP. kitty has
kitten sshfor shell integration, but it still shells out tossh. rbterm connects via libssh natively and has built-in upload/download modals. - Self-contained binary. kitty installs Python packages alongside the binary. rbterm is one ≈19 MB executable — scp it anywhere and run.
- Both image protocols. kitty only supports its own image protocol. rbterm supports both sixel and the kitty protocol, so tools targeting either standard work.
- 252 themes + 37 fonts embedded. kitty needs you to install themes via
kitten themesand fonts via your OS. rbterm ships them all inside the binary. - System-info HUD. rbterm overlays hostname, IP, load, mem, disk per-pane — including over SSH. kitty has no equivalent.
- Native recording. rbterm records panes to GIF/WebP/MP4 with built-in encoders. kitty doesn't record.
- Windows support. kitty doesn't run on Windows. rbterm does (ConPTY backend).
vs WezTerm
WezTerm is the heavyweight of the modern crop — Rust, wgpu rendering, a Lua config language, and built-in multiplexing that survives disconnects. If you want a programmable terminal and a multiplexer in one, it's excellent. rbterm aims somewhere different: a single binary you don't have to script.
- Config: GUI vs Lua. WezTerm is configured by writing Lua. rbterm has a Settings modal and an
~/.config/rbterm/config.ini— no programming language to learn, no callbacks to wire up. - Built-in SSH UI, not just a CLI. WezTerm has SSH and multiplexing domains, but driving them is config-and-command work. rbterm gives you a connect form, a key manager, SFTP modals, port forwarding, and per-host overrides in the UI itself.
- Cinema effects. rbterm ships 19 per-pane visual presets (CRT, VHS, and more). WezTerm focuses on faithful, fast rendering and leaves the eye-candy out.
- Footprint. rbterm is a ≈19 MB single binary with everything embedded. WezTerm's install is considerably larger.
vs Ghostty
Ghostty is the trendy newcomer — a native, fast, single-binary terminal with great defaults and a strong focus on platform-native feel on macOS and Linux. It's genuinely good. The differences are about scope and reach:
- Windows. Ghostty doesn't ship a Windows build. rbterm has a real ConPTY backend and runs as a single
.exeon Windows 10 1809+. - Built-in SSH + SFTP. Ghostty is a terminal; SSH is whatever you run inside it. rbterm connects via libssh directly, with a key manager, file transfers, and tunneling.
- Recording. rbterm records panes to GIF / WebP / MP4 / asciicast with built-in encoders. Ghostty leaves that to external tools.
- System-info HUD. Per-pane hostname, IP, load, mem, disk — including over SSH. Ghostty has no equivalent.
vs Windows Terminal
Windows Terminal is Microsoft's modern default — tabs, panes, GPU text rendering, and tight integration with PowerShell, WSL, and cmd. On Windows it's the obvious starting point. rbterm offers a leaner, more portable alternative:
- One file, no Store. Windows Terminal is an MSIX app delivered through the Microsoft Store / App Installer. rbterm is a single ≈19 MB
.exeyou can drop on a machine and run — same binary concept as on macOS and Linux. - Built-in SSH. Windows Terminal launches whatever shell or
sshyou point a profile at. rbterm has SSH, SFTP, a key manager, port forwarding, and per-host layouts built into the app. - Same everywhere. Windows Terminal is Windows-only. rbterm gives you the same tabs, themes, and keybindings on macOS and Linux too.
- Images + recording + HUD. Sixel and kitty graphics, session recording, and a per-pane system-info overlay — all built in.
vs Warp
Warp is the slick, AI-forward terminal — blocks, command suggestions, and cloud-backed features wrapped in a polished UI. If those workflows click for you, it's compelling. rbterm sits at the opposite end of the trust spectrum:
- Open vs closed. Warp is closed-source. rbterm is MIT-licensed C99.
- No account, no login. Warp gates features behind sign-in and cloud services. rbterm needs no account and works fully offline.
- No telemetry. Warp's AI features send data to the cloud. rbterm sends nothing — no analytics; the only network call is the optional update-manifest check.
- Cross-platform single binary. rbterm runs on macOS, Linux, and Windows from one ≈19 MB executable, with built-in SSH/SFTP and recording.
vs MobaXterm
MobaXterm is the closest peer to rbterm's "SSH workstation" idea — tabbed SSH, an embedded SFTP browser, X11 forwarding, tunnels, and a session manager, all on Windows. If your whole life is remote Windows admin, it's a powerhouse. rbterm covers the same core, smaller and everywhere:
- The shared ground. rbterm also gives you tunneling (-L / -R / -D SOCKS5), SFTP up/download, a key manager, and saved per-host sessions with layouts — the same workstation toolkit.
- Cross-platform, not Windows-only. MobaXterm is a Windows application. rbterm is the same binary on macOS, Linux, and Windows.
- Tiny, not bundled. MobaXterm ships a large bundle of integrated tools (Cygwin utilities, X server, plugins). rbterm is a ≈19 MB single binary with no installer sprawl.
The rbterm pitch
One binary. Every platform. Batteries included.
rbterm is what you get when you stop asking "which combination of terminal + multiplexer + SSH client + file transfer tool + theme manager + font installer should I use?" and just ship all of it in ≈19 MB of C99. It won't replace a decade of tmux muscle memory overnight, and it doesn't try to be an extensible platform like kitty. What it does is give you tabs, splits, a 1,000,000-line scrollback per pane, a full SSH client with port forwarding (-L / -R / -D SOCKS5), SFTP, images, recording, 252 themes, 37 fonts, and a system-info HUD in a single executable you can scp to any machine and run.
And it's fast where it counts: 0.018 ms median round-trip latency — roughly 190× quicker than kitty and about 1,200× quicker than iTerm2 on the same CSI 6n benchmark — while idling at about 0.1% CPU on macOS even with SSH panes and the HUD running. Measured, reproducible, MIT-licensed, offline, and with no account or telemetry.
Try it against whatever you use now
The build is one file for macOS, Windows and Linux, MIT licensed, ≈19 MB. If you run agents in your terminal, the Agents sheet shows the per-tab status badges and the rbterm @ remote control they are built on.