Photofeeler score calculator
How your photos get scored and a calculator to play with.
How the formula works
Your score starts with the raw votes you receive: No, Somewhat, Yes, Very. Not every vote counts the same, though. Photofeeler's VoterStyles algorithm reweights each one using the voter's own history, summarized as a single number from 0 to 10 called their lean (0 = habitual flatterer, 10 = harsh critic).
What each piece does:
- Base value () is the z-contribution each button gets from a neutral voter (lean = 5).
- Lean correction () controls how strongly each button responds to . A "Very" from a harsh critic shifts z noticeably more than the same lean shift applied to a "No".
- Trust weight () is the share of a vote's weight that survives Photofeeler's quality filter. Low-quality and suspiciously generous votes get most of their weight cut.
- The final score () passes the weighted z-score through the standard normal CDF and scales it by 10. Because is an S-curve (not the bell itself), lands exactly at 5.0 and the ends saturate near 0 and 10.
- The 90% range () tightens as grows. Its width at each z also depends on the bell-curve density and on a global dispersion scalar .
Finding the weights
We fit these constants on 473 Dating-category tests: 25,098 votes in total across Smart, Trustworthy and Attractive. Nelder-Mead optimization minimized a joint loss over the reported median and the five quantiles of the 90% bar. The fitted formula reproduces Photofeeler's reported medians with about 1.7% mean absolute percentage error.
What we learned
The fitted numbers already tell a few stories. The base score below is what a single vote of that type from a neutral voter (lean = 5) would produce on its own. The kept weight is , the fraction of that vote that survives the trust filter. The lean slope is the per-lean-point shift each button adds to the z-score. A bigger slope means the same click counts very differently depending on the voter's history. Switch traits to see how they differ:
- "Very" votes argue hard, but get throttled hard. A single "Very" pulls toward a flat 10.0, yet the trust filter keeps only 26–33% of its weight by default. The algorithm treats anyone clicking "Very" as probably too generous. Its full weight only returns when a habitual harsh critic casts it.
- "No" and "Somewhat" go through almost unfiltered. Kept weights sit near 100% for Attractive and Trustworthy (98% on "Somewhat" for Trustworthy, 94% for Attractive). Smart is the slight exception, keeping 84% of a "No" and 90% of a "Somewhat".
- Harsh critics move the score more than flatterers do. Compare the lean slope row above: on every trait, "Very" is about four to five times more sensitive to voter history than "No" (0.39 vs 0.09 on Attractive, 0.39 vs 0.08 on Smart, 0.31 vs 0.06 on Trustworthy). Concretely, on Attractive, a three-point lean jump from neutral (5) to harsh critic (8) adds 0.39 × 3 = 1.17 to a "Very"'s z-contribution, but only 0.09 × 3 = 0.28 to a flatterer's "No". That asymmetry is why a "Very" from someone who usually clicks "No" lifts your score noticeably more than a "No" from a habitual "Very" voter pulls it back.
- "Somewhat" is close to neutral. Its base score sits near 5 on all three traits, so extra "Somewhat" votes mostly just pull the weighted mean toward the middle.
Why a high Smart score is easier than a high Attractive one
The three traits don't share the same score distribution. Across the 472 photos we have medians for, the share of photos hitting 9.0 or higher is 18.6% on Smart, 14.2% on Trustworthy and 7.0% on Attractive. Standout Smart scores are almost three times as common as standout Attractive scores.
- Smart rewards legible signals. A clean background, good grooming and a fitted suit or blazer read as "put-together" within a second. Voters act on that cue quickly. The bar is categorical: you either look the part or you don't. Photos that clear it tend to land in the 8–9+ range instead of sitting in the middle.
- Trustworthy has the highest floor but a thinner top. Its mean is actually the highest of the three (7.10, versus 6.73 on Smart and 6.74 on Attractive), so most photos drift into the 7s. The 9+ tail is thinner because voters reserve high Trust for warmth cues: a relaxed jaw, real eye contact and a natural smile. Outfit changes can't manufacture that.
- Attractive is the hardest tail to reach. Only 7.0% of photos clear 9.0. The score depends on things you can't change on shoot day (bone structure, skin, body composition) plus things you can (lighting, grooming, wardrobe). Progress usually comes from stacking small wins rather than one switch.
There's also a visible coupling. Among the 97 photos scoring 8.0 or higher on Attractive, the mean Smart score is 8.79 but the mean Trustworthy score is only 7.94, a gap of about 0.85. Voters cool on the Trust rating once a photo looks physically striking, reading the subject as posed or edgy. That's why, once you optimize for looks, Smart climbs alongside Attractive while Trust lags behind.
Interactive score explorer
Drag the sliders to see how different vote mixes and voter leans land on the 0–10 scale.
Defaults to the empirical mean lean for each vote type in our 25,098-vote dataset. Switching trait resets these. "Very" voters run harsher on Trustworthy than on Smart, for example.
View raw algorithm coefficients
The fitted constants used above. The dispersion scalar is 0.38, shared across traits.
| Trait | Button | (base) | (lean slope) | (trust pre-image) |
|---|---|---|---|---|
| SMART | No | -0.769 | 0.081 | 1.000 |
| Somewhat | -0.106 | 0.112 | 1.278 | |
| Yes | 1.090 | 0.187 | 0.114 | |
| Very | 4.003 | 0.392 | -0.648 | |
| TRUSTWORTHY | No | -0.704 | 0.063 | 3.079 |
| Somewhat | -0.063 | 0.130 | 2.029 | |
| Yes | 1.129 | 0.204 | 0.170 | |
| Very | 4.001 | 0.311 | -0.585 | |
| ATTRACTIVE | No | -0.600 | 0.093 | 3.323 |
| Somewhat | 0.083 | 0.114 | 1.597 | |
| Yes | 1.210 | 0.186 | 0.434 | |
| Very | 4.002 | 0.392 | -0.431 |