KibiPay
HomeBlog › OFAC & Sanctions

Fuzzy Matching Algorithms for Sanctions (Jaro-Winkler and Beyond)

7 min read OFAC & Sanctions
SanctionsFuzzy matchingScreening
Fuzzy Matching Algorithms for Sanctions (Jaro-Winkler and Beyond)

Sanctions screening is fundamentally a name-matching problem, and names are messy. The same person may appear as different transliterations, with reordered components, missing middle names, or outright typos. Exact string matching would miss almost everyone, so screening systems rely on fuzzy matching algorithms. This post explains the main techniques and the trade-offs they force.

Why exact matching fails

Consider a name on the OFAC Specially Designated Nationals (SDN) list transliterated from another script. It might be spelled Mohammed, Muhammad, or Mohamed; the surname order might differ; a title or patronymic might be included or dropped. A payment message carrying any of these variants refers to the same sanctioned person, but a literal comparison sees three different strings. Fuzzy matching quantifies how similar two strings are, so near-misses can be caught.

Edit-distance methods: Levenshtein

The classic measure is Levenshtein distance: the minimum number of single-character insertions, deletions or substitutions needed to turn one string into another. Turning Smith into Smyth costs one substitution. Normalising the distance by string length yields a similarity score. Levenshtein is intuitive and effective for typos, but it treats all edits equally and is not especially tuned to how human names actually vary.

Jaro and Jaro-Winkler

The Jaro similarity measures matching characters and transpositions between two strings, producing a score between 0 and 1. Jaro-Winkler refines it by boosting the score when strings share a common prefix, on the empirical observation that names that agree at the start are more likely to be the same. This makes Jaro-Winkler particularly popular for name matching, where the beginning of a name is often the most stable part. It handles minor spelling differences well and is computationally cheap, which matters when screening every party in every payment in real time.

There is no single best algorithm. Edit distance catches typos, Jaro-Winkler favours shared prefixes, and phonetic methods catch sound-alikes. Robust screening combines them.

Phonetic algorithms

Some variants are not spelling errors but sound-alikes: names that are pronounced similarly but written differently. Soundex, one of the oldest phonetic algorithms, reduces a name to a code based on its consonant sounds, so that Robert and Rupert, or Catherine and Kathryn, collide. More sophisticated schemes such as Metaphone and Double Metaphone handle a wider range of pronunciations and languages. Phonetic matching is powerful for cross-lingual transliteration but can be noisy, generating many candidates that then need finer scoring.

Token and structural methods

Names are multi-part, so comparing them as whole strings is often wrong. Token-based approaches split names into components and compare the sets, using measures like Jaccard similarity or token sort ratios that ignore word order, so that Ali Hassan and Hassan Ali still match. These methods handle reordered given and family names, missing middle names, and extra tokens such as titles far better than character-level distance alone.

Thresholds and the false-positive problem

Every fuzzy method produces a score, and the firm must set a threshold above which a comparison counts as a potential hit. This is the central tension of screening:

Because sanctions liability is strict, firms generally err toward catching more and tuning down false positives through additional signals: date of birth, nationality, secondary identifiers, and known aliases published on the lists. Good screening is less about one clever algorithm and more about layering methods, incorporating structured identifiers, and continuously tuning thresholds against real alert outcomes.

Beyond classical algorithms

Increasingly, screening blends classical string metrics with machine-learning models that learn from historical analyst decisions which alerts were true or false, helping to suppress repetitive false positives without lowering true-match sensitivity. But the classical algorithms remain the transparent, explainable core, and regulators expect firms to be able to explain why a given match did or did not fire.

Key takeaways

See these rails in motion

KibiPay connects UK Faster Payments, Bacs, CHAPS, Mojaloop mobile money and Solana behind one API, with ISO 20022 messaging and real-time fraud & AML screening.

Open the live console How it works