PII Hasher

Normalize and SHA-256-hash emails and phone numbers exactly the way Google Customer Match / Enhanced Conversions, Meta CAPI, and GA4 user-provided data expect. A wrongly normalized value hashes fine and uploads fine — it just never matches. This tool encodes the per-platform rules so the silent match-rate loss doesn't happen.

🔒 runs entirely in your browser — nothing is sent anywhere · works offline

Nothing leaves your browser. We never see your data. Every normalization and hash runs locally via the Web Crypto API. This page makes zero network requests.

Platform

Normalization rules by platform

The differences below are why a hash that matches on one platform can silently miss on another. All platforms hash the UTF-8 bytes of the normalized string with SHA-256 and expect lowercase hex output.

Email
RuleGoogleMeta CAPIGeneric
Trim leading/trailing whitespaceyesyesyes
Lowercaseyesyesyes
Remove dots in the local part of @gmail.com / @googlemail.com yesnono

Consequence: jane.doe@gmail.com and janedoe@gmail.com produce the same hash for Google and different hashes for Meta.

Phone
RuleGoogleMeta CAPIGeneric
Strip all non-digits (spaces, dashes, parentheses)yesyesyes
Country code required (E.164 — no trunk 0, max 15 digits)yesyesyes
Leading + inside the hashed string yes +14155550132 no 14155550132 yes

Consequence: the same phone number produces different hashes for Google (E.164 with the +) and Meta (digits only, no +). Sending one platform's hash to the other never matches.

Hashing values by hand is the manual half of the job. The automated half — checking that your tags send correctly normalized, correctly hashed user data on every release — is what BeaconForge, our automated tag QA, does continuously. Browse all free tools →