Comparison
A direct comparison of Amazon SES, SendGrid, Postmark, Resend, and tinysend — what each one costs, where each one shines, and which to pick for your use case.
Every developer eventually needs to send email. Whether it's a password reset, a receipt, or a drip onboarding sequence — you need an API that won't drop messages, won't get you blacklisted, and won't break your budget when you scale. This is a honest look at what's available in 2026.
Most developers reach for whatever has the best-looking docs on a Sunday afternoon. That's fine until you're debugging a deliverability problem at 2am six months later. Here's what actually matters:
| Provider | Best for | Pricing | Sequences | BYOK |
|---|---|---|---|---|
| Amazon SES | High-volume, AWS shops | $0.10 / 1k emails | No | N/A |
| SendGrid | Marketing + transactional | From $19.95/mo | Yes | No |
| Postmark | Transactional only | $15/mo (10k emails) | No | No |
| Resend | Developer experience | From $20/mo | Broadcasts | No |
| tinysend | Dev-first, BYOK | Usage-based | Yes | Yes |
Amazon Simple Email Service is the lowest-cost option at scale — $0.10 per 1,000 emails. That's $100 for a million emails. If you're already in the AWS ecosystem and have the engineering time to operate it, SES is hard to beat on raw cost.
import { SESv2Client, SendEmailCommand } from "@aws-sdk/client-sesv2"
const client = new SESv2Client({ region: "us-east-1" })
await client.send(new SendEmailCommand({
FromEmailAddress: "[email protected]",
Destination: { ToAddresses: [user.email] },
Content: {
Simple: {
Subject: { Data: "Welcome to the app" },
Body: {
Html: { Data: `<h1>Hi ${user.name}</h1>` },
Text: { Data: `Hi ${user.name}` }
}
}
}
}))The API is verbose. There's no built-in template system, no sequences, and webhooks require manual SNS/SQS wiring. You're building a lot of infrastructure yourself. If you go this route, plan for 2–3 days of setup and a monitoring story.
SendGrid has been around since 2009 and was acquired by Twilio in 2019. It's the default choice for a lot of companies because it does everything: transactional email, marketing campaigns, templates, automations, and an SMTP relay. The problem is that doing everything means nothing is especially great.
Pricing is contact-based, which means your bill can spike unexpectedly as your list grows. The free plan is 100 emails/day with limited features. Paid starts at $19.95/mo for 50k emails per month.
import sgMail from '@sendgrid/mail'
sgMail.setApiKey(process.env.SENDGRID_API_KEY)
await sgMail.send({
to: user.email,
from: '[email protected]',
subject: 'Welcome!',
html: `<h1>Hi ${user.name}</h1>`,
text: `Hi ${user.name}`,
})The API is clean enough. The main developer pain points are the dashboard (complex, cluttered) and the fact that Twilio has layered multiple products on top over the years. For pure transactional sends, it's overkill. For large marketing operations, it's a legitimate choice.
Postmark is the gold standard for transactional email deliverability. They've been around since 2010 and have built a reputation on one thing: making sure your password resets and receipt emails hit the inbox, not the spam folder. Acquired by ActiveCampaign in 2022.
Postmark enforces strict usage policies — you cannot send marketing or bulk promotional emails through Postmark. This is actually a feature: it means the shared IP pools are clean because everyone using them sends only transactional mail.
import postmark from 'postmark'
const client = new postmark.ServerClient(process.env.POSTMARK_API_TOKEN)
await client.sendEmail({
From: '[email protected]',
To: user.email,
Subject: 'Your receipt',
HtmlBody: `<h1>Thanks for your purchase</h1>`,
TextBody: 'Thanks for your purchase.',
MessageStream: 'transactional'
})Pricing is $15/mo for 10k emails, scaling to $50/mo for 50k. No sequences or automation. If you also need marketing email, you'll pay for a separate provider. For pure transactional sends at reasonable volume, it's excellent value.
Resend launched in 2023 and immediately captured developer attention with a clean API and first-class React Email support. If your team writes JSX and wants to build email templates the same way you build UI components, Resend is genuinely appealing.
import { Resend } from 'resend'
const resend = new Resend(process.env.RESEND_API_KEY)
await resend.emails.send({
from: '[email protected]',
to: user.email,
subject: 'Welcome!',
react: WelcomeEmail({ name: user.name }), // React component
})Resend's free plan gives you 3k emails/month and 1 custom domain — generous for getting started. Paid plans from $20/mo. Sequences are limited (broadcast-style, not drip automations). No BYOK — you can't bring your existing SES or Postmark account.
tinysend is built around two ideas that set it apart: a clean developer-first API, and the ability to bring your own email infrastructure (BYOK — bring your own keys). You can connect your existing Amazon SES, Postmark, or Mailgun account as the sending backend, while tinysend handles templates, sequences, contacts, and analytics on top.
// Option 1: Simple send via REST
const res = await fetch('https://api.tinysend.co/v1/emails', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.TINYSEND_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: '[email protected]',
to: user.email,
subject: 'Welcome!',
template: 'welcome',
variables: { firstName: user.name, appUrl: 'https://app.example.com' }
})
})
// Option 2: Enroll in drip sequence
await tinysend.sequences.enroll({
sequenceId: 'onboarding-v2',
email: user.email,
variables: { plan: user.plan }
})The BYOK model is particularly useful if you've spent months warming a sending reputation on SES or Postmark — you keep that reputation while gaining tinysend's template editor, sequence builder, and analytics layer on top.
→ Use Amazon SES. Budget 2–3 days for setup. Build your own bounce handling and template layer.
→ Use Postmark. Pay the premium — it's worth it when password resets need to arrive instantly.
→ Try Resend. React Email integration is genuinely excellent. Just know sequences are limited.
→ SendGrid handles both. Watch the contact-based pricing as you grow.
→ Use tinysend. Especially useful if you already have SES or Postmark infrastructure you want to keep.
Clean REST API, drip sequences, templates, and BYOK support. Connect your existing SES or Postmark account in minutes.
Get your API key →