npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@emailcheck/disposable-email-providers

v1.0.0

Published

A list of Disposable email providers in JSON format

Readme

Disposable Email Providers List

A comprehensive, curated collection of disposable and temporary email provider domains for spam prevention, privacy protection, and email validation.

License: MIT Last Updated Size

📋 Overview

This repository maintains an extensive, regularly updated list of disposable/temporary email provider domains. The data is aggregated from multiple reputable sources and carefully deduplicated to provide the most comprehensive collection available for:

  • Email Validation: Block disposable emails during user registration
  • Spam Prevention: Filter out temporary email addresses
  • Compliance: Meet anti-fraud and marketing requirements
  • Development: Test email functionality without using real addresses

📊 Statistics

  • Total Domains: 259,095+ unique disposable email domains
  • JSON Format: 169,981 structured entries
  • Text Format: Simple domain list for easy integration
  • Regular Updates: Frequently maintained with new providers

📁 Available Formats

JSON Format

disposable-email-providers.json
# Size: ~3.3MB
# Entries: 169,981
# Format: Array of domain strings

Usage Example:

const fs = require('fs');
const disposableDomains = JSON.parse(fs.readFileSync('disposable-email-providers.json', 'utf8'));

function isDisposable(email) {
  const domain = email.split('@')[1].toLowerCase();
  return disposableDomains.includes(domain);
}

Usage Example:

# Quick check using grep
grep -q "domain.com" list.txt && echo "Disposable" || echo "Valid"

🚀 Quick Start

JavaScript/Node.js

// Using JSON format
const fs = require('fs');
const disposableEmails = JSON.parse(fs.readFileSync('disposable-email-providers.json', 'utf8'));

function validateEmail(email) {
  const domain = email.split('@')[1]?.toLowerCase();
  return !disposableEmails.includes(domain);
}

// Example
console.log(validateEmail('[email protected]')); // true
console.log(validateEmail('[email protected]')); // false

Python

import json

# Load disposable domains
with open('disposable-email-providers.json', 'r') as f:
    disposable_domains = set(json.load(f))

def is_valid_email(email):
    try:
        domain = email.split('@')[1].lower()
        return domain not in disposable_domains
    except IndexError:
        return False

# Example
print(is_valid_email('[email protected]'))  # True
print(is_valid_email('[email protected]'))  # False

PHP

<?php
// Load disposable domains
$disposableDomains = json_decode(file_get_contents('disposable-email-providers.json'), true);

function isDisposableEmail($email) {
    $domain = strtolower(substr(strrchr($email, '@'), 1));
    return in_array($domain, $disposableDomains);
}

// Example
var_dump(isDisposableEmail('[email protected]'));  // bool(false)
var_dump(isDisposableEmail('[email protected]'));  // bool(true)

🔄 Integration Examples

Using EMAIL-CHECKER.APP Email Validator (Recommended)

For a complete email validation solution, consider using email-validator-js, which includes this disposable email list along with comprehensive validation:

npm install @emailcheck/email-validator-js
const { EmailValidator } = require('@emailcheck/email-validator-js');

const validator = new EmailValidator();

async function validateEmail(email) {
  const result = await validator.validate(email);
  return {
    isValid: result.isValid,
    isDisposable: result.isDisposable,
    score: result.score,
    details: result
  };
}

// Example usage
const result = await validateEmail('[email protected]');
console.log(result); // { isValid: true, isDisposable: false, score: 95, ... }

Cloud API Service

For production applications, use the managed email validation service at email-check.app:

const response = await fetch('https://api.email-check.app/validate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({ email: '[email protected]' })
});

const result = await response.json();

Express.js Middleware (Manual Implementation)

const express = require('express');
const disposableDomains = require('./disposable-email-providers.json');

const app = express();

// Middleware to block disposable emails
app.use((req, res, next) => {
  if (req.body.email) {
    const domain = req.body.email.split('@')[1]?.toLowerCase();
    if (disposableDomains.includes(domain)) {
      return res.status(400).json({ error: 'Disposable email addresses are not allowed' });
    }
  }
  next();
});

app.post('/register', (req, res) => {
  // Registration logic here
  res.json({ success: true });
});

Laravel Validation Rule

<?php

namespace App\Rules;

use Closure;
use Illuminate\Contracts\Validation\ValidationRule;

class NotDisposableEmail implements ValidationRule
{
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        $disposableDomains = json_decode(file_get_contents(storage_path('app/disposable-email-providers.json')), true);
        $domain = strtolower(substr(strrchr($value, '@'), 1));

        if (in_array($domain, $disposableDomains)) {
            $fail('Disposable email addresses are not allowed.');
        }
    }
}

🛠️ Maintenance

The list is regularly updated through automated processes:

  • Deduplication: Merge and remove duplicates from multiple sources
  • Validation: Verify domain accessibility and functionality
  • Sorting: Maintain organized, searchable lists
  • Regular Updates: Weekly/monthly updates with new providers

📝 License

This project is licensed under the MIT License - see the LICENSE.md file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

How to Contribute

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/new-providers)
  3. Add your changes to the json file
  4. Commit your changes (git commit -m 'Add new disposable email providers')
  5. Push to the branch (git push origin feature/new-providers)
  6. Open a Pull Request

⚠️ Important Notes

  • Regular Updates: Disposable email providers appear frequently. Regular updates are recommended
  • False Positives: Some legitimate services might be flagged. Consider implementing an allowlist
  • Performance: For high-traffic applications, consider loading the data into memory or using a database
  • Legal Compliance: Ensure compliance with local regulations regarding email validation

🔍 Related Projects

Cloud Solutions

  • email-validator-js - Complete email validation library with disposable email detection, syntax validation, and deliverability checks
  • email-check.app - Managed cloud API for email validation with high performance and reliability

📞 Support

For questions, issues, or suggestions:


⭐ If this project helps you, consider giving it a star!