Gmail Address Normalization for User Deduplication

Intelligence

Gmail's Normalisation Rules

Gmail silently ignores two categories of variation in addresses:

1. Dots in the Local Part

[email protected], [email protected], and [email protected] all deliver to the same inbox. Dots are cosmetic only.

2. Plus-Aliases

[email protected], [email protected], and [email protected] all go to Alice's inbox. The +tag suffix is stripped during delivery.

The Deduplication Problem

Without normalisation, your database may contain:

Email stored Actual user
[email protected] Alice
[email protected] Alice
[email protected] Alice

Three records, one person — and three separate free trials claimed.

Normalising via API

curl -X POST https://api.toolkitapi.io/v1/email/normalize \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'
{
  "original": "[email protected]",
  "normalized": "[email protected]",
  "provider": "gmail",
  "rules_applied": ["lowercase", "remove_dots", "strip_plus_alias"]
}

Other Providers with Similar Rules

  • Googlemail.com — alias for gmail.com
  • ProtonMail — supports plus-aliases but not dot normalisation
  • Outlook/Hotmail — plus-aliases supported; dots are significant

The API applies provider-specific rules automatically based on the MX record.

When to Normalise

Normalise at signup, not at login. Store the normalised form as the canonical key for deduplication, but keep the original for display purposes.

email_input = "[email protected]"
canonical = normalize_email(email_input)  # "[email protected]"

if User.query.filter_by(canonical_email=canonical).first():
    raise DuplicateSignupError

Try it out

Browse Tools →

More from the Blog