I built burner-bouncer: a zero-dependency disposable email detector for JavaScript and Python

Published: (May 4, 2026 at 08:53 PM EDT)
2 min read
Source: Dev.to

Source: Dev.to

Overview

Ever had users sign up with test@mailinator.com or fake@guerrillamail.com?
Disposable email addresses are a headache for any app that relies on real user contact.

I built burner‑bouncer to solve this—a zero‑dependency library that detects disposable/burner email domains instantly, with no API calls and no external requests.

  • 🚫 629 real disposable domains blocked out of the box
  • ⚡ Zero runtime dependencies
  • 🟦 TypeScript‑first (ESM + CJS)
  • 🐍 Python 3.8+ support
  • 🔁 Identical API in both languages

JavaScript / TypeScript

npm install burner-bouncer
import { isDisposable, check } from 'burner-bouncer';

isDisposable('test@mailinator.com'); // true
isDisposable('user@gmail.com');      // false

const result = check('test@mailinator.com');
// {
//   email: 'test@mailinator.com',
//   domain: 'mailinator.com',
//   isDisposable: true,
//   reason: 'blocklist'
// }

Python

pip install burner-bouncer
from burner_bouncer import is_disposable, check

is_disposable('test@mailinator.com')  # True
is_disposable('user@gmail.com')       # False

result = check('test@mailinator.com')
print(result.to_dict())
# {'email': 'test@mailinator.com', 'domain': 'mailinator.com',
#  'is_disposable': True, 'reason': 'blocklist'}

The blocklist is a JSON file of 629 known disposable domains bundled at install time. No network requests, no API keys, no rate limits—just a fast Set lookup.

  • GitHub:
  • npm:
  • PyPI:

PRs to add more domains are always welcome!

0 views
Back to Blog

Related posts

Read more »

Why Discord Keeps Rewriting Its Stack

!Cover image for Why Discord Keeps Rewriting Its Stackhttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2...

Making my own framework. Any tips?

!Cover image for Making my own framework. Any tips?https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fde...