activatedAtunix timestampSeconds since 1 January 1970 (UTC) when the test went live. Multiply by 1000 for JavaScript's Date.
Voters click one of four buttons for each trait: No, Somewhat, Yes or Very.
On Attractive, enough votes of one kind would settle near 2.2 for No, 5.1 for Somewhat, 9.2 for Yes and 10 for Very.
Photofeeler tracks each voter's lean: how harsh they usually are, from 0 (generous) to 10 (harsh). A harsh voter's Yes is worth more, and their No hurts less.
In our fitted formula, a Yes counts for 49 to 54% of a full vote, and a Very for 31 to 33%, depending on the trait. These are model weights, rather than Photofeeler's actual voter weights.
Each test starts as if about 1.5 voters had already given it a 6.2, so a few votes can't swing it far. One Yes alone gives about 7.2.
The score works like a percentile, so Photofeeler labels a 9.0 "Top 10%". A shaded range shows where it could still land and narrows as votes come in.
Set how many voters clicked each button and how harsh they are. It starts as a typical 20-vote test.
Estimated Attractive score
6.9/10
Likely range 5.7–8.2from 20 votes
Add at least one vote.
An estimate of the range Photofeeler would report from these votes.
How many voters clicked each button. Most tests get 10 or 20 votes; some get 40.
How harsh those voters usually are, from 0 (generous) to 10 (harsh). Starts at the averages in our data.
An unofficial estimate based on 760 tests of men aged 24 to 42, rated mostly by women. The data covers 3–50 votes per test; estimates outside that range are extrapolations. If you already have scores, the percentile calculator shows how rare they are.
Each trait has its own numbers. Pick one to compare.
| Button | Pulls toward | Counts for | Harsh vs generous voter |
|---|---|---|---|
| No | 2.2 | 78% | +0.14 |
| Somewhat | 5.1 | 74% | +0.16 |
| Yes | 9.2 | 54% | +0.16 |
| Very | 10.0 | 31% | +0.17 |
| No | 2.0 | 99% | +0.13 |
| Somewhat | 4.5 | 99% | +0.18 |
| Yes | 9.1 | 50% | +0.17 |
| Very | 10.0 | 33% | +0.19 |
| No | 2.1 | 100% | +0.13 |
| Somewhat | 4.6 | 93% | +0.19 |
| Yes | 9.1 | 49% | +0.17 |
| Very | 10.0 | 31% | +0.14 |
4 tests in our data got exactly the same Attractive votes: 10 Somewhat, 9 Yes and 1 Very. They scored 6.75, 6.92, 7.30, and 9.05. Voter lean helps explain the gap: on the 9.05 photo, the Yes and Somewhat voters averaged a lean of about 9. Given the same votes and leans, our formula puts those tests at 6.8, 7.1, 7.3, and 8.8.
The same thing happens with eight Yes votes on Attractive, once from average voters and once from harsh ones:
Voter leans: 4, 5, 5, 5, 4, 6, 5, 4
Voter leans: 8, 9, 7, 10, 8, 9, 8, 9
The three traits don't spread out the same way. Across the 760 tests in our data, this share scored 9.0 or higher:
So in our data a 9+ on Smart is 6.4 times as common as a 9+ on Attractive. Across all of Photofeeler a 9.0 means "Top 10%" on every trait, but our photos aren't a random sample. They're all men aged 24 to 42 from our own account, rated mostly by women, and on them Smart and Trustworthy clear 9.0 more often than 1 in 10 while Attractive clears it less often. These are counts of tests, which can include repeated photos. Other groups may score differently.
Smart now has the highest average and the most 9+ results: 236 tests, compared with 105 below 5. Our guess is that put-together cues like a fitted blazer or a clean background help, but this comparison alone cannot tell us what caused the scores.
Trustworthy has a median of 7.51, but fewer 9+ scores than Smart. We think top Trustworthy scores come from warmth, like real eye contact and a natural smile, which an outfit change alone won't fix. "Would prefer direct eye contact" and "Would prefer if they were smiling more" are two of the most common Quick Notes in our data.
The hardest trait to push past 9 is Attractive. It probably depends partly on things you can't change on the day, like face and build, and partly on things you can (light, grooming, clothes), so gains tend to come from several small fixes together.
The traits also move together, but unevenly. Among the 166 tests with Attractive at 8.0 or higher, Smart averaged 9.02, versus 6.89 for the rest. The Trustworthy averages were 8.14 and 7.08. Higher Attractive scores go with higher scores on both other traits, with a larger gap for Smart.
For anyone who wants the math. This is exactly what the calculator above runs.
is the button voter clicked and is their lean. is the button's value from an average voter; is how far each point of lean above or below 5 moves it.
is the bell curve's running total: it turns any number into a share between 0 and 1. is fitted per button, so the weight depends only on which button was clicked. Photofeeler's real weights are per voter; this is our stand-in.
averages the vote values, each counted by its weight, plus a starting point of votes at (a score of 6.2).
The same turns into a share of photos, times 10. lands at 5.0, and scores flatten out near 0 and 10.
sets the range width after votes. measures disagreement between buttons: is the count and is the fitted value at that button's mean lean. More disagreement widens the range. We fit its ends to Photofeeler's outer reported values. For the starting 20-vote Attractive example, the estimated 6.9 score ranges from 5.7 to 8.2.
We fitted , and for each trait, plus the starting point, on 760 Dating tests. Together they hold 12,569 votes, and each vote rates all three traits, so 37,707 ratings in total. An optimizer minimized squared score errors, giving each test's three scores equal weight. A second fit matched the outer endpoints of Photofeeler's reported ranges.
On the fitting data, the formula is off by 0.11 points on average. It's within a quarter point of Photofeeler's score 91% of the time, and its worst miss is 0.8. In five validation rounds, keeping entire activation weeks out of the fit, average score error was 0.12 and range-end error was 0.13. Weeks help keep nearby tests together, but we don't have photo or shoot IDs to separate every related test.
These are fitted approximations. Very's value is fixed at 4.0 on the formula's internal scale, which already works out to a 10.0; the data doesn't uniquely determine each button's value and weight. The range accounts for disagreement between buttons, but uses only the average lean within each button, so it misses some voter variation. Photofeeler doesn't publish its formula. Its 2019 research paper says real vote weights are set per voter, by how predictable that voter is.
| Button | |||
|---|---|---|---|
| Attractive | |||
| No | -0.781 | 0.120 | 0.765 |
| Somewhat | 0.032 | 0.143 | 0.632 |
| Yes | 1.380 | 0.198 | 0.108 |
| Very | 4.000 | 0.367 | -0.508 |
| Smart | |||
| No | -0.847 | 0.095 | 2.220 |
| Somewhat | -0.137 | 0.129 | 2.367 |
| Yes | 1.312 | 0.238 | -0.003 |
| Very | 4.000 | 0.403 | -0.445 |
| Trustworthy | |||
| No | -0.799 | 0.086 | 3.827 |
| Somewhat | -0.108 | 0.140 | 1.486 |
| Yes | 1.316 | 0.238 | -0.035 |
| Very | 4.000 | 0.305 | -0.487 |
Shared by all three traits: the starting point votes at , and the range constants in step 5.
Behind every result page is a JSON record with the photo, your test settings, the full vote breakdown and the notes voters left. Most of it shows up on screen in some form.
activatedAtunix timestampSeconds since 1 January 1970 (UTC) when the test went live. Multiply by 1000 for JavaScript's Date.
voteCountnumberHow many votes the test has collected so far.
requiredVoteCountnumberHow many votes you ordered. The test stays open, and the scores keep moving, until it gets them.
isKarmaPoweredbooleantrue for a free Karma test, earned by voting on other people's photos (no guaranteed vote count). false for a test paid with purchased Credits. Every test in our data used Credits.
ratingsByTraitobjectThe headline 0–10 score for each trait: SMART, TRUSTWORTHY and ATTRACTIVE for Dating. It's the middle of the range Photofeeler estimates from your votes, the same number shown at the top of the result page.
quantilesByTraitobjectFive points along each trait's estimated range. The middle one matches the headline score, and we fit the first and last as the range endpoints. Photofeeler doesn't document the exact percentile probabilities in this export; interpreting them as the 10th, 30th, 50th, 70th and 90th is an assumption, not a verified part of its formula.
scoreTalliesByTraitobjectHow many voters clicked each button, per trait, in the order [No, Somewhat, Yes, Very]. [3, 6, 9, 2] on Attractive means 3 No, 6 Somewhat, 9 Yes and 2 Very.
scoreLeansByTraitobjectOne lean per voter, grouped by the button they clicked (same order), so the four lists hold voteCount leans in total. A lean is how harsh that voter usually is on this trait, from 0 (generous) to 10 (harsh). The example above shows how much leans move a score.
noteGroupsarray of objectsThe notes voters left, grouped by text. Each entry has text (e.g. "Great smile!"), count (how many voters picked it) and sentiment: 1 for a positive Quick Note, -1 for a negative one and 0 for a free-text comment.