Skip to content
← All results

Mac Studio, 50,000 messages

Mac Studio (Apple M1 Ultra), macOS 15.460 Hz display50,000-message mailboxOctober 14, 2026

Submitted by @wes, who works on Spool. Imported from where it was first published; raw output not yet in the repository.

Same machine: 250,000 messages

◐ Not every client held the whole mailbox. Mailflare: 300 messages, the newest 50 in each of six folders; Thunderbird: about 95% (everything but Junk and Trash). Their numbers are for a smaller job than everyone else's, and are marked ◐.

Open a message

Click a message in the list until the reader has finished drawing it.

  1. Spool55 ms (best)
  2. Thunderbird◐ (partial mailbox)56 ms (best)
  3. Apple Mail73 ms
  4. MailMate150 ms
  5. Mailflare◐ (partial mailbox)1151 ms
  6. Canary Mail181 ms

2 clients are within one frame (17 ms) of the lowest, closer than the instrument can tell apart, so all of them are marked best.

  1. 1Mailflare. Opening a message downloads its body from the server the first time, where the other clients already have it.

Next message

Press ↓ until the next message has finished drawing.

  1. Spool55 ms (best)
  2. Apple Mail77 ms
  3. Canary Mail181 ms
  4. Mailflare◐ (partial mailbox)273 ms
  5. Thunderbird◐ (partial mailbox)305 ms
  6. MailMate423 ms

Type a word into the search field until the results have finished drawing. Typing it is part of the time, about 80 ms.

  1. Spool61 ms (best)
  2. Apple Mail1120 ms
  3. MailMate2185 ms
  4. Thunderbird◐ (partial mailbox)3372 ms
  5. Mailflare◐ (partial mailbox)4428 ms
  6. Canary Mail519 ms
  1. 1Apple Mail. Apple Mail searches through Spotlight. The time is what a person waits for, not a comparison of search engines.
  2. 2MailMate. MailMate searches when Return is pressed, not as you type, so its time includes the Return.
  3. 3Thunderbird. The Quick Filter, Thunderbird's search-as-you-type, looks at sender, recipients and subject by default but not the message body, which is less work than full-text search.
  4. 4Mailflare. Searches subject, sender and preview in the messages it has downloaded, never the full text or the server, and waits 200 ms after a keystroke before it starts.

Launch

Open the app until the inbox is on screen and has stopped changing. Warm: the app has run before and its files are cached.

  1. Spool282 ms (best)
  2. Mailflare◐ (partial mailbox)521 ms
  3. Canary Mail1,620 ms
  4. Apple Mail1,691 ms
  5. MailMate1,909 ms
  6. Thunderbird◐ (partial mailbox)2,171 ms

Quit

Ask the app to quit, as the menu item does, until its process has exited. The process is checked every 2 ms.

  1. Spool28 ms (best)
  2. Canary Mail44 ms
  3. Mailflare◐ (partial mailbox)48 ms
  4. Thunderbird◐ (partial mailbox)97 ms
  5. MailMate196 ms
  6. Apple Mail218 ms

Scroll

Thirty notches of the scroll wheel until the list stops moving. Posting the thirty notches takes about 240 ms of it.

  1. Canary Mail305 ms (best)
  2. Apple Mail306 ms (best)
  3. MailMate319 ms (best)
  4. Mailflare◐ (partial mailbox)321 ms (best)
  5. Spool324 ms
  6. Thunderbird◐ (partial mailbox)571 ms

4 clients are within one frame (17 ms) of the lowest, closer than the instrument can tell apart, so all of them are marked best.

Memory

Physical footprint after the tests, as Activity Monitor counts it, including the helper processes macOS charges to the app (WebKit, GPU, networking).

  1. Spool144 MB (best)
  2. Mailflare◐ (partial mailbox)158 MB
  3. MailMate219 MB
  4. Apple Mail260 MB
  5. Canary Mail407 MB
  6. Thunderbird◐ (partial mailbox)1,148 MB

Idle CPU

Share of one core used over ten seconds of the app sitting idle after the tests.

  1. MailMate0.2% (best)
  2. Spool1.1%
  3. Apple Mail1.7%
  4. Canary Mail2.1%
  5. Mailflare◐ (partial mailbox)13.4%
  6. Thunderbird◐ (partial mailbox)4.1%
  1. 1Mailflare. Includes re-checking the newest 50 messages in every folder once a minute.

Every number

Medians. For a test timed from the screen, the number is when the window stopped changing, and “first” beneath it is when it started to. Quit is timed to the process exiting.

Every result in this run
TestApple Mail16.0Canary Mail5.26Mailflare◐1.6MailMate1.13.2Spool0.1.11Thunderbird◐144
Open a message73 ms181 ms151 ms150 ms55 ms (best)56 ms (best)
Next message77 ms181 ms273 ms423 ms55 ms (best)305 ms
Search120 ms519 ms428 ms185 ms61 ms (best)372 ms
Launch1,691 ms1,620 ms521 ms1,909 ms282 ms (best)2,171 ms
Quit218 ms44 ms48 ms196 ms28 ms (best)97 ms
Scroll306 ms (best)305 ms (best)321 ms (best)319 ms (best)324 ms571 ms
Memory260 MB407 MB158 MB219 MB144 MB (best)1,148 MB
Idle CPU1.7%2.1%3.4%0.2% (best)1.1%4.1%
First syncnot ranked————8.0 sits own count—

Notes on this run

  • Mailflare held 300 messages, the newest 50 in each of six folders. Mailflare fetches only the newest 50 messages in each folder, and older mail as the list is scrolled. The other clients held all 50,000.
  • Thunderbird held about 95% (everything but Junk and Trash). Thunderbird keeps no offline copy of Junk and Trash by default. The rest of the mailbox it held in full.
  • Mailflare was measured later. On 30 October, on the same machine and the same server; the other five on 14 October.

The setup

The instrument on this machine

The instrument adds about 28 ms to every time it reads off this machine's screen; the fastest anything can measure here is around 45 ms. The same for every client, so it cancels in a comparison. As published with these results: one or two frames of the 60 Hz display, plus capture. The raw calibration was not kept with them.

Mailbox
50,000 messages, corpus spool-bench-2026-10 — not checked against a published digestThe generator this repository started from, before it was made deterministic: the same messages, folders and seed as mailbench-v1, but dated from the day it was generated and with Spool-named MIME boundaries and one header. Close to mailbench-v1, and still a different mailbox: runs on the two do not go in one table.
Machine
Mac Studio, Apple M1 Ultra, on mains power
Display
1920 × 1080 at 60 Hz
Window
1400x900 points, the same for every client
Runs
20 per test (10 for scroll, 5 for launch and quit, after one unrecorded launch)
Search term
postmortem
Harness
spool/bench, October 2026 (before it moved here)
Raw output
Not in the repository yet. Transcribed from Spool's benchmark page, where these runs were first published. The raw harness output is on the machine that measured them and has not been added to this repository yet; until it is, these are the only numbers here that CI cannot regenerate from the instrument's own lines. Where it was first published.

See a problem with this run? Open an issue about it.