Skip to main content

The method, in plain English

How the photo love compatibility test works

Updated 8 min read

Photo Love Compatibility is a free game for fun. You add two photos, your browser finds a face in each one, and it turns a few measurements into a playful score. Nothing about it is magic, and nothing about it is secret. This page shows the whole method, including the exact formula.

Short version: we compare three things. How alike the two faces look to a face recognition model. How alike the two expressions are. How alike a few face proportions are. Then we blend them into one number between 55 and 100.

Try it on your own photos

Love Compatibility by Photos runs in your browser: two photos, one couple selfie or a whole group, scored on mood, face proportions and resemblance. Nothing is uploaded.

How to use it

  1. 1

    Add two photos by dragging, pasting, browsing or using your phone camera.

  2. 2

    Your browser loads the face models from altftool.com and shrinks each photo locally.

  3. 3

    The models find a face in each photo, along with 68 landmark points, 7 expression scores and a 128-number face descriptor.

  4. 4

    Three signals are calculated: face resemblance, mood match and proportion match.

  5. 5

    The signals are blended (40% mood, 35% proportion, 25% resemblance) and turned into a fun score from 55 to 100.

  6. 6

    You see the score, the three signals and one of four match types. Share or copy it if you like.

Step one: finding the faces

The tool uses face-api.js, an open-source library that runs face models inside your web browser. When you add a photo, it is first downscaled on your device. Then the library looks for a face. For each face it finds, it returns three things we use.

If no face is found in a photo, the tool stops and tells you. There is no score in that case. We would rather show nothing than make a number up. If a photo has several faces, such as a group shot, you can pick the face you mean with the face picker.

  • 68 landmark points around the jaw, brows, nose, eyes and mouth.
  • Seven expression probabilities: neutral, happy, sad, angry, fearful, disgusted and surprised.
  • A face descriptor: a list of 128 numbers that a recognition model uses to tell faces apart.

Signal 1: face resemblance (25% of the blend)

Each face descriptor is a point in a 128-dimension space. Faces that the model thinks belong to the same person land close together. We measure the straight-line distance between the two points.

A distance of 0.4 or less counts as 100. A distance of 0.9 or more counts as 0. Anything in between is scaled in a straight line. For reference, two photos of the same person usually land around 0.3 to 0.45, and two strangers usually land around 0.6 to 0.8.

What it means: the recognition model sees some overlap in the features it was trained to use. What it does not mean: that you are related, that you are a good match, or that a person would say you look alike. The model was built to identify people, not to judge chemistry.

Signal 2: mood match (40% of the blend)

The expression model gives each face seven probabilities that add up to about 1. A big smile might read as 0.95 happy. A calm face might read as mostly neutral. We treat each set of seven numbers as a direction and measure how closely the two directions point the same way. This is called cosine similarity. Same mood gives close to 100. Very different moods give a low number.

Mood carries the most weight because it is the part you control. It reflects the moment the photos were taken, not who you are. Two people grinning in a photo booth will match well. The same two people, one laughing and one mid-sneeze, will not.

Signal 3: proportion match (35% of the blend)

From the 68 landmarks we work out five ratios. Ratios are used instead of raw positions, so the size and crop of the photo do not matter.

For each ratio we take the relative difference between the two faces, then average the five. The match is 100 minus that average times 250, kept between 0 and 100. So an average gap of 10% gives about 75.

  • Face shape: face width divided by height (brow line to chin).
  • Eye gap: distance between the eye centres divided by face width.
  • Nose length: bridge to tip, divided by face height.
  • Mouth width: corner to corner, divided by face width.
  • Eye to mouth: distance from the eyes to the mouth, divided by face height.

The exact formula, and why the score is 55 to 100

blend = 0.40 × mood + 0.35 × proportion + 0.25 × resemblance. Then fun score = round(55 + 0.45 × blend). A blend of 0 gives 55 and a blend of 100 gives 100.

The floor of 55 is a design choice, and we are open about it. This is a game people play with someone they care about. A score of 12% would feel like a verdict, and it would not be a fair one, because none of these signals measure anything that matters in a relationship. Keeping the range kind keeps the game fun.

If one signal cannot be measured, for example if the recognition model fails to load, it is left out and the other weights are scaled up to fill the gap. The result screen shows which signals were actually measured.

