Skip to content
← All results

Mac Studio, 250,000 messages

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

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

Same machine: 50,000 messages

◐ Not every client held the whole mailbox. Mailflare: 300 messages at the start, 600 by the end; 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. Spool56 ms (best)
  2. Thunderbird◐ (partial mailbox)74 ms
  3. Canary Mail121 ms
  4. MailMate139 ms
  5. Apple Mail154 ms
  6. Mailflare◐ (partial mailbox)1158 ms
  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. Spool54 ms (best)
  2. Canary Mail171 ms
  3. Apple Mail180 ms
  4. Thunderbird◐ (partial mailbox)339 ms
  5. MailMate454 ms
  6. Mailflare◐ (partial mailbox)1507 ms
  1. 1Mailflare. Mailflare's next message is unexplained. Because it holds about the same few hundred messages at either size, its numbers here and at 50,000 differ by noise and by things not yet pinned down, not by scale: moving to the next message took 507 ms here against 273 ms at 50,000, and nobody yet knows why.

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

  1. Spool134 ms (best)
  2. Apple Mail1254 ms
  3. Thunderbird◐ (partial mailbox)2433 ms
  4. MailMate3440 ms
  5. Mailflare◐ (partial mailbox)4458 ms
  6. Canary Mail524 ms
  1. 1Apple Mail. Apple Mail searches through Spotlight. The time is what a person waits for, not a comparison of search engines.
  2. 2Thunderbird. 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.
  3. 3MailMate. MailMate searches when Return is pressed, not as you type, so its time includes the Return.
  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. Spool321 ms (best)
  2. Mailflare◐ (partial mailbox)520 ms
  3. Apple Mail724 ms
  4. Canary Mail1,737 ms
  5. MailMate3,376 ms
  6. Thunderbird◐ (partial mailbox)3,603 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. Mailflare◐ (partial mailbox)40 ms (best)
  2. Spool42 ms (best)
  3. Canary Mail74 ms
  4. Apple Mail116 ms
  5. Thunderbird◐ (partial mailbox)128 ms
  6. MailMate341 ms

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

Scroll

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

  1. Spool321 ms (best)
  2. Canary Mail328 ms (best)
  3. Mailflare◐ (partial mailbox)331 ms (best)
  4. MailMate337 ms (best)
  5. Apple Mail343 ms
  6. Thunderbird◐ (partial mailbox)580 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. Spool129 MB (best)
  2. Mailflare◐ (partial mailbox)143 MB
  3. Canary Mail318 MB
  4. Apple Mail344 MB
  5. MailMate548 MB
  6. Thunderbird◐ (partial mailbox)1,040 MB

Idle CPU

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

  1. MailMate0.1% (best)
  2. Spool0.6%
  3. Mailflare◐ (partial mailbox)10.9%
  4. Thunderbird◐ (partial mailbox)2.5%
  5. Apple Mail224.3%
  6. Canary Mail2163.0%
  1. 1Mailflare. Includes re-checking the newest 50 messages in every folder once a minute.
  2. 2Apple Mail, Canary Mail. Idle CPU was taken straight after the tests. Apple Mail and Canary were both still working at that point — Apple Mail at a quarter of a core, Canary at more than one and a half — and the numbers say so rather than waiting until they stopped.

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◐158
Open a message154 ms121 ms158 ms139 ms56 ms (best)74 ms
Next message180 ms171 ms507 ms454 ms54 ms (best)339 ms
Search254 ms524 ms458 ms440 ms134 ms (best)433 ms
Launch724 ms1,737 ms520 ms3,376 ms321 ms (best)3,603 ms
Quit116 ms74 ms40 ms (best)341 ms42 ms (best)128 ms
Scroll343 ms328 ms (best)331 ms (best)337 ms (best)321 ms (best)580 ms
Memory344 MB318 MB143 MB548 MB129 MB (best)1,040 MB
Idle CPU24.3%163.0%0.9%0.1% (best)0.6%2.5%
First syncnot ranked————39 sits own count—

Notes on this run

  • Mailflare held 300 messages at the start, 600 by the end. Mailflare fetches only the newest 50 messages in each folder; scrolling the inbox during the tests made it fetch 300 more. The other clients held all 250,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.
  • One client at a time. Each was the only mail client running while it was measured, after it had finished checking the server on launch.
  • Idle CPU was taken straight after the tests. Apple Mail and Canary were both still working at that point — Apple Mail at a quarter of a core, Canary at more than one and a half — and the numbers say so rather than waiting until they stopped.
  • Mailflare's next message is unexplained. Because it holds about the same few hundred messages at either size, its numbers here and at 50,000 differ by noise and by things not yet pinned down, not by scale: moving to the next message took 507 ms here against 273 ms at 50,000, and nobody yet knows why.
  • Mailflare was measured later. On 30 October, on the same machine and the same server; the other five on 15 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
250,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.