Supabase error email_not_confirmed (email_not_confirmed) explained: what it means, why it happens, and how to fix it — with copy-paste code examples.
Resend the confirmation with supabase.auth.resend({ type: 'signup', email }). If that does not apply, have the user click the confirmation link from a fresh email — the full checklist is below.
Error code: email_not_confirmed
Official name: email_not_confirmed
Service: Supabase
Email not confirmed.
const { error } = await supabase.auth.resend({
type: 'signup',
email: 'user@example.com',
})
if (error) {
// guard against over_email_send_rate_limit with a countdown
console.error(error.code)
}
resend() can hit over_email_send_rate_limit on rapid retries - add a cooldown timer.
Offer a resend button and detect this code to show the right guidance.
if (error?.code === 'email_not_confirmed') {
await supabase.auth.resend({ type: 'signup', email })
showToast('Check your inbox and confirm your email')
}
Most often this happens when signup email confirmation is enabled but the user never clicked the link, or when confirmation email landed in spam or expired.
Resend the confirmation with supabase.auth.resend({ type: 'signup', email }).
This page documents fixes for: supabase-js.
Recommendations are editorial — DB Error Reference takes no payment or affiliate fees for tool listings.
This page is based on the official Supabase documentation linked below and adds practical troubleshooting guidance on top.