Disposable Email Domain Blocklist

Developer tool · no network call

Disposable Email Checker

Check an email address or domain locally, return the matched evidence record, and keep the server-side policy deterministic.

Answer: call isDisposableEmail(email) on the server. It returns true only for an active disposable record with medium or high confidence; malformed input is reported separately as invalid_input.

CLI

node cli/dist/bin.js check user@vtmpj.com
# BLOCKED vtmpj.com (disposable, confidence=high, match=exact)

node cli/dist/bin.js check user@gmail.com --json

TypeScript

import { isDisposableEmail, classifyEmail } from '@internal/disposable-email-core'

if (isDisposableEmail(email)) {
  throw new Error('SIGNUP_EMAIL_NOT_ALLOWED')
}

const result = classifyEmail(email)
// result.record.source_urls explains why a listed domain matched

Stable JSON fields

FieldMeaning
blockedPolicy decision; a blocked decision still exits 0.
classificationdisposable, alias, role, free_provider, unknown, or unlisted.
matched_domainThe exact or most-specific suffix record that matched.
reasonShort human-readable explanation safe for diagnostics.

Do not confuse validation with verification

The checker does not probe SMTP, prove mailbox ownership, or score fraud. Keep rate limits, CAPTCHA, email verification, and provider controls as separate layers.

Add it to Next.js →Use Supabase Hook