A comprehensive email validation library with format, DNS, and deliverability checking
npm install robust-email-validator





> The most comprehensive email validation library for JavaScript & TypeScript ๐งโจ
A lightweight, fast, and developer-friendly email validation library that provides multiple layers of validation including RFC 5322 compliance, DNS/MX record verification, and real-time deliverability checking through popular APIs.
- โ
RFC 5322 Compliant - Industry-standard email format validation
- ๐ DNS & MX Verification - Check if domains can actually receive emails
- ๐ง Deliverability Testing - Integration with ZeroBounce, Mailgun, and Hunter APIs
- ๐ Lightning Fast - Optimized performance with minimal dependencies
- ๐ง Highly Configurable - Choose exactly which validation layers you need
- ๐ฑ Universal Support - Works in Node.js, browsers, React, Vue, Angular
- ๐ช TypeScript First - Full type safety with excellent IntelliSense
- ๐ Batch Processing - Validate thousands of emails efficiently
- ๐ก๏ธ Production Ready - Used by companies worldwide
\\\bash\
npm install robust-email-validator
\\
\\\javascript
import { EmailValidator } from 'robust-email-validator';
// Quick format validation
const isValid = EmailValidator.validateFormat('user@example.com');
console.log(isValid); // true
// Comprehensive validation
const validator = new EmailValidator({
checkFormat: true,
checkDNS: true,
checkDeliverability: true,
apiProvider: 'zerobounce',
apiKey: 'your-api-key'
});
const result = await validator.validate('user@example.com');
console.log(result.isValid); // true/false
console.log(result.details); // Detailed validation results
\\\
- Features
- Installation
- Quick Examples
- API Reference
- Configuration
- Browser Support
- Framework Integration
- Performance
- Contributing
- License
| Feature | Description | Node.js | Browser |
|---------|-------------|---------|---------|
| Format Validation | RFC 5322 compliant regex validation | โ
| โ
|
| DNS Verification | Check if domain exists | โ
| โ |
| MX Record Check | Verify mail server configuration | โ
| โ |
| Deliverability | Real-time API validation | โ
| โ
* |
\Subject to CORS policies*
- ZeroBounce - Industry-leading email validation
- Mailgun - Reliable email verification service
- Hunter - Professional email finder and verifier
- Zero Configuration - Works out of the box
- Flexible Options - Enable only what you need
- Detailed Results - Comprehensive validation reports
- Error Handling - Graceful failure with detailed error messages
- TypeScript Support - Full type definitions included
\\\bashnpm
npm install robust-email-validator
\\\\javascript
import { EmailValidator } from 'robust-email-validator';
// Synchronous format checking
const emails = [
'valid@example.com', // โ
Valid
'invalid-email', // โ Invalid
'user+tag@domain.co.uk' // โ
Valid
];
emails.forEach(email => {
const isValid = EmailValidator.validateFormat(email);
console.log(\\${email}: \${isValid ? 'โ
' : 'โ'}\);\
});
\\
\\\javascript
const validator = new EmailValidator({
checkFormat: true,
checkDNS: true,
checkMX: true,
checkDeliverability: true,
apiProvider: 'zerobounce',
apiKey: process.env.ZEROBOUNCE_API_KEY,
timeout: 10000
});
const result = await validator.validate('user@example.com');
console.log('Email:', result.email);
console.log('Valid:', result.isValid);
console.log('Errors:', result.errors);
console.log('Warnings:', result.warnings);
// Detailed breakdown
if (result.details.format) {
console.log('Format valid:', result.details.format.isValid);
}
if (result.details.dns) {
console.log('Domain exists:', result.details.dns.isValid);
console.log('MX records:', result.details.dns.mxRecords);
}
if (result.details.deliverability) {
console.log('Deliverable:', result.details.deliverability.isDeliverable);
console.log('Confidence:', result.details.deliverability.confidence);
}
\\\
\\\javascript
const emails = [
'user1@example.com',
'user2@invalid-domain.xyz',
'invalid-format-email'
];
const results = await validator.validateBatch(emails);
console.log('Summary:', results.summary);
// { total: 3, valid: 1, invalid: 2, processed: 3, failed: 0 }
results.results.forEach(result => {
console.log(\\${result.email}: \${result.isValid ? 'โ
' : 'โ'}\);\
});
\\
\\\javascript
// Browser-safe configuration
const validator = new EmailValidator({
checkFormat: true,
checkDeliverability: true,
apiProvider: 'mailgun',
apiKey: 'your-mailgun-key'
});
// Use in form validation
document.getElementById('email-form').addEventListener('submit', async (e) => {
e.preventDefault();
const email = document.getElementById('email').value;
const result = await validator.validate(email);
if (result.isValid) {
// Proceed with form submission
console.log('Email is valid!');
} else {
// Show validation errors
console.log('Errors:', result.errors);
}
});
\\\
\\\typescript\
interface EmailValidationOptions {
checkFormat?: boolean; // Default: true
checkDNS?: boolean; // Default: false
checkMX?: boolean; // Default: false
checkDeliverability?: boolean; // Default: false
apiProvider?: 'zerobounce' | 'mailgun' | 'hunter';
apiKey?: string;
timeout?: number; // Default: 5000ms
}
\\
\\\javascript
// Real-time form validation (fast)
const formValidator = new EmailValidator({
checkFormat: true
});
// Registration validation (balanced)
const registrationValidator = new EmailValidator({
checkFormat: true,
checkDNS: true
});
// Enterprise validation (comprehensive)
const enterpriseValidator = new EmailValidator({
checkFormat: true,
checkDNS: true,
checkMX: true,
checkDeliverability: true,
apiProvider: 'zerobounce',
apiKey: process.env.ZEROBOUNCE_API_KEY
});
\\\
\\\jsx
import { useState } from 'react';
import { EmailValidator } from 'robust-email-validator';
function EmailInput() {
const [email, setEmail] = useState('');
const [isValid, setIsValid] = useState(null);
const validateEmail = async (value) => {
const result = await EmailValidator.isValid(value);
setIsValid(result);
};
return (
type="email"
value={email}
onChange={(e) => {
setEmail(e.target.value);
validateEmail(e.target.value);
}}
style={{ borderColor: isValid === false ? 'red' : 'green' }}
/>
);
}
\\\
\\\vue
v-model="email"
@input="validateEmail"
:class="{ invalid: !isValid }"
type="email"
/>
\\\
\\\typescript
import { Component } from '@angular/core';
import { EmailValidator } from 'robust-email-validator';
@Component({
selector: 'app-email-input',
template: \
[(ngModel)]="email"
(input)="validateEmail()"
[class.invalid]="!isValid"
type="email"
/>
\
})
export class EmailInputComponent {
email = '';
isValid: boolean | null = null;
async validateEmail() {
this.isValid = await EmailValidator.isValid(this.email);
}
}
\\\
| Operation | Time | Memory |
|-----------|------|--------|
| Format validation | ~0.1ms | ~1KB |
| DNS validation | ~100ms | ~2KB |
| API validation | ~500ms | ~3KB |
| Batch (100 emails) | ~2s | ~10KB |
We welcome contributions! Please see our Contributing Guide for details.
\\\bash\
git clone https://github.com/otitoju/robust-email-validator.git
cd robust-email-validator
npm install
npm test
\\
MIT ยฉ Your Name
- RFC 5322 specification
- Email validation community
- All contributors and users
---
โญ Star us on GitHub โข ๐ Documentation โข ๐ Report Bug โข ๐ก Request Feature
Made with โค๏ธ for the JavaScript community