Match types and score bands

Each result also gets one of four match types. Looks count as similar when resemblance or proportion is 60 or more, or resemblance alone is 50 or more. Mood counts as similar when mood match is 60 or more. Mirror Match is similar looks and similar mood. Same Wavelength is different looks but the same mood. Look-alikes, Different Moods is the reverse. Opposites Attract is different on both.

The score bands are just labels: 90 and up is Off the charts, 80 to 89 is Big match energy, 70 to 79 is Sweet match, and 55 to 69 is A spark to build on.

Same photos, same score

There is no random number anywhere in the method. The models are fixed, the maths is fixed, and the weights are fixed. Run the same two photos again and you get the same result. Swap which photo goes on the left and you still get the same result, because every signal is symmetric.

A different photo of the same people will give a different score. That is expected. Expression and head angle change from shot to shot, and so do the measurements.

One photo, two photos or a whole group

The same method runs whichever way you add photos. With Two photos, each person has their own picture. With One photo together, a couple selfie or any photo with both people in it, the two largest faces are picked and you tap the thumbnails to set who is who. Both faces then go through exactly the same three signals.

With Group ranking you add one group photo. Up to eight faces are used (the eight largest if there are more), and every possible pair is scored with the same formula, so four people make 6 pairs and eight make 28. The pairs are sorted by score, and the pair with the highest mood match and the pair with the highest face resemblance get their own call-outs.

What else the result shows

Under the three signals you get the detail behind them. Feature by feature shows a bar for each of the five ratios, with how far apart the two faces are in percent, the closest feature and the most different one. Expressions side by side lists the top three expression scores for each face. Why this number points at any signal under 70 and gives a plain tip for a retake, because the score follows the photos, not the relationship.

You can save the result as an image in post (4:5), story (9:16) or square (1:1) size, or copy a result link. The link holds the mode, the names and the four numbers only. When someone opens it, the numbers are checked again and the match type is worked out from them, so a link cannot carry anything else.

Privacy: what is downloaded and what stays with you

The only things your browser downloads are the page and the face model files from altftool.com/models. Your photos are read from your device, shrunk locally and analysed locally. They are never uploaded to our servers or anyone else's.

Recent results are saved in your browser's local storage so you can look back at them. They store the scores and names, not the photos. A clear-all button removes them. The share card is made on your device too, and photos are left off it by default. You choose whether to include them. The laptop Camera button draws one frame on a local canvas and stops the camera as soon as you capture or close it.

Limitations, honestly

Face models are sensitive to lighting, head angle, blur, glasses and heavy filters. A turned head squashes some of the ratios. Dim light can make the expression model guess.

Face models trained on public photo datasets are known to work less evenly across ages, skin tones and other groups, because those datasets are not evenly balanced. That can affect how well faces are found and how the numbers come out. It is one more reason to treat the score as play.

Most important: the score is not a measure of attraction, love, personality or whether a relationship will work. It compares two photos. It cannot know anything about the two people in them. If you want more ways to have fun with photos, the other image tools on AltFTool run in your browser in the same private way.

Frequently asked questions

What is the exact formula for the photo love score?

The blend is 0.40 × mood match + 0.35 × proportion match + 0.25 × face resemblance. The score shown is round(55 + 0.45 × blend), so it always lands between 55 and 100.

Why can't I get a score below 55?

The floor is on purpose. None of the signals measure anything meaningful about a relationship, so a very low number would feel harsh without being true. The range keeps it a kind game.

Are my photos uploaded anywhere?

No. Photos are shrunk and analysed inside your browser. Only the model files are downloaded from altftool.com. Saved recent results contain scores and names, not photos.

Why did I get no score at all?

If the face detector cannot find a face in one of the photos, the tool stops instead of guessing. Try a clearer, front-facing photo with better light.

Does swapping the two photos change the result?

No. All three signals are symmetric, so photo A and photo B give the same score in either order.

Is the face model fair to everyone?

Not perfectly. Face models trained on public datasets can be less accurate for some groups. That is a known limit of the technology and a good reason to see the result as a game.

Run a website? Link to this guide if it helps your readers, and see our free backlink sites list for places to get your own site listed.