Fuzzy fingerprint matching is a similarity-based approach that scores how closely two fingerprints agree, rather than requiring exact equality. It is designed to recognise the same device across visits even when a browser update, OS change, or minor hardware variation has altered a subset of signals since the fingerprint was first collected.
In exact matching, a single changed signal produces a mismatch regardless of how many other signals agree. Fuzzy matching avoids this brittleness by evaluating signals individually and producing a composite `matchScore` between zero and one. Signals that agree fully contribute their full weight; those that partially agree or have changed contribute less. The overall score reflects the totality of the evidence rather than any single signal failure.
Fuzzy matching introduces a threshold decision: a match is declared only when the score meets a configured minimum. Setting this threshold is a trade-off between recall, catching returning visitors despite drift, and precision, avoiding false positives where two different devices happen to share enough signals. Exact matching can be combined with fuzzy matching as a fast initial check before the more expensive scored comparison.
In doorman-benny
doorman-benny's `compareFingerprints` returns a `matchScore` that reflects the overall similarity between two fingerprint objects, supporting fuzzy matching alongside exact and partial comparison modes.
compareFingerprints (docs)Frequently asked questions
What is a matchScore?
A matchScore is a number between zero and one representing how similar two fingerprints are. A score of one means every signal agrees exactly; a score of zero means no signals agree at all. Values in between reflect partial agreement, with hardware-bound signals typically weighted more heavily than engine-bound ones.
What causes a fingerprint to change between visits?
Browser version updates frequently change engine-bound signals like canvas and WebGL rendering. OS updates can alter font rendering, audio drivers, and screen metrics. Fuzzy matching is designed to absorb this natural drift and still produce a confident match.
Is fuzzy matching always better than exact matching?
Not always. Exact matching has zero false positives and is faster to compute. Fuzzy matching trades a small false-positive risk for much higher recall of returning visitors whose fingerprints have drifted. Production systems often run both, using the exact check as a fast path and fuzzy scoring as a fallback.

