SendGrid vs Mailgun vs Resend: 2026 Email Service Deep Comparison
Whether sending transactional emails (password reset, order confirmations) or marketing emails (newsletters, promotions), choosing a reliable email service is critical. SendGrid, Mailgun, and the emerging Resend are the three most notable products in the developer community.
Choosing is rarely about "which is best" but "which fits the current stage". A personal project sending a few hundred emails a month and an e-commerce site firing millions on a flash-sale day demand very different things from a provider; the same budget buys different capabilities from each. Below we compare price, deliverability, developer experience, and features, then give scenario-based recommendations.
1. Platform Overview
| Feature | SendGrid | Mailgun | Resend |
|---|---|---|---|
| Company | Twilio | Sinch | Independent (YC W23) |
| Founded | 2009 | 2010 | 2023 |
| Focus | Marketing + Transactional | Developer Email API | Developer Experience |
| Free Tier | 100/day | 5,000/month (first 3mo) | 500/month |
2. Pricing Comparison
2.1 Free Tiers
| Platform | Free Limit | Restrictions |
|---|---|---|
| SendGrid | 100/day | Daily limit, non-cumulative |
| Mailgun | 5,000/month (3mo) | Domain verification required |
| Resend | 500/month | No time limit, full features |
2.2 Paid Plans
| Platform | Starting Price | 50K/month | 100K/month |
|---|---|---|---|
| SendGrid Essentials | $19.95/mo (50K) | $19.95 | $34.95 |
| Mailgun Foundation | $35/mo (50K) | $35 | $50 |
| Resend Pro | $20/mo (50K) | $20 | $35 |
One caveat: the table only shows entry pricing. What drives long-term cost is the overage rate and whether you are billed per contact: SendGrid bills per email address in your list rather than per send, so the unit price drops as active subscribers grow; Mailgun and Resend are closer to pure usage-based pricing. If your list contains many long-dormant addresses, the former can quietly push your costs up.
3. Deliverability
3.1 Deliverability Comparison
| Platform | Transactional | Marketing | Latency |
|---|---|---|---|
| SendGrid | 97-98% | 95-97% | Good |
| Mailgun | 97-99% | 95-98% | Good |
| Resend | 98-99% | 96-98% | Excellent |
3.2 Factors Affecting Deliverability
- Domain reputation: New domains need gradual warm-up
- SPF/DKIM/DMARC: Misconfiguration leads to spam
- Content quality: Spam keywords, excessive images affect delivery
- Sending frequency: Sudden spikes trigger ISP limits
- Bounce rate: High bounce rates damage reputation
Deliverability numbers are only a reference; the real bottleneck is usually on the sending side. A very common mistake: a fresh domain fires tens of thousands of emails in one batch right after setup, triggers the ISP's risk controls, and drags down the whole domain reputation — even transactional mail ends up in spam. The safe approach is to "warm up": start with a few hundred emails a day, watch bounce and spam rates, then ramp up gradually. This process usually takes 2-4 weeks.
3.3 Sending Domain Configuration Example
Whichever provider you pick, configure three DNS records before going live. Using send.yourdomain.com as an example:
# SPF: declare which servers are allowed to send for your domain
send.yourdomain.com TXT "v=spf1 include:spf.sendgrid.net ~all"
# DKIM: public key record; the provider gives the exact selector and value
s1._domainkey.send.yourdomain.com TXT "k=rsa; p=MIGfMA0GCSq...AQAB"
# DMARC: tells receivers how to handle failed verification and where to send reports
_dmarc.send.yourdomain.com TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
Start with p=none and review the aggregate reports for 1-2 weeks before tightening to quarantine or reject, so you do not break legitimate mail.
4. API & Developer Experience
SendGrid
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: '[email protected]',
from: '[email protected]',
subject: 'Order Confirmation #12345',
html: '<h1>Thank you for your purchase!</h1>',
};
sgMail.send(msg);
Features: Multi-language SDK, dynamic templates, detailed analytics
Mailgun
const formData = require('form-data');
const Mailgun = require('mailgun.js');
const mailgun = new Mailgun(formData);
const mg = mailgun.client({ username: 'api', key: process.env.MAILGUN_API_KEY });
mg.messages.create('yourdomain.com', {
from: '[email protected]',
to: ['[email protected]'],
subject: 'Verify your email',
html: '<p>Please click the link to verify</p>',
});
Features: Simple API, email routing, detailed logs, custom SMTP
Resend
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: '[email protected]',
to: ['[email protected]'],
subject: 'Welcome!',
html: '<strong>Welcome aboard!</strong>',
});
Features: Modern API, React Email support, great DX
5. Feature Comparison
| Feature | SendGrid | Mailgun | Resend |
|---|---|---|---|
| Templates | ✅ (Dynamic) | ❌ | ✅ (React) |
| A/B Testing | ✅ | ❌ | ❌ |
| Analytics | ✅ (Detailed) | ✅ (Basic) | ✅ (Basic) |
| Webhooks | ✅ | ✅ | ✅ |
| SMTP | ✅ | ✅ | ✅ |
| Inbound Email | ❌ | ✅ | ❌ |
| API Key Mgmt | ✅ | ✅ | ✅ |
| Sub-users | ✅ | ❌ | ❌ |
| Bulk Sending | ✅ | ✅ | ✅ |
| IP Pools | ✅ (Paid) | ❌ | ❌ |
6. SMTP Configuration
| Parameter | SendGrid | Mailgun | Resend |
|---|---|---|---|
| Server | smtp.sendgrid.net | smtp.mailgun.org | smtp.resend.com |
| Port (TLS) | 587 | 587 | 587 |
| Port (SSL) | 465 | 465 | 465 |
| Auth | API Key | API Key | API Key |
7. Selection Guide
Choose SendGrid for:
- High-volume marketing emails
- A/B testing and detailed analytics
- Dynamic email templates
- Limited budget needing stability
Choose Mailgun for:
- Primarily transactional emails
- Email parsing and inbound processing
- Detailed API logs
- Custom SMTP endpoints
Choose Resend for:
- Best developer experience
- React/Next.js stack
- React Email component templates
- Smaller projects
8. Summary
SendGrid is most comprehensive, Mailgun is robust and flexible, Resend offers the best modern developer experience. Choose based on your tech stack and business needs.
A pragmatic combo: transactional mail via Resend (great DX, fast delivery), marketing mail via SendGrid (strong templates and analytics), and inbound parsing via Mailgun (natively supported). Each plays to its strength, and costs stay more controllable than a single large plan. Whichever you pick, get the sending domain configured and warmed up first, then evaluate the long-term bill.
Reference: SendGrid pricing https://sendgrid.com/en-us/pricing; Mailgun docs https://documentation.mailgun.com/; Resend docs https://resend.com/docs; SPF/DKIM/DMARC overview https://www.cloudflare.com/learning/dns/dns-records/