Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →In a DEV Community post dated September 26, 2026, Onizuka reports that two commercial sanctions-screening APIs gave different risk verdicts on 80 flagged hits when the author ran 1,000 common Eastern European and Central Asian names through both at a 0.7 threshold, individuals only. The result is the author’s own. It has not been reproduced, the second provider is not named, and neither tool is an OFAC product, despite the post’s title. What the test illustrates is how much a screening outcome depends on configuration, list scope, and matching method, and how little a raw match count tells you by itself. The original post is the primary source for every figure below.
What the author reported, and what it cannot establish
The post is a self-reported experiment. The table sets out each element as the author describes it, with a note on what it does and does not let a reader conclude.
As an Amazon Associate I earn from qualifying purchases.
| Element | As the author describes it | What it does and does not establish |
|---|---|---|
| Name sample | 1,000 common Eastern European and Central Asian names | Results depend heavily on which names were chosen. Common names in one region collide with one another and with list entries in ways a random sample would not. The full name list is not published. |
| Scope | Individuals only | Entity records were excluded. The post does not show how the counts would change with entities included. |
| Threshold | 0.7 | A test parameter the author chose. |
| Divergent results | 80 divergent risk verdicts | Counted among flagged hits, not among all 1,000 names. No complete dataset, protocol, or result table is published. |
| Second provider | Unnamed | It cannot be identified, reproduced, or assessed from the post. |
| Worked example | The name “Sergei Ivanov” | Reported as 101 total matches from one API across OFAC, UN, and EU lists, and 23 flagged matches from the other. These are the author’s excerpts, not authenticated API logs. |
Reading the 80 figure correctly
80 flagged hits, not 80 of 1,000 names
The headline can be read as saying that 80 of the 1,000 names produced conflicting outcomes. The post’s own wording is narrower: 80 divergent verdicts among flagged hits. A single name can be flagged by one tool, by both, or by neither, and the post’s counts do not show how many names ended with different final decisions. Dividing 80 by 1,000 to get 8% would produce a figure with no defined meaning in this test, because the denominator was flagged hits.
Recommended Free Tools
Totals and flagged counts are different units
The “Sergei Ivanov” comparison sets a total-match count from one API against a flagged-match count from the other. If one figure includes every candidate returned and the other includes only candidates that met a flag condition, some or all of the gap is definitional rather than a difference in judgment. The post does not say which definition each provider used. Before comparing any two tools, confirm that both counts describe the same stage of the output.
#1 Best Overall
The threshold is a setting, not a finding
A similarity threshold determines how strong a candidate must be before the tool returns or flags it. Lower the threshold and more candidates surface; raise it and fewer do. A shared number does not guarantee shared behavior, because each engine computes its own similarity score. OFAC does not prescribe a threshold for anyone. On whether it recommends a specific match threshold, its answer in OFAC FAQ 250 reads:
“OFAC cannot make such a recommendation because each search has its own unique set of facts surrounding it.”
Thresholds therefore belong to your own risk assessment and written procedures, and a setting chosen for an experiment is only one input to that process.
How fuzzy name search produces different candidates
OFAC’s Sanctions List Service includes a Sanctions List Search that uses fuzzy logic on names to find potential matches on the SDN and Consolidated Non-SDN lists. According to OFAC FAQ 246, only the name field invokes fuzzy logic; other fields use character matching. OFAC FAQ 249 names Jaro-Winkler and Soundex among its scoring techniques, says the search compares complete strings and split name parts, and returns the higher of those scores.
Rank #3
That matters for cross-tool comparison because two engines can rank the same input differently when they weigh spelling, phonetic similarity, and the way a name is split into parts in different ways. The post does not say which techniques either commercial API uses. OFAC’s description of its own search does not describe those products either, so treat it as an illustration of how fuzzy matching works rather than a specification of the vendors’ behavior.
Reading the response example
The post includes one response in which a single candidate is an exact OFAC SDN match and numerous others are fuzzy matches. One of the fuzzy matches reportedly carries an explanation that shows no shared tokens between the input and the candidate’s name. That is worth attention, but the post does not say which technique generated it. Similarity from characters or phonetics can produce a match with no token overlap, so the explanation field is the only way a reviewer can tell. A usable response should expose at least the following:
Rank #4
- The match type, exact or fuzzy, and the field that matched.
- The name variant that matched and the list entry it came from.
- The score and the technique that produced it.
- The identifiers on the listing that a reviewer can compare.
- The list source and the list version or date the tool used.
What a name hit needs before it means anything
OFAC’s guidance is direct. Organizations should follow their own sanctions compliance policies and investigate potential matches by examining the complete listing and comparing its identifiers with transaction or customer information. Useful fields include aliases, nationality, identification numbers, date and place of birth, and addresses. OFAC also warns that many potential matches are false positives (OFAC FAQ 5). A name-only hit is therefore an alert for review, not proof of identity.
A workable review sequence looks like this:
- Open the complete listing entry, not only the name line the tool returned.
- Compare aliases, nationality, identification numbers, date and place of birth, and addresses with your own customer or transaction data.
- Record which identifiers agree, which conflict, and which are absent from your data.
- Disposition the hit and escalate it under your written sanctions compliance procedure, keeping the record together with the list version used.
Aliases need separate handling. OFAC’s advanced sanctions list data model can supply additional metadata, supports multiple languages and character sets, and distinguishes weak aliases from strong ones. It also directs users to program tags when determining how to treat a true hit. If a vendor collapses those distinctions, the reviewer loses information that OFAC’s own format keeps.
Best Value
Comparing screening tools beyond match counts
A count of matches shows how many candidates a tool returned under one configuration. It does not show whether the list was current, whether the candidates were correct to return, or whether a reviewer can reconstruct the decision afterward. The framework below is our own synthesis of OFAC’s published descriptions of its list data, search, and guidance, applied to the questions this test raises. The post does not name its second provider, so no vendor is ranked here.
| Axis | Why it matters | Questions to put to a vendor |
|---|---|---|
| Lists and jurisdictions | Two tools reporting “OFAC matches” may screen different lists or different list versions. | Which lists are screened, from which source, and is the UN and EU coverage in the same record set? |
| Data source and update cadence | A stale list produces results that do not reflect current designations. | How often is the list refreshed, and is the refresh time recorded with each result? |
| Aliases, transliteration, and character sets | Names from Eastern European and Central Asian languages are often transliterated inconsistently across sources. | Are multiple languages and character sets supported, and how are weak aliases treated? |
| Returned identifiers and explanations | A reviewer needs the data to decide, and a bare score does not supply it. | Does each hit show the matched field, name variant, score, technique, and listing identifiers? |
| Threshold controls | A single default may not fit your risk assessment. | Can thresholds be set per list, per entity type, or per use case, and is each setting logged? |
| Review workflow and evidence retention | Decisions must be reproducible when someone asks why a hit was cleared or escalated. | Are dispositions, reviewer identity, and inputs stored, and for how long? |
Is OFAC’s public search a substitute for an API?
OFAC’s Sanctions List Service provides current list data for download and a public search. It is an authoritative reference for confirming a listing. OFAC’s published guidance does not establish that the public search is designed for continuous automated use, so do not assume it can serve as a production screening feed. Check OFAC’s terms and your own policy before scripting against it.
The post argues for running two commercial APIs side by side. That is the author’s position, not an OFAC requirement, and OFAC’s published guidance does not require API redundancy. If you adopt the approach, decide in advance how two outputs will be reconciled, which result governs a disposition, and who reviews the cases where they disagree. Running two tools without that rule adds alerts without adding a decision process.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Running a small test on your own stack
The post’s experiment is worth repeating only if it answers a question you actually need answered. A defensible version needs the controls below, and each one changes the result if it is skipped. The closing question in the original post asks which secondary check teams most often forget after a fuzzy high-confidence hit. The steps below build that check into the test itself.
- Build the sample from three sources: names that appear on the official list (with their aliases, from the Sanctions List Service), names from your own customer base, and transliteration variants of both.
- Record each tool’s threshold, list selection, and version before the run. Do not compare one tool at a tuned setting against another at its default.
- Count candidates returned, candidates flagged, and final dispositions separately, so each number describes the same stage of the output.
- Review a sample of hits against complete listing entries, comparing identifiers, and record the reviewer’s decision for each.
- Log the input, timestamp, and list version for every result so the run can be reproduced later.
- Check whether known listed names come back at all. Missed listed names matter as much as extra alerts, and a match count alone will not reveal them.
A test built this way measures your configuration and your review process, not a vendor’s compliance status. Keep that distinction in any report you circulate internally.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

