Article content and detailed guides remain in English. The selected language applies to controls and quick instructions.

Back to articles

Normalizing Email Address Formats: Case, Whitespace and Encoding Fixes

On this page

What Is Email Normalization?

Email normalization is the process of converting email addresses into a consistent format. When you collect addresses from multiple sources, the same address can appear in different forms:

All of these may refer to the same mailbox, but your CRM or email marketing platform treats them as separate contacts unless they are normalized first.

Why It Matters

Deduplication

Without normalization, your list contains duplicates that look different but are functionally identical. You send the same person two copies of every email. Your list size is inflated. Your analytics are skewed.

Deliverability

Addresses with formatting problems (embedded spaces, invisible characters, encoding artefacts) bounce. Each bounce counts against your sender reputation.

CRM accuracy

Duplicate records in your CRM fragment contact history. One record shows the email you sent last month. Another shows their support ticket from last week. Neither gives you the full picture.

Import compatibility

Different platforms have different formatting requirements. Normalizing before import prevents rejected records.

Case Sensitivity Rules

The standard

Email addresses have two parts, separated by the @ sign:

  • Local part: Everything before the @ (e.g., john.doe).
  • Domain part: Everything after the @ (e.g., example.com).

According to the email standards (RFC 5321), the local part is technically case-sensitive. In theory, John@example.com and john@example.com could be different mailboxes.

The reality

In practice, virtually all mail servers treat the local part as case-insensitive. Gmail, Outlook, Yahoo, Google Workspace, Microsoft 365 and almost every other provider deliver john@example.com and JOHN@example.com to the same mailbox.

The domain part is always case-insensitive. example.com and EXAMPLE.COM are always the same domain.

What to do

Convert the entire email address to lowercase. This matches reality for 99.9% of addresses and eliminates case-based duplicates.

Email Extractor performs case-insensitive deduplication automatically when processing your files.

Whitespace Issues

Whitespace characters are the most common formatting problem in email lists, and the hardest to spot.

Leading and trailing spaces

These are invisible in most spreadsheet views:

Fix: Trim all whitespace from the beginning and end of every address.

Internal spaces

Spaces within the address are always invalid:

Fix: Remove all spaces from within the address. An email address never contains a space.

Tab characters and line breaks

Data copied from websites, PDFs and documents can contain tab characters (\t) or line breaks (\n, \r) embedded in or adjacent to email addresses.

Fix: Strip all whitespace characters (spaces, tabs, newlines, carriage returns) from the address, or replace them with nothing.

Non-breaking spaces

HTML pages and Word documents use non-breaking spaces (Unicode U+00A0) that look identical to regular spaces but are a different character.

Fix: Replace non-breaking spaces with regular spaces, then apply your normal whitespace removal.

Encoding Problems

UTF-8 encoding issues

When data moves between systems, character encoding can go wrong. You might see:

Fix: Convert all text to UTF-8, then strip any characters outside the valid email character set (letters, numbers, periods, hyphens, underscores, plus signs, @).

HTML entities

Addresses extracted from HTML source code may contain HTML entities:

  • john@example.com (@ is the @ sign)
  • john&doe@example.com (& is the ampersand)

Fix: Decode HTML entities before processing. Email Extractor handles this automatically when extracting from HTML files.

URL encoding

Addresses from URLs or form submissions may be URL-encoded:

  • john%40example.com (%40 is the @ sign)
  • john.doe%2Btest%40example.com

Fix: URL-decode the string before processing.

Plus Addressing (Sub-addressing)

Many email providers support "plus addressing" or "sub-addressing":

All of these deliver to john@example.com. The text after the + and before the @ is ignored for delivery purposes.

Should you normalize plus addresses?

It depends on your use case:

For deduplication: Stripping the +tag portion reveals that john+newsletter@example.com and john+signup@example.com are the same person. If your goal is to avoid sending duplicates, normalize by removing the +tag.

For analytics: Keeping the +tag tells you which signup form or channel generated the address. The person deliberately used different tags to track your emails. Stripping the tag loses this information.

For compliance: If john+marketing@example.com unsubscribes, you must also suppress john@example.com and john+anything@example.com. Normalize for suppression purposes.

Gmail dot trick

Gmail ignores dots in the local part:

All deliver to the same Gmail mailbox. This is specific to Gmail and does not apply to other providers.

Should you normalize? For deduplication within Gmail addresses specifically, yes, removing dots from the local part of @gmail.com addresses catches duplicates. Do not apply this rule to other domains, where dots distinguish different mailboxes.

International Email Addresses (IDN)

Internationalized domain names (IDN) use non-ASCII characters:

Some internationalized domains have both a Unicode form and an ASCII-compatible encoding (ACE) form using Punycode:

What to do: Most email systems use the Punycode form internally. For normalization, convert IDN domains to their Punycode equivalent to ensure consistent matching.

Building a Normalization Pipeline

Step 1: Extract

Use Email Extractor to extract addresses from your source files. The tool handles HTML entity decoding and basic deduplication.

Step 2: Normalize

Apply these transformations in order:

  1. Decode: URL-decode and HTML-entity-decode the address.
  2. Trim: Remove leading and trailing whitespace, tabs and newlines.
  3. Strip internal whitespace: Remove any spaces, tabs or line breaks within the address.
  4. Lowercase: Convert the entire address to lowercase.
  5. Remove invisible characters: Strip zero-width spaces, byte order marks and other invisible Unicode characters.
  6. Validate format: Check that the result is a valid email format (contains exactly one @, has at least one dot after the @, no consecutive dots, valid characters).

Step 3: Optional transforms

Depending on your use case:

  1. Plus-strip: Remove everything between + and @ in the local part.
  2. Gmail dot-strip: For @gmail.com addresses only, remove dots from the local part.
  3. IDN normalization: Convert internationalized domains to Punycode.

Step 4: Deduplicate

After normalization, sort and deduplicate. Addresses that looked different before normalization may now be identical.

Step 5: Verify

Normalization fixes formatting but does not check deliverability. Run your normalized list through a verification service. See Best Email Verification Services.

Common Mistakes

Normalizing too aggressively

Removing dots from all domains (not just Gmail) can turn valid, distinct addresses into invalid ones. john.doe@company.com and johndoe@company.com may be different mailboxes at a corporate domain.

Not normalizing before deduplication

If you deduplicate before normalizing, you miss case-different and whitespace-different duplicates.

Ignoring encoding on import

Importing a CSV file with the wrong encoding setting produces garbled characters in email addresses. Ensure your import uses UTF-8 encoding.

Stripping valid characters

Some valid email characters look unusual but are legitimate: underscores, hyphens, plus signs, and even (technically) quoted strings. Do not remove characters that are valid in email addresses.

Extract emails

Explore tools

Verify emails

Check address validity before using your list.

ZeroBounce

Email Verification

Verifies email lists and provides tools for monitoring deliverability.

Useful when list cleaning and sender health belong in one workflow.

Explore ZeroBounce (opens in a new tab)