Supabase Over Email Send Rate Limit Error

Supabase error over_email_send_rate_limit (over_email_send_rate_limit) explained: what it means, why it happens, and how to fix it — with copy-paste code examples.

Error code over_email_send_rate_limit Supabase Last verified 2026-08-19

Quick Answer

Rate-limit client-side and add backoff before resending. If that does not apply, debounce the resend button (e.g. a 60-second countdown) — the full checklist is below.

Error Code

Error code: over_email_send_rate_limit
Official name: over_email_send_rate_limit
Service: Supabase

What does this error mean?

Too many emails have been sent to this email address. Ask the user to wait a while before trying again.

Common Causes

How to Fix

  1. Rate-limit client-side and add backoff before resending
  2. Debounce the resend button (e.g. a 60-second countdown)
  3. Never call resend() inside a useEffect without a dependency guard
  4. Wait for the per-address rate-limit window to pass
  5. Check auth logs for hard bounces and clean invalid addresses from your user list

Code Examples

Cooldown-aware resend javascript
if (error?.code === 'over_email_send_rate_limit') {
  showError('Too many emails sent. Please wait a few minutes.')
  disableResendFor(120000)
}

Surface the wait time instead of silently failing - users understand 'try again later'.

Framework-Specific Fixes

supabase-js

Guard the resend button with a countdown so the rate limit is never hit in normal use.

const [cooldown, setCooldown] = useState(0)
if (cooldown > 0) {
  // button disabled, show remaining seconds
}
const { error } = await supabase.auth.resend({ type: 'signup', email })
if (error?.code === 'over_email_send_rate_limit') {
  setCooldown(120) // honor the server window
}

You Might Also Like

Frequently Asked Questions

Why am I seeing Supabase error over_email_send_rate_limit?

Most often this happens when rapid retries of signUp or resend confirmation, or when burst of OTP requests to the same address.

How do I fix Supabase error over_email_send_rate_limit?

Rate-limit client-side and add backoff before resending.

Which frameworks have documented fixes for error over_email_send_rate_limit?

This page documents fixes for: supabase-js.

Official Sources

This page is based on the official Supabase documentation linked below and adds practical troubleshooting guidance on top.