A similarity score is the cosine similarity between two face vectors — two lists of 512 numbers — and it runs from 0 to 1. On our index, 0.40 is the point above which a pair is treated as probably the same person. It is not a percentage, not a confidence, and not a probability. It is an angle.
The number matters because of something most face search tools do not tell you: dense vector search never returns nothing. Ask it for ten results and it returns ten, whether or not the person you are looking for exists in the index at all. The score is the only thing that separates an answer from the closest available stranger.
What is the score actually measuring?
Cosine similarity measures the angle between two vectors, ignoring their length. Two faces encoded into 512-dimension vectors are "similar" when their vectors point in nearly the same direction.
The encoder — ArcFace, in our case — is trained so that images of the same identity produce vectors pointing the same way, and images of different identities produce vectors pointing apart. Pose, lighting, background and hairstyle are largely discarded during detection and alignment before the encoder ever sees the face.
That is why the score does not behave like a visual impression. Two photographs that look alike to you can score low; two photographs that look nothing alike — different lighting, different decade, different hair — can score high.
How should each score band be read?
Treat the score as a band, not a verdict. These are the working bands we use on our own data.
| Score | Reading | What to do with it |
|---|---|---|
| 0.70 and above | Very likely the same identity | Treat as a match; check the source page anyway |
| 0.55 – 0.70 | Probably the same identity | Match, but verify against a second image |
| 0.40 – 0.55 | Above threshold, but weak | Plausible; a bad angle or a lookalike both produce this |
| 0.25 – 0.40 | Below threshold | Resemblance, not identity |
| Below 0.25 | Nearest available vector | Says nothing except that the index had to return something |
The rows below 0.40 are the ones people misread. A result at 0.31 is not "a 31% chance". It is the system telling you it does not have your person and is showing you what it does have.
Source: our index, 2026-08 snapshot. Bands are working heuristics for reading our own results, not a published benchmark.
Why does a threshold exist at all?
Because a threshold converts a continuous distance into a yes/no decision, and every such conversion trades one kind of error against another.
Lower the threshold and you recover more genuine matches shot at hard angles or in bad compression — while admitting more unrelated faces. Raise it and the matches you keep are cleaner, while genuine matches from a profile shot or a low-bitrate stream fall out of the list entirely.
There is no setting that removes both errors. 0.40 sits where it does because our typical query is a video frame: compressed, motion-blurred, rarely front-facing, often small. A threshold tuned on clean studio portraits would be higher and would reject most real queries.
Why does the same person score differently in different photos?
Because the encoder discards pose and lighting imperfectly, and every degradation between the camera and your screenshot moves the vector.
| Condition | Effect on score |
|---|---|
| Frontal, sharp, well lit | Highest scores; the encoder's best case |
| Head turned past roughly three-quarters | Substantial drop; part of the face is simply absent |
| Heavy video compression, low bitrate | Drop; block artefacts corrupt fine facial detail |
| Face small in frame | Drop, and detection may fail before encoding happens |
| Occlusion — hand, hair, object across the face | Landmarks shift, alignment warps, the vector is wrong |
| Years between the two images | Moderate drop; identity signal persists but weakens |
| Cosmetic procedures, significant weight change | Genuine matches can fall below threshold |
| Makeup, hairstyle, hair colour | Little effect; alignment crops most of it away |
The last row surprises people, and the one above it disappoints them. Hair is nearly free; a changed face is not.
Why should you distrust a tool that hides the score?
Because hiding the score hides the difference between a match and a guess, and that difference is the entire result.
A ranked list without scores looks identical whether the top hit is at 0.85 or at 0.19. Both render as "here is your closest match". Only one of them means anything. A tool that shows ten faces and no numbers has taken the single most informative field and removed it — and it has done so in the one situation where the system is guaranteed to produce output regardless of truth.
The honest version of a face search result contains three things: the score, the threshold it is being judged against, and a link to the source image so you can check with your own eyes. If any of the three is missing, you cannot audit the answer.
Data and method
Source. Face vectors computed from cover images and stills indexed by starlikeness across 106 sites.
Sample. 241,792 face vectors in the index; 2,333 identity records with a name attached (our index, 2026-08 snapshot).
Method. Detection with YuNet, producing a bounding box and five landmarks. Alignment to a canonical pose from those landmarks. Encoding with ArcFace into 512-dimension vectors. Retrieval by cosine similarity against the full index. The 0.40 threshold is calibrated for video-frame queries against this index.
Snapshot date. 2026-08.
Known bias. Coverage is heavily concentrated. 2,246 of the 2,333 named identities take their representative image from a single site, and only a small minority of the 106 indexed sites carry Japanese content IDs at all. What we measure is therefore exposure on aggregator sites, not release volume. A performer whose work appears only on sites we have not indexed will not be found, and no score will tell you that — the search will still return its ten nearest strangers.
Limits of the threshold. 0.40 applies to this encoder and this index. It is not transferable to another tool, another model, or another kind of query image. Any claim that a score "means" a fixed probability of identity is overstated: the same number carries different weight depending on the quality of the query.
Citation.
starlikeness (2026). "What Does a Similarity Score of 0.40 Mean?"
Face index, 2026-08 snapshot (n=241,792 faces; 2,333 named identities).
https://starlikeness.com/en/posts/what-similarity-score-means
Related questions
- How face search works, step by step
- Our index contains 7,004 faces with no name
- How much of the industry can we actually see?
- Where our data comes from, and what's missing
- Why Google reverse image search doesn't work for adult videos
You can watch the threshold do its work: upload a frame and read the scores alongside the faces. Detection runs in your browser, only the cropped face region is sent for matching, and the original never leaves your device.