What Makes an Email Address Valid?
An email address is valid when it meets three requirements: it's correctly formatted according to internet standards, the domain it references exists and is configured to receive email, and the specific mailbox at that domain is active.
Most discussions of email validity focus only on format — whether the address looks right. But format alone doesn't guarantee deliverability. An address can be perfectly formatted and still bounce because the domain has expired or the mailbox has been deleted.
This guide covers all three layers: format rules, domain requirements, and mailbox validity.
The Structure of an Email Address
Every email address has two components separated by the @ symbol:
local-part @ domain
Example: john.smith @ company.com
john.smithis the local part (also called the "prefix")company.comis the domain
Both parts must follow specific rules.
Rules for the Local Part (Before the @)
The local part can be up to 64 characters long and may include:
Allowed Characters
- Lowercase letters:
a–z - Uppercase letters:
A–Z(email is case-insensitive in practice, though technically case-sensitive per standard) - Digits:
0–9 - Special characters:
! # $ % & ' * + - / = ? ^ _ { | } ~ .
Rules for the Period (.)
- Cannot be the first character:
.john@company.comis invalid - Cannot be the last character:
john.@company.comis invalid - Cannot appear consecutively:
john..smith@company.comis invalid
Common Local Part Examples
| Address | Valid? | Reason |
|---|---|---|
john.smith |
✓ Valid | Standard format |
john+filter |
✓ Valid | + is allowed |
john_smith |
✓ Valid | Underscore allowed |
j |
✓ Valid | Single character OK |
john..smith |
✗ Invalid | Double dot |
.john |
✗ Invalid | Leading dot |
john smith |
✗ Invalid | Space not allowed |
john@smith |
✗ Invalid | Double @ creates confusion |
Rules for the Domain Part (After the @)
The domain can be up to 255 characters total and consists of labels separated by dots.
Domain Requirements
- Registered: The domain must be registered with a domain registrar
- DNS: The domain must have active DNS records
- MX records: For an email address to be deliverable, the domain must have Mail Exchange (MX) records pointing to an active mail server
Label Rules
Each label (section between dots) must:
- Be 1–63 characters long
- Contain only letters (a–z, A–Z), digits (0–9), and hyphens (
-) - Not start or end with a hyphen
Top-Level Domain (TLD)
The TLD (final label: .com, .org, .io, etc.):
- Cannot be all numeric (
.123is invalid) - Must be a recognized TLD (though syntax checkers typically don't verify TLD existence — a domain validator does)
Common Domain Examples
| Domain | Valid Format? | Notes |
|---|---|---|
company.com |
✓ Valid | Standard |
sub.company.co.uk |
✓ Valid | Multi-level domains fine |
company |
✗ Invalid | No TLD |
company.123 |
✗ Invalid | Numeric TLD |
-company.com |
✗ Invalid | Leading hyphen |
company-.com |
✗ Invalid | Trailing hyphen |
Examples: Valid and Invalid Email Addresses
Valid Email Addresses
john@company.com— Classic formatjane.doe@subdomain.company.org— Subdomain with period in local partuser+tag@gmail.com— Plus-sign addressing (common for Gmail filters)firstname.lastname@law-firm.co.uk— Hyphenated domaina@b.io— Minimal but validuser_2024@internal-tools.company.com— Underscores and hyphens throughout
Invalid Email Addresses
@company.com— Missing local partjohn@— Missing domainjohndoe.com— Missing@symboljohn doe@company.com— Space in local partjohn@@company.com— Double@.john@company.com— Local part starts with dotjohn.@company.com— Local part ends with dotjohn..doe@company.com— Consecutive dotsjohn@company— Missing TLDjohn@-company.com— Domain starts with hyphen
Format Validity vs. Deliverability: An Important Distinction
A syntactically valid email address can still be undeliverable. Format checking tells you whether an address is structured correctly — it doesn't tell you whether it corresponds to an active mailbox.
| Check | What It Tells You |
|---|---|
| Syntax check | Is the format correct? |
| Domain/DNS check | Does the domain exist with valid MX records? |
| SMTP check | Does the specific mailbox exist? |
A complete email validation runs all three. An address that passes only the syntax check might still bounce because:
- The domain has expired (no longer resolves)
- The MX record points to a defunct server
- The mailbox was deleted after the address was collected
This is why professional email verification services like BulkMailVerifier.com run all three checks — not just syntax.
How to Validate Email Addresses at the Point of Collection
Client-Side HTML5 Validation
The simplest implementation. HTML5's type="email" input attribute performs basic format validation automatically:
<input type="email" name="email" required>
This catches obvious format errors (missing @, missing domain) before the form submits. It doesn't validate domain existence or mailbox accessibility.
JavaScript / jQuery Regex Validation
For more control, a JavaScript regex can validate format on the client side:
function isValidEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
Note: Regex can validate format but not deliverability. It's a supplement to, not a replacement for, server-side verification.
Server-Side Format Validation
Always validate on the server side, regardless of client-side validation. Server-side validation prevents bypassed client-side checks from allowing malformed addresses through.
import re
def is_valid_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return bool(re.match(pattern, email))
Real-Time API Verification
The most comprehensive approach. An API call to BulkMailVerifier.com during form submission validates syntax, checks domain DNS and MX records, and confirms mailbox existence in real time — all in under 500ms.
This is the only method that catches all three layers of invalidity before the address enters your database.
Common Email Validation Mistakes
Overly Restrictive Regex
Some developers use regex patterns that reject perfectly valid addresses — particularly those with plus signs (user+tag@gmail.com), long TLDs (.photography, .engineering), or international domain names. Build or use regex patterns that comply with the full RFC 5321 standard, not simplified versions.
Only Validating on the Frontend
Client-side validation can be bypassed. Always validate on the server side as well. For high-value forms, use server-side API verification that goes beyond format checking.
Treating Format Validity as Deliverability Confirmation
A common mistake: assuming an address that passes regex validation will also deliver successfully. As described above, a valid format guarantees only that the address is correctly structured — not that it exists or can receive mail.
Not Validating Email Updates
Many systems validate email at initial signup but not when users update their email address. Apply the same validation logic to update flows.
Bulk Email Format Validation
For existing lists with thousands or millions of addresses, bulk format validation is the first step in list cleaning. BulkMailVerifier.com processes your entire list at once, identifying format errors as well as domain issues and SMTP-confirmed invalids.
A full bulk verification:
- Runs syntax and format checks on every address
- Validates domain and MX records for format-valid addresses
- Runs SMTP checks for domain-valid addresses
- Returns each address categorized by status
This goes far beyond what any format validation alone can achieve, giving you a fully actionable result for every address in your list.
Frequently Asked Questions
Are email addresses case-sensitive?
By the RFC standard, the local part is technically case-sensitive (John@company.com vs. john@company.com). In practice, virtually all mail servers treat email addresses as case-insensitive. For matching purposes in your database, normalize all email addresses to lowercase.
Can an email address have multiple @ symbols?
No. A valid email address contains exactly one @ symbol, separating the local part from the domain. Addresses with multiple @ symbols are syntactically invalid.
What is the maximum length of an email address?
Per RFC standards, the local part can be up to 64 characters, the domain up to 255 characters, making the theoretical maximum 320 characters total. In practice, most real-world addresses are much shorter.
Does using + in an email address cause any problems?
The plus sign in the local part (user+tag@gmail.com) is a valid feature supported by Gmail and many other providers. It allows inbox filtering by using different "tags." Some services incorrectly reject these addresses — this is a bug in their validation logic, not an invalid address.
How do I check if an email address domain is real?
You can do a manual MX record lookup using a tool like MxToolbox. For automated bulk checking, BulkMailVerifier.com checks DNS and MX records for every address in your list as part of the standard verification process.
Validate Your Entire List
Format rules are just the beginning. True email validation confirms domain existence, MX record health, and individual mailbox accessibility — all three layers.
BulkMailVerifier.com runs all checks on every address in your list. Free trial available, no credit card required.
