By Nora Vance · Updated October 7, 2026

Resend vs SendGrid: the prices match, the limits do not

Compare the list prices and you get an oddity: Resend charges exactly five cents more than SendGrid at three different points. Resend Pro is $20 for 50,000 emails against SendGrid Essentials at $19.95. Resend Pro at 100,000 emails is $35 against Essentials at $34.95. Resend Scale is $90 for 100,000 against SendGrid Pro at $89.95. With money a tie, the decision moves to what each plan permits: Resend has a free plan of 3,000 emails a month while SendGrid has a 60-day trial, Resend keeps 30 days of data where SendGrid keeps 3 or 7, and the two disagree on dedicated IPs, teammates, webhook endpoints and how many recipients one API call can carry.

Resend pricing page, captured Oct 2026
Resend pricing page as of October 7, 2026. Source: Resend.

Cost at 10,000, 50,000, 100,000 and 250,000 emails

Monthly volumeResendSendGrid
10,000$20 (Pro; Free stops at 3,000)$19.95 floor; no step below 50,000
50,000$20 (Pro)$19.95 (Essentials)
100,000$35 (Pro) or $90 (Scale)$34.95 (Essentials) or $89.95 (Pro)
250,000About $200 (Scale at 200,000 plus overage)$249 at the 300,000 stop (Pro)

Resend's slider shows $160 for Scale at 200,000 emails with extra emails at $0.80 per thousand, so 250,000 is 160 + 50 x 0.80 = $200. SendGrid's selector has no 250,000 stop; the next one is 300,000 at $249, which at the same Resend formula would be 160 + 100 x 0.80 = $240. Beyond that Resend lists Scale at $350 for 500,000 emails and $650 for 1,000,000, while SendGrid lists Pro at $499 for 700,000. SendGrid's per-thousand cost at 700,000 is $0.71, and Resend's at 500,000 is $0.70, so neither side runs away with large volume.

Both services bill extra sends separately, and the mechanics differ. Resend's page says overage is a pay-as-you-go setting that you enable, charged at the plan's rate for each additional 1,000 emails; Pro and Scale were $0.90 per thousand at the 50,000 and 100,000 stops. SendGrid says only that overage "may apply" and prints no rate.

Free plans

Resend's Free plan is $0 for 3,000 emails a month, capped at 100 a day, with 3 domains, ticket support and 30-day data retention. It lists one webhook endpoint. SendGrid's Email API offers 100 emails a day for 60 days, no credit card, then you pay at least $19.95. If you run a staging environment or a side project for longer than two months, the standing free plan matters more than any difference in paid pricing. SendGrid's free tier exists only for Marketing Campaigns, at up to 2,000 contacts and 6,000 emails a month.

What each plan limits

LimitResendSendGrid
Data or activity history30 days on every plan3 days Essentials, 7 days Pro
Webhook endpoints1 Free, 5 Pro, 10 Scale1 trial, 2 Essentials, 5 Pro
Daily sending cap100 a day on Free; none on Pro100 a day on the trial
Dedicated IP$30 a month add-on, Scale only, for customers over 3,000 emails a dayOne included on Pro
Single sign-on$150 a month add-on, offered on ScaleIncluded on Pro
Domains3 Free, 10 Pro, 1,000 ScaleNo limit listed on the pricing page

The pattern is that Resend puts more into the base plan for small senders (history, a free tier, five endpoints at $20) and charges separately for team and network features, while SendGrid's Pro bundles IP, SSO, subusers and 1,000 teammates into its price. If your team has more than a couple of people who need account access, check SendGrid Essentials' single-teammate limit before you assume the saving.

How an API call looks

Resend's send email reference opens with this Node example:

import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

const { data, error } = await resend.emails.send({
  from: 'Acme <onboarding@resend.dev>',
  to: ['delivered@resend.dev'],
  subject: 'hello world',
  html: '<p>it works!</p>',
});

A SendGrid call carries the same information in a different shape: a personalizations array of up to 1,000 entries, a from object, a subject and a content array. Resend keeps it flat. For bulk sends, Resend's Batch Email API sends up to 100 emails in one request and counts each batch request as a single call against the rate limit, so a 1,000-recipient SendGrid request becomes ten Resend batch requests. The rate limit is set per team and is the same on every plan.

Resend's send endpoint also accepts an Idempotency-Key request header, which prevents duplicates when you retry a call. Keys must be unique per request, expire after 24 hours and can run to 256 characters. That matters for job queues that retry on timeouts.

Events and webhook trust

Resend's webhook events cover sent, delivered, delivery delayed, bounced, complained, opened, clicked, failed, scheduled and suppressed email events, and a received event for inbound mail. Its verification guide says every webhook is signed with a per-endpoint secret, that you can verify with the Resend SDK or with the Svix libraries, and that the payload must be the raw string body. SendGrid's events (processed, dropped, deferred, delivered, bounce, open, click, spam report, unsubscribe) can be signed with ECDSA, and the signing step is optional. Resend's open and click tracking is a per-domain setting available on every plan, including Free.

Moving from SendGrid to Resend

  1. Add and verify your sending domain in Resend. The Free plan allows three, and Pro allows ten.
  2. Rewrite calls: personalizations[].to becomes a to array, and categories or custom_args become Resend tags, which are key and value pairs.
  3. Re-create SendGrid dynamic templates as HTML you pass in the html field, or with whatever templating your application already uses.
  4. Load SendGrid's suppression exports through Resend's batch suppression API, so previously bounced addresses are not retried.
  5. Swap the ECDSA check for Svix-style verification and keep the endpoint count within 5 on Pro.
  6. Split traffic: send password resets first, then move the rest while you compare delivery records inside Resend's 30-day window.

Back to SendGrid: authenticate the domain, create an API key, and convert tags to categories. You will lose history depth, and Resend's 100-per-request batches turn into one request with a larger personalizations array.

Which to choose

Choose Resend if you want a free plan that does not expire, history you can search for a month, and a flat JSON API your developers already like, and if 100,000 emails at $35 is where you land. Choose SendGrid if you need a dedicated IP and SSO bundled at $89.95, more than a handful of teammates, signed events from day one, or marketing campaigns under the same vendor. At exactly 50,000 emails, flip a coin on price and decide on the table above.

Related pages

For plan detail see Resend pricing and Resend alternatives. Other head-to-heads: Resend vs Mailgun, Resend vs Postmark, and SendGrid alternatives.

FAQ

Is Resend cheaper than SendGrid?

By five cents. At 50,000 emails Resend Pro is $20 and SendGrid Essentials is $19.95; at 100,000 they are $35 and $34.95. Resend has the free plan and the longer history, SendGrid has the bundled dedicated IP on Pro.

Does Resend have a daily sending limit?

On Free, 100 emails a day. Pro's listing says no daily email limit, so the monthly allotment is the cap, with overage if you enable pay-as-you-go.

Can I get a dedicated IP on Resend?

Yes, on Scale, as a $30 a month add-on for customers sending more than 3,000 emails a day. SendGrid includes one on Pro from $89.95.

Which has better webhooks?

Resend gives more endpoints per dollar (5 on Pro against SendGrid's 2 on Essentials) and signs every one. SendGrid's signing is optional but supports OAuth 2.0 as well.