MailSlurp is a platform.
You might need a fixture.

MailSlurp is a full email platform: sending and receiving, SMTP and IMAP access, permanent mailboxes, phone numbers in two countries. If your suite creates an inbox, waits for an OTP or a link, and asserts — you're pricing a platform to do a fixture's job. Here's the honest breakdown.

one flat price — no metered add-ons to model
CHOOSE MAILFIXTURE IF
CHOOSE MAILSLURP IF

The numbers, side by side

Their base plans below are from their live pricing page; metered add-ons bill on top of the base fee. Ours are just the price.
MAILFIXTUREMAILSLURP
Free plan 100 messages/mo, forever — commercial use OK Personal use only; limits unpublished
Entry paid plan $15/mo, commercial use included $19.99/mo — non-commercial use only
Cheapest plan allowing commercial use $15/mo $69/mo (Pro)
Custom inbox domains Included from $15/mo Growth plan — $129.99/mo
Team members Unlimited, on every plan Growth+; extra seats are a paid add-on
Cost beyond the base plan $3.50 per extra 1k messages — that's the whole list Metered: receiving from $0.99/1k, inbox creation from $3.00/1k, storage from $0.75/GB/mo
MCP server for AI agents Built in — remote, every plan No first-party server (third-party bridges)
OTP & link extraction Automatic on every message — ranked OTP candidates, links classified verify/reset/unsubscribe On-demand endpoints per email; link extraction from HTML parts only
Spam & auth checks on received mail Automatic: SpamAssassin score with rule breakdown, structured SPF/DKIM/DMARC verdicts Yes — PASS/GREY/FAIL verdicts via AWS SES scanning
Virus scanning No Yes — part of the same analysis
Message storage Deletes itself — 3–30 days by plan, by design Permanent inboxes; storage metered per GB
SMS testing US numbers, included on paid plans US + GB, $3.99/number/mo + $0.05 per SMS — sending too
Sends mail from its infrastructure Never — receive-only by design Yes: full sending, SMTP & IMAP access
mailslurp numbers from app.mailslurp.com/pricing, free tier from mailslurp.com/support/free-plan-limitations, sms from mailslurp.com/docs/txt-sms, analysis from mailslurp.com/guides/virus-and-spam-detection, extraction from mailslurp.com docs — re-checked jul 9, 2026. if they've changed, trust their pages over ours.

Read the table honestly

Several rows up there favor MailSlurp, and we left them in. It is genuinely the bigger product: sending as well as receiving, SMTP and IMAP endpoints your existing mail client code can talk to, permanent mailboxes, virus scanning, phone numbers in the UK as well as the US — with SMS sending and toll-free variants we don't offer. If your suite needs to reply to a message, drive a real SMTP client, or keep a mailbox alive for months, we are disqualified by design, not by omission.

The rows that favor us are about pricing shape as much as price. Inbox-per-test is the pattern that makes email tests reliable — and under metered inbox-creation pricing, that pattern has a marginal cost your CI bill grows with. On MailFixture, inboxes are free to create on every plan (within the active caps), because disposable inboxes are the product, not an add-on. Same with people: whoever is debugging the flaky login spec at 6pm has their own sign-in, on every plan, because we count messages, not seats.

And the last two rows are one philosophy seen from two sides. We never send mail — no reply, no forward, no SMTP client anywhere in the codebase — so our IPs can't land on a sending blocklist and no bug of ours can ever send email with your domain on it. And your test mail deletes itself on a schedule (3–30 days by plan) instead of accruing as metered storage, because a fixture's job is to exist for the duration of the test, then get out of the way.

What migrating actually looks like

For receiving suites the concepts map one-to-one: an inbox is an inbox, and your waitForLatestEmail + parse becomes a single long-poll that returns the OTP or classified link directly. Same test, fewer moving parts:

signup.spec.ts · Playwright
const mail = new MailFixture(); // reads MAILFIXTURE_API_KEY

const inbox = await mail.createInbox({ ttlSeconds: 900 });
await page.fill('#email', inbox.address);
await page.click('text=Send code');

const otp = await inbox.waitForOtp({ timeout: 30_000 }); // server-side long-poll
await page.fill('#otp', otp);

Fair questions

Is MailFixture a drop-in replacement for MailSlurp?
No — both are inbox-per-test APIs and the concepts map one-to-one, but the endpoints differ. Receiving suites migrate in an afternoon: swap the client, replace the poll with waitForOtp, keep your assertions. If your suite uses MailSlurp's sending features, we're not a replacement at all — MailFixture cannot send email, by design.
Does MailFixture have a free plan like MailSlurp's?
Yes, and it's more concrete: 100 received messages a month, forever, commercial use included, no card required. MailSlurp is free for personal use with rate limits it doesn't publish, and its $19.99 Starter plan is non-commercial only — commercial use starts at the $69 Pro plan.
Why is MailFixture so much cheaper?
Scope. No sending infrastructure, no SMTP or IMAP endpoints, no warmup or campaign tooling, and no metering to account for. Receiving and parsing email is all we do, and the unit we charge for is the message — not inboxes created, not gigabytes stored, not the person reading it.
100 messages/mo free · no card · no meters running
Start free Read the quickstart