Send Personalized
Emails That Convert

Connect your Gmail with Google OAuth or any SMTP server. Drop in an Excel or CSV list, sprinkle in dynamic variables like {Name} or {Company}, attach files and hit send — all in your browser, totally free.

4.9/5 from founders, students & marketers — no account, no card, no fuss.

$0
Forever Free
No subscription, no hidden fees — ever.
0 KB
100% Private
Your contacts stay in your browser only.
2
Dual Engine
Google OAuth & any SMTP server.
No Limits
Custom Everything
Variables, attachments, unlimited sends.
the friendly 4-step recipe

Up and running in minutes, not tutorials

No jargon, no friction. The guided flow walks you from login to a live campaign before your coffee gets cold.

1

Connect your email

Sign in with Google OAuth (no App Password needed) or drop in your SMTP details. Gmail, Outlook, Yahoo — any provider works.

2

Upload your contacts

Drag and drop an Excel or CSV file. It parses instantly in your browser — edit any cell or add rows right on the spot.

3

Compose with a human touch

Write plain text or HTML. Click chips to insert {Name} or {Company} and preview exactly how each person's email lands in their inbox.

4

Send & watch it fly

Set a gentle delay to protect your sender reputation and watch live logs update with sent or failed status for every recipient. Pause or stop anytime.

the good stuff

Everything you actually need, nothing you don't

No bloat, no upsells, no dark patterns. Just warm, practical tools for sending email that feels personal — at scale.

Google OAuth — send without an App Password

Connect your Gmail securely through Google's official OAuth 2.0 flow. No "less secure apps", no fiddly App Passwords. Authorize once and send straight through the Gmail API. Your token lives only in your browser session.

Gmail API OAuth 2.0 No App Password Session-only token

Per-recipient file attachments

Send a different file to each person — an invoice, certificate or report. Upload straight into the app (kept in browser memory, never on a server) and map an attachment column in your CSV. Each person gets their own file. Separate multiple files per recipient with a | or ;.

PDF, DOCX, XLSX Per-recipient files Browser memory only

Any SMTP provider

Prefer Outlook, Yahoo or a private relay? Switch to Manual SMTP. One-click presets for Gmail, Outlook, Yahoo and Office365, plus full control over server, port and encryption.

Excel & CSV import + in-app editing

Drop any .xlsx, .xls or .csv and it's parsed instantly. Typo? Click any cell in the preview table and fix it right there. Add rows or columns without reopening Excel.

Dynamic variables, done kindly

Any spreadsheet column becomes an insertable variable. Click a chip to add {Name}, {Company} or {CRN} anywhere in the subject or body — so every email reads like it was written just for them.

Real-time activity logs

A friendly live console shows every attempt with success or failure details. Pause, resume or stop mid-campaign, and watch the Total / Sent / Failed / Pending counters update as you go.

Zero-database privacy

Your contact lists, SMTP credentials and attachments exist only in your browser memory and are discarded after sending. No server-side persistence, no tracking, no logging.

100% In-Memory No Log Tracking

Preview before you send

Open the preview modal to see exactly how each recipient's email renders — variables resolved, CC/BCC shown and attachments listed. No surprises, ever.

Gentle send delay

Set a delay between emails to mimic natural human sending and dodge spam filters. Keeps your reputation safe while you reach inboxes.

100% free & open source

No subscriptions, no locked features, no premium upsells. Host it yourself or run it from our official instance — with zero daily email limits. We believe thoughtful tools should be free, forever.

MF To: {Name} <{Email}>
Thanks, {Name} — you made our day!
Here's your {Attachment} as promised. Speak soon!
MIT License Self-Hostable
the honest comparison

Why pay monthly for what's free?

We compared MailFlow against the big commercial platforms so you don't have to.

Feature MailFlow GMass Mailshake Lemlist
Monthly cost $0 — free forever $29/mo $58/mo $69/mo
Account / signup None — instant access Google auth Required Required
Google OAuth (no app password) Yes Yes No No
Custom SMTP support Any server Gmail only Yes Yes
Contact data storage Browser only Cloud servers Cloud database Cloud database
Per-recipient attachments Yes No No No
In-app contact editing Click-to-edit table No No No
good questions

Things people usually ask

Everything you need to know before your very first campaign.

Do I need to create an account?
No account, no registration, no email verification. Open the app, connect your email (Google OAuth or SMTP) and start sending immediately.
Is my contact list safe? Where is it stored?
Your CSV/Excel file is parsed entirely in your browser's memory with JavaScript. It's never uploaded to any server. Close the tab or refresh and it's gone — nothing is persisted on a backend database.
What is Google OAuth, and why is it better?
Google OAuth authorizes the app through Google's official login screen — no separate App Password needed. The app receives a short-lived token stored only in your browser session. When you close the browser, it's gone. For manual SMTP mode you'll still need an App Password from your Google security settings.
How do I send different files to each person?
In Step 2 (Recipients), upload your attachments into the "Load Attachments" dropzone (they load into browser memory). In your CSV, add a column (e.g. "Attachment") with the exact filename for each row. Then map that column in the Attachment Path field. Each person receives only their own file.
How do I keep emails out of spam?
Set a delay of 3–5 seconds between emails in Step 4 to avoid spam velocity filters. Use a verified sender domain with SPF and DKIM records. And personalize with names like {Name} — generic mass mail is far more likely to get flagged.
Can I pause or stop a campaign mid-way?
Yes. During sending, Pause and Stop stay active. Pause lets you resume right where you left off. Stop ends the campaign and shows the final stats. The live log shows exactly which emails were sent and which failed.
ready when you are

Ready to send your first campaign?

No account. No credit card. No limits. Just connect your email, add a little personality, and go.

Open MailFlow — Free