I use Ghostty as my primary terminal emulator. I’ve never had any issues with it—it’s fast and displays icons and images flawlessly.
While Alacritty, Kitty, and WezTerm have all pushed terminal emulation forward, each has a few weak spots that Ghostty addresses particularly well.
Another popular terminal emulator in the Wayland (Linux) world is foot. Its tagline is: A fast, lightweight and minimalistic Wayland terminal emulator.
I became interested in exploring whether there is a significant difference in resource usage between Ghostty and foot.
Architectural Differences
Before getting into memory utilisation, let’s briefly look at the architectures of the two applications.
Ghostty runs in a single process. No matter how many terminal windows you open, they all run inside the same process and share resources.
foot, on the other hand, has a client–server architecture. When installed, it provides three executables: foot, footclient, and footserver.
Foot(standalone mode) runs as a single process, with each window being its own instance.Foot clientpresents individual terminal windows and requiresFoot Serverthe backend.Foot Serverhas no UI; it acts as the backend for allFoot Clientinstances. MultipleFoot Clientwindows share resources via the server, reducing memory overhead.
As you can see, the foot has a more flexible and slightly more complex architecture, offering both standalone and client–server modes.
Memory Consumption
Here is the memory consumption as I open several windows and run a small terminal command in each:
| Windows | Ghostty | foot (client/server) | foot (standalone) |
|---|---|---|---|
| 1 | 229 MB | 43 MB | 35 MB |
| 5 | 260 MB | 125 MB | 175 MB |
| 10 | 300 MB | 225 MB | 350 MB |
| 25 | 423 MB | 538 MB | 875 MB |
These numbers don’t tell the full story. Foot’s memory consumption is predictable and linear—opening and closing windows immediately reflects in the memory usage.
Ghostty is not as straightforward. Its memory consumption mostly goes up over time and does not always decrease after closing windows. I believe this is due to a memory leak. The Ghostty version I am using is 1.2.3-2.1 from cachyos-extra-znver4 on Arch Linux. I’ve tested Ghostty on macOS as well, and it does not exhibit this memory leak there.
It appears I have run into this issue: https://github.com/ghostty-org/ghostty/issues/5491