Skip to content

An open benchmark for email clients

Mail clients, measured the same way.

One mailbox, one machine, one instrument that watches the screen — the time from a click or a keypress until the pixels stop changing. The harness, the mailbox and every raw result are on GitHub. Run it on your Mac, add your client, send a pull request.

6 clients measured · 8 defined · 2 runs

Latest results

The most recent run on each mailbox size. Lower is better throughout; the best in each test is marked, whoever has it.

Mailbox

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. Every number, and the notes →

◐ 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.

What makes it fair

The same mailbox, byte for byte

A generated mailbox of 50,000 or 250,000 messages, identical on every machine that generates it and checked against a published digest. Served by Dovecot on the same Mac, so no client is helped or hurt by a network.

Measured from outside

A small tool posts a real click or keypress and watches the window through ScreenCaptureKit. It needs nothing from the app under test, which is the only way to put different apps in one table.

Finished, not started

Each time runs from the event until the window stops changing. An app that paints a spinner quickly and the message slowly gets the slow number.

A frame is the resolution

The screen is read once a frame, so results within one frame of the fastest are a tie, and are shown as one. The instrument’s own overhead is measured on every machine and published beside its results.

Every client does the whole job

Each one is set to keep the full mailbox locally. Where a client cannot, its numbers are marked, next to the numbers, as a smaller job than everyone else’s.

Numbers nobody can edit

The published numbers are generated from the instrument’s raw output, which is committed with them. CI regenerates them on every change and fails if one differs.

The whole method, including what it cannot measure →

Who runs this

Started by the author of one of the clients here.

mailbench began as the benchmark harness for Spool, written by @wes. That is a conflict of interest, and this project is set up to make it not matter: the instrument treats every client identically and from the outside, the mailbox is the same bytes everywhere, every published number is regenerated from raw output by CI, and every run says who submitted it and which clients they work on.

If you find anything that favours one client — a setting, a coordinate, a word on this site — that is a bug. Open an issue. Client authors are especially welcome to maintain their own client’s definition.