Ad Data Hash Checker: SHA-256 Hash Email and Phone Values

See how Google Ads and Meta each normalize an email, phone or name before SHA-256, side by side, and find hashes in your file that match neither.

Runs in your browser. Nothing is uploaded.For GoogleFor Meta

Ad Data Hash Checker (SHA-256)

  1. Upload
  2. Check
  3. Download

1 Add values or a file

Choose a file or drag it here

Paste a few values, or load a CSV / Excel file with a raw column and a hashed column · up to 300 MB

Rules last checked: against the official pages:

How to SHA-256 hash an email (and check one)

To SHA-256 hash an email for advertising, the value has to be normalized first, and Google and Meta don't normalize in exactly the same way. This checker shows both side by side, following Google's Customer Match hashing guide and Meta's customer information parameters. Add a column of hashes and it tells you which ones are wrong, and why.

  1. Paste or load values. Paste a few emails or phone numbers, one per line, or load a file. Try the sample to see every common mistake at once.
  2. Add your hashes (optional). Put your hash after a comma on each pasted line, or map the hashed column of your file.
  3. Say what the values are. Emails, phones and US ZIP codes are detected. Names, cities and countries need the type setting or a type column.
  4. Compare Google and Meta. The first values are shown side by side: the normalized text and the hash for each platform.
  5. Read "What went wrong". For hashes that match neither platform, the tool rebuilds common mistakes and names the one that fits. Download the results as CSV.
SHA-256 hash email checker showing Google and Meta normalized values and hashes side by side

Google vs Meta: what happens before hashing

ValueGoogle Ads (Customer Match)Meta
EmailTrim, remove all spaces, lowercase. Gmail and Googlemail: remove the dots before the @ (Google Ads Help); the API guide also removes the +tag. Accented emails won't match.Trim, lowercase. All email formats accepted.
PhoneE.164 with the plus: +16505551212Digits with country code, no plus: 16505551212
First and last nameTrim, lowercase, accents keptLowercase, no punctuation, accents and inner spaces kept
Country and zipNever hashedLowercase and hashed (US zip: first 5 digits)
City and stateNot usedLowercase, no spaces or punctuation, hashed

What to do with the results

  1. Find where hashing happens. It is usually a CRM export setting, a connector, a script your developer wrote, or a spreadsheet formula. The "What went wrong" column tells you which step is missing.
  2. Normalize before the hash, not after. Add trimming, lowercasing and the country code before the hashing step. A hash can't be cleaned afterwards.
  3. Hash per platform. Gmail addresses and phone numbers need a different hash for Google than for Meta. Keep two outputs, or upload plain text and let each platform hash it.
  4. Re-upload the list. In Google Ads, open the list in Audience manager and replace the data. In Meta, edit the custom audience and replace the customers. Then compare the new list size or match score.

Common hashing mistakes

Hashing before trimming and lowercasing

One trailing space or one capital letter changes the whole hash. Google says such files upload without an error, so the problem stays hidden.

Gmail dots left in for Google

Gmail ignores dots, so [email protected] and [email protected] are the same inbox. Google asks you to remove the dots before hashing. Meta's rules only ask for trimming and lowercasing, so when you hash email for Facebook ads and Google from one list, the same address needs two hashes. Dots removed but a +tag kept follows Google Ads Help and counts as a Google match.

Phone hashed without the country code, or in the wrong form

A local number like 650-555-1212 can belong to many countries, so it matches nobody. With the country code, Google wants the plus sign in the hashed text and Meta wants digits only.

MD5, SHA-1 or base64 instead of hex SHA-256

Meta's Marketing API says it supports SHA-256 only. MD5 hashes have 32 characters, SHA-1 hashes 40. A 44-character string ending in "=" is base64, which Google accepts only through its Data Manager API.

Hashed twice, in capitals, or with a line break

Hashing a hash, hashing in capital letters, or including the invisible line break at the end of a line (\n, or \r\n from Windows) all give valid-looking hashes that never match. The checker tests for each one, and for national phone numbers.

Country and zip hashed for Google

Google wants Country and Zip in plain text even in a hashed Customer Match file. Meta, on the other hand, hashes them. Follow each platform's own rule.

Frequently asked questions

How do I SHA-256 hash an email for Google Ads or Meta?

Normalize it first, then hash it. For both platforms: remove spaces at the start and end and lowercase the whole address. For Google, also remove the dots and any +tag before @gmail.com or @googlemail.com. Then run SHA-256 on the result and write it as 64 lowercase hex characters. Paste the email above to get both hashes.

Should emails be lowercased and trimmed before hashing?

Yes. SHA-256 sees [email protected] and [email protected] as completely different inputs, so the hashes have nothing in common. Google and Meta both ask you to trim and lowercase before hashing, because that is the form they compare against.

Why does my pre-hashed customer list match almost nobody?

Usually the values were hashed before they were cleaned: spaces, capital letters, phones without a country code, or Gmail dots for Google. Google’s troubleshooting page warns that such files are accepted but don’t match. Check a sample of rows here with your raw and hashed columns.

How do I hash a phone number for ad platforms?

First add the country code. For Google, hash the E.164 form with the plus sign, like +16505551212. For Meta, hash the digits only, without the plus, like 16505551212. The two hashes are different, so a file hashed for one platform will not match on the other.

Can a SHA-256 hash be reversed?

Not directly — SHA-256 is a one-way function, so there is no key to turn a hash back into the email. That is why platforms ask for it. It is not full anonymity, though: anyone who already has the same email can hash it and compare. Treat hashed lists as personal data.

What does a hashed email look like?

A SHA-256 hash is always 64 characters made of the digits 0–9 and the letters a–f, whatever the length of the email. Meta’s documentation uses [email protected], which hashes to 62a14e44f765419d10fea99367361a727c12365e2520f32218d505ed9aa0f62f.

Need help setting this up? Talk to EmproIT