PhilanthroData · Free data toolsRuns in your browser · files stay on this device
Contact Duplicate Check

Find the people you have twice.

Check contact exports from any CRM, donor database, or email platform. See likely duplicates, people who appear in more than one system, and duplicates where one copy unsubscribed but another is still being emailed.

Free · runs in your browser
01 / Add your exports

Start with the files you have.

Drop one or more CSV exports here: your CRM or donor database, your email list (Mailchimp, Constant Contact), an event sign-up sheet. Columns are matched automatically and can be adjusted below.

CSV, TSV, or semicolon-delimited text · up to 150,000 rows / 50 MB in total
The fictional sample is loaded below. Adding your files replaces it.
Matching rules, limits, and how to validate

Strong duplicates. Exact personal email plus exact first and last name. Probable duplicates use nickname or similar-name evidence with email, phone, organization, or a full street address. A shared address, ZIP code, or email domain alone never matches two people, so spouses and housemates stay separate.

Review flags. Shared inboxes (info@, office@), the same email with different first names (often a couple sharing one address), Jr./Sr. conflicts, and repeated record IDs need a person to look. Nicknames (Bob and Robert) are a guide, not proof.

Found in both. When the same person appears in two different systems, such as your CRM and your email list, the pair is listed separately and never counted as a duplicate. That overlap is normal; it shows which contacts your systems share.

Unsubscribe conflicts. If you map an email status or opt-out column, a duplicate group where one copy is unsubscribed and another is not is flagged. Emailing the other copy could reach someone who asked you to stop.

Recency. Each source row is counted, including linked and candidate records. A populated Last Activity Date takes precedence over Updated At / LastModifiedDate. Blank activity dates fall back to modified dates. Invalid populated activity dates are flagged rather than replaced. Dates accept YYYY-MM-DD with optional time, or US MM/DD/YYYY; future dates are separate. Date-only age uses calendar days.

Coverage and scale. Blocking narrows comparisons using email, person ID, phone, name + company, and name + street / locality. Fuzzy matching needs a common first initial and first three last-name characters within a company, so some typos are missed. Blocks over 250 rows are skipped; runs stop at 1.5 million comparisons or 100,000 evidence pairs. Any such limit is shown as partial coverage. “No candidates” is not proof that a database is clean.

Validation. The sample files have known answers, and a green bar confirms the tool found them. On your own data, spot-check ten groups before merging anything. Email syntax is checked here; whether an address can actually receive mail is not.

Want help cleaning this up?

A PhilanthroData volunteer can walk your team through the results and help you merge duplicates safely in your CRM. Free for small nonprofits.

Request a free walkthrough