Fuzzy List Matcher

Reconciling a CRM export against a spreadsheet of invoice customers, or matching vendor names from two different ERPs, almost always breaks on small differences, “Acme Corp.” vs “ACME Corporation” vs “acme corp”. Paste both lists, set a similarity threshold and the tool suggests the best candidate in list B for every entry in list A, flagging the ones below threshold for manual review.

How to match two messy lists

  1. 1

    Paste list A

    One entry per line: customer names, product codes, street addresses.

  2. 2

    Paste list B

    The candidate pool. Differences in case, spacing and typos are OK.

  3. 3

    Set a threshold

    Similarity percentage above which a match is accepted (70% is a sensible default).

  4. 4

    Read the report

    Each A item is paired with the best B candidate and a confidence score. Items under threshold are marked for review.

How similarity is measured

The tool uses PHP’s similar_text (a longest-common-subsequence score) and reports the result as a percentage. Higher is better; an exact match is 100%.

Threshold Behaviour
≥ 95% Near-identical, only differences in case or spaces
80–94% Typos, missing punctuation, truncated suffixes
60–79% Word order changes, abbreviations vs full forms
< 60% Likely not a real match, review manually

Tips

  • Normalise first if you know the common noise: lowercase, strip punctuation, collapse whitespace. You will get tighter scores.
  • Strip company suffixes (“Inc”, “Ltd”, “GmbH”) if they appear inconsistently in one list but not the other.
  • Split long addresses, matching “street + city” separately beats matching one concatenated line.
  • Watch for one-to-many. The tool picks the best B match per A entry; it does not prevent the same B from matching multiple A rows.

When to use a stricter algorithm

For large deduplication work, Levenshtein distance or Jaro–Winkler outperform similar_text, especially on names where character position matters. If fuzzy matching drives billing or merges, spot-check 20 random pairs before trusting the output at scale.

Frequently Asked Questions

70% catches most legitimate matches while flagging real misses. Tighten to 85% if list B is clean and you cannot afford false positives; loosen to 55% if both lists are noisy and you plan to review everything manually.

Yes, but normalise first, strip spaces, dashes and country-code prefixes, lowercase emails. Fuzzy matching on raw values will report low scores for structurally identical entries.

Internally the tool lowercases both sides before comparing, so “Apple” and “apple” score 100%.

Yes, matching runs server-side, so your two lists are sent to the tool to be compared. They are processed in memory for that single request and are not stored or logged afterwards.

Related Tools

Tool available in other languages