What Does a Similarity Score of 0.40 Mean?

A similarity score is the cosine similarity between two 512-number face vectors, running from 0 to 1. On our data, 0.40 is the threshold above which two faces are treated as probably the same person. Below it, a result is simply the nearest available stranger.

Last updated Mon Aug 03 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

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


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.

Frequently asked

Is 0.40 a universal threshold for face recognition?
No. A threshold belongs to a specific encoder, a specific index and a specific kind of input. 0.40 is calibrated for 512-dimension ArcFace vectors matched against adult video covers and stills, where the query is usually a compressed video frame.
Why does a face search always return results, even for a person who is not in the index?
Dense vector search ranks every indexed vector by distance and returns the closest ones. There is no "not found" state to return. Absence shows up as a list of low scores, not as an empty result.
Can two different people score above 0.40?
Yes. A threshold is a trade-off, not a guarantee. Set it lower and you catch more genuine matches along with more false ones; set it higher and you lose genuine matches taken at bad angles. Every threshold is wrong in both directions at some rate.