← Spool

Benchmarks

How fast is Spool?

Spool, Apple Mail, MailMate, Thunderbird and Canary on the same Mac, reading the same 50,000-message mailbox from the same local server. The times are taken from the screen: from a click or keypress until the pixels stop changing.

55 msto open a message
61 msto search 50,000 messages
0.28 sfrom launch to a usable inbox
39 sto sync 250,000 messages

Spool 0.1.11Apple Mail 16.0, MailMate 1.13.2, Thunderbird 144, Canary 5.26Mac Studio (M1 Ultra), macOS 15.4Lower is better throughout.

Open a message

Click a conversation in the list until it has finished drawing.

  1. Spool55 ms
  2. Thunderbird56 ms
  3. Apple Mail73 ms
  4. MailMate150 ms
  5. Canary181 ms

Next message

Press ↓ until the next message has finished drawing.

  1. Spool55 ms
  2. Apple Mail77 ms
  3. Canary181 ms
  4. Thunderbird305 ms
  5. MailMate423 ms

Search

Type a word until the results have finished drawing.

  1. Spool61 ms
  2. Apple Mail120 ms
  3. MailMate185 ms
  4. Thunderbird372 ms
  5. Canary519 ms

Launch

Open the app until the inbox is on screen and still.

  1. Spool282 ms
  2. Canary1,620 ms
  3. Apple Mail1,691 ms
  4. MailMate1,909 ms
  5. Thunderbird2,171 ms

Quit

Quit until the process has exited.

  1. Spool28 ms
  2. Canary44 ms
  3. Thunderbird97 ms
  4. MailMate196 ms
  5. Apple Mail218 ms

Scroll

Thirty notches of the scroll wheel until the list stops moving.

  1. Canary305 ms
  2. Apple Mail306 ms
  3. MailMate319 ms
  4. Spool324 ms
  5. Thunderbird571 ms

Memory

Physical footprint after use, including WebKit helper processes.

  1. Spool144 MB
  2. MailMate219 MB
  3. Apple Mail260 MB
  4. Canary407 MB
  5. Thunderbird1,148 MB

Idle CPU

Share of one core used while sitting idle.

  1. MailMate0.2 %
  2. Spool1.1 %
  3. Apple Mail1.7 %
  4. Canary2.1 %
  5. Thunderbird4.1 %

Where Spool does not win: scrolling finishes about one frame (18 ms) behind Canary and Apple Mail, and MailMate uses less CPU sitting idle. Both are on the list.

At 250,000 messages

The same measurements against a mailbox five times the size, with 150,000 messages in the inbox. Opening a message and moving to the next take exactly as long as they do at 50,000. Search, launch and memory grow with the mailbox, but slowly: five times the mail costs a search 70 ms and launch 18 ms.

Spool 0.1.1150,000 messages250,000 messages
Open a message55 ms55 ms
Next message55 ms55 ms
Search61 ms131 ms
Launch to a usable inbox282 ms300 ms
Quit28 ms41 ms
Memory144 MB183 MB
First sync, empty to complete8 s39 s

How this was measured

  • One mailbox for everyone. A generated mailbox of 50,000 messages (threads, lists, HTML and plain text) served by Dovecot over IMAP on the same Mac, so no client is helped or hurt by a network. Every client synced all of it before anything was measured.
  • Measured from outside. A small tool posts a real mouse or keyboard event and watches the window through ScreenCaptureKit. It knows nothing about the app under test and needs no cooperation from it, which is the only way to put five different apps in one table.
  • “Finished”, not “started”. Each time is from the event until the window stopped changing. An app that paints a spinner quickly and the message slowly gets the slow number.
  • Medians. 20 runs for each action (10 for scroll, 5 for launch and quit), median reported. Same window size and position for every client.
  • The instrument adds about 28 ms to every time taken from the screen, the same for every app: one or two frames of a 60 Hz display, plus capture. The fastest an action can measure here is around 45 ms. Quit is timed to the process exiting, not from the screen, so it carries none of that.
  • Memory is physical footprint, the number Activity Monitor shows, including the WebKit processes each client renders HTML mail in. Idle CPU is ten seconds of the client doing nothing.
  • Search includes typing the query (about 80 ms of it). MailMate searches when Return is pressed, so its time includes the Return. Thunderbird’s Quick Filter, its search-as-you-type, looks at sender, recipients and subject by default but not the message body, which is less work than the others do; the rest search the full text.
  • Each client as it ships, with two exceptions: Canary’s Copilot panel was closed and its “Discover” cards dismissed, so its reader had the same room as everyone else’s. Thunderbird keeps no offline copy of Junk and Trash by default; the other 95% of the mailbox it had in full.
  • Launch is warm: the app has run before and macOS has its files cached, as it does for an app you use every day. “Ready” is when the message list stopped changing.

Not the same numbers as the Spool page

The microseconds on the product page are the app timing its own work from inside — a frame build, a query against its own index. Nothing like them can be taken out of another client, so they are not in any comparison here. These are milliseconds because they include the input stack, the window server and the display: everything between your hand and the pixels, which is the part a person actually waits for.

Measured October 2026. The harness and the mailbox generator are part of Spool’s source, which is private for now — until it is published, the way to check these numbers is to run Spool next to the mail app you use.