Contents
01
In short
- Clean responses
- 597,100
- Held-out test set
- 119,420
- R² at 20 statements
- 0.88
- Top trait agrees, 20 statements
- 68%
You answer the first k statements of a fixed, data-chosen order. For each trait, a linear model estimates what your score would be on the full 50-statement test, then compares it with the scores of real people to give a percentile. Each estimate comes with its typical error, measured on people the model never saw. At 50 statements, no model is involved: the test is scored exactly.
02
What was wrong before
The first version of this project, a Streamlit app, reported a “dominant” trait, and gave nearly everyone the same one. Replaying its code on held-out respondents, it named Openness for 89% of them. Four problems stacked up:
Scale mismatch
The input scaler was fit on centred answers (means near 0), but the app fed it raw 1–5 answers. Every input landed far outside the training range; answering all 2s, 3s, 4s or 5s produced identical predictions.
A softmax across traits
The five saturated outputs went through a temperature-0.15 softmax, so whichever trait saturated highest won for nearly every input.
Wrong direction
A textbook extravert scored lower on Extraversion than a textbook introvert (raw model output 0.64 vs 0.75), and lower than someone answering neutral to everything (0.97).
The wrong question
Big Five traits are separate dimensions, each on its own scale (in this data they are only modestly correlated). Splitting 100% across them has no meaning: being high on one does not make you lower on another. Each needs its own scale, compared with other people.
The rebuild drops the softmax, trains on correctly scaled answers, reports every trait as a percentile on its own scale, and picks the “most distinctive” trait by distance from the median rather than by the largest raw number. The chart below shows how often each trait comes out on top for held-out respondents, before and after.
- Extraversion
- 0%20%
- Neuroticism
- 0%20%
- Agreeableness
- 10%20%
- Conscientiousness
- 2%21%
- Openness
- 89%19%
Old app: the original Streamlit pipeline replayed on held-out respondents. Rebuilt: the trait furthest from the median after 25 statements, as named on your results.
Note: the original issue reported Agreeableness; a replay of the committed code gives Openness. Either way, the output was essentially constant.
03
Data
Training data is the Open Psychometrics IPIP-FFM dataset: anonymous responses to the same 50 statements, collected online between 2016 and 2018 and released for research. Responses were cleaned before use:
| Step | Removed | Remaining |
|---|---|---|
| Responses in the download | — | 1,015,341 |
One submission per network IPC = 1 | 318,496 | 696,845 |
| No statement left blank | 93,523 | 603,322 |
| Every answer between 1 and 5 | — | 603,322 |
| Not the same answer to all 50 | 731 | 602,591 |
Took 50 s to 60 min testelapse | 5,491 | 597,100 |
- Raw rows
- 1,015,341
- After cleaning
- 597,100
- Training
- 477,680
- Held-out test
- 119,420
04
Scoring
The ground truth is standard IPIP scoring: each trait is the mean of its ten statements on the 1–5 scale, with reverse-keyed statements counted as 6 − answer. Percentiles compare that score with the training sample (1,001 stored quantiles per trait, interpolated linearly).
Extraversion
- Statement 1: forward
- Statement 2: reverse
- Statement 3: forward
- Statement 4: reverse
- Statement 5: forward
- Statement 6: reverse
- Statement 7: forward
- Statement 8: reverse
- Statement 9: forward
- Statement 10: reverse
Neuroticism
- Statement 1: forward
- Statement 2: reverse
- Statement 3: forward
- Statement 4: reverse
- Statement 5: forward
- Statement 6: forward
- Statement 7: forward
- Statement 8: forward
- Statement 9: forward
- Statement 10: forward
Agreeableness
- Statement 1: reverse
- Statement 2: forward
- Statement 3: reverse
- Statement 4: forward
- Statement 5: reverse
- Statement 6: forward
- Statement 7: reverse
- Statement 8: forward
- Statement 9: forward
- Statement 10: forward
Conscientiousness
- Statement 1: forward
- Statement 2: reverse
- Statement 3: forward
- Statement 4: reverse
- Statement 5: forward
- Statement 6: reverse
- Statement 7: forward
- Statement 8: reverse
- Statement 9: forward
- Statement 10: forward
Openness
- Statement 1: forward
- Statement 2: reverse
- Statement 3: forward
- Statement 4: reverse
- Statement 5: forward
- Statement 6: reverse
- Statement 7: forward
- Statement 8: forward
- Statement 9: forward
- Statement 10: forward
05
The short form
Question order. Starting from nothing, the training code repeatedly adds the statement that most improves the average R² of a linear model predicting all five full-scale scores. That greedy order is fixed for everyone. Under a linear-Gaussian model, how much uncertainty is left after a set of statements does not depend on the answers given, only on which statements were asked, so asking adaptively gains nothing over a fixed order. The order itself is chosen greedily: a good approximation, not a guaranteed optimum.
One model per length. For every prefix length k from 1 to 49 there is a separate linear model per trait: score = intercept + Σ weight × answer, clipped to 1–5. Answers to other traits' statements are allowed to help, because traits correlate a little. At k = 50 the standard scoring formula is used directly.
Explanations are exact. The “what drove this” list shows weight × (your answer − average answer) for each statement. For a linear model these add up exactly to the difference between your score and an average respondent's.
Uncertainty. The “typical error” is the residual standard deviation of the short-form score on the held-out test set, for that trait and that number of statements. The band drawn around each result is narrower or wider depending on where your estimate lands: for every length and trait, training respondents are grouped by their predicted percentile, and the band spans the middle 68% of how far their full-test scores fell from the prediction. On the held-out test set, 69% of people land inside it on the full test. A single pooled band would be the wrong width near the ends of the scale, where scores cannot go above 5 and a fixed number of points covers many more percentiles at the top than at the bottom.
Wording. A result reads “Strongly” when the estimate is beyond the 85th (or 15th) percentile and even the cautious end of its band is beyond the 80th (20th); “Clearly” needs the 70th and 65th (30th and 35th); anything else is “Leaning”. At 20 statements, people told “Strongly” are on that side of the 70th (30th) percentile on the full test at least 97% of the time.
The full question order
- 1I feel comfortable around people. (Extraversion)
- 2I have frequent mood swings. (Neuroticism)
- 3I sympathize with others' feelings. (Agreeableness)
- 4I am full of ideas. (Openness)
- 5I often forget to put things back in their proper place. (Conscientiousness, reverse-keyed)
- 6I keep in the background. (Extraversion, reverse-keyed)
- 7I have a rich vocabulary. (Openness)
- 8I follow a schedule. (Conscientiousness)
- 9I get stressed out easily. (Neuroticism)
- 10I am not really interested in others. (Agreeableness, reverse-keyed)
- 11I have difficulty understanding abstract ideas. (Openness, reverse-keyed)
- 12I am always prepared. (Conscientiousness)
- 13I talk to a lot of different people at parties. (Extraversion)
- 14I have a vivid imagination. (Openness)
- 15I get upset easily. (Neuroticism)
- 16I have a soft heart. (Agreeableness)
- 17I make a mess of things. (Conscientiousness, reverse-keyed)
- 18I don't talk a lot. (Extraversion, reverse-keyed)
- 19I often feel blue. (Neuroticism)
- 20I feel little concern for others. (Agreeableness, reverse-keyed)
- 21I get chores done right away. (Conscientiousness)
- 22I don't mind being the center of attention. (Extraversion)
- 23I am exacting in my work. (Conscientiousness)
- 24I insult people. (Agreeableness, reverse-keyed)
- 25I take time out for others. (Agreeableness)
- 26I use difficult words. (Openness)
- 27I leave my belongings around. (Conscientiousness, reverse-keyed)
- 28I spend time reflecting on things. (Openness)
- 29I am easily disturbed. (Neuroticism)
- 30I do not have a good imagination. (Openness, reverse-keyed)
- 31I seldom feel blue. (Neuroticism, reverse-keyed)
- 32I am quick to understand things. (Openness)
- 33I am quiet around strangers. (Extraversion, reverse-keyed)
- 34I make people feel at ease. (Agreeableness)
- 35I am not interested in abstract ideas. (Openness, reverse-keyed)
- 36I like order. (Conscientiousness)
- 37I am not interested in other people's problems. (Agreeableness, reverse-keyed)
- 38I am relaxed most of the time. (Neuroticism, reverse-keyed)
- 39I shirk my duties. (Conscientiousness, reverse-keyed)
- 40I pay attention to details. (Conscientiousness)
- 41I get irritated easily. (Neuroticism)
- 42I don't like to draw attention to myself. (Extraversion, reverse-keyed)
- 43I am interested in people. (Agreeableness)
- 44I have excellent ideas. (Openness)
- 45I have little to say. (Extraversion, reverse-keyed)
- 46I feel others' emotions. (Agreeableness)
- 47I worry about things. (Neuroticism)
- 48I am the life of the party. (Extraversion)
- 49I start conversations. (Extraversion)
- 50I change my mood a lot. (Neuroticism)
06
Accuracy
All figures are measured on the held-out test set: R² is the share of variance in the full 50-statement score that the short form explains, RMSE its typical error in points on the 1–5 scale.
R² by trait
| QsQuestions | EExtraversionExtraversion | NNeuroticismNeuroticism | AAgreeablenessAgreeableness | CConscient.Conscientiousness | OOpennessOpenness | Mean |
|---|---|---|---|---|---|---|
| 10 | 0.77 | 0.80 | 0.78 | 0.72 | 0.70 | 0.75 |
| 15 | 0.85 | 0.86 | 0.78 | 0.80 | 0.87 | 0.83 |
| 20 | 0.90 | 0.91 | 0.88 | 0.85 | 0.87 | 0.88 |
| 25 | 0.94 | 0.91 | 0.94 | 0.93 | 0.88 | 0.92 |
| 30 | 0.94 | 0.93 | 0.94 | 0.95 | 0.95 | 0.94 |
| 40 | 0.96 | 0.97 | 0.98 | 1.00 | 0.99 | 0.98 |
Against the alternatives
Mean across the five traits, held-out test set.
| QsQuestions | Linear | Prorated | LightGBM | MLP |
|---|---|---|---|---|
| 10 | 0.75 | 0.51 | 0.76 | 0.76 |
| 15 | 0.83 | 0.70 | 0.84 | 0.83 |
| 20 | 0.88 | 0.80 | 0.89 | 0.88 |
| 25 | 0.92 | 0.86 | 0.92 | 0.92 |
| 30 | 0.94 | 0.90 | 0.94 | 0.94 |
| 40 | 0.98 | 0.97 | 0.98 | 0.98 |
| QsQuestions | Linear | Prorated | LightGBM | MLP |
|---|---|---|---|---|
| 10 | 0.379 | 0.530 | 0.376 | 0.377 |
| 15 | 0.314 | 0.419 | 0.311 | 0.312 |
| 20 | 0.262 | 0.341 | 0.258 | 0.260 |
| 25 | 0.219 | 0.280 | 0.216 | 0.218 |
| 30 | 0.188 | 0.250 | 0.186 | 0.187 |
| 40 | 0.106 | 0.128 | 0.110 | 0.107 |
The “prorated” baseline scores only the statements you answered for each trait, falling back to the population mean for traits with none. The learned order and weights beat it at every length tested. At 25 statements, LightGBM reaches a mean R² of 0.919 against 0.917 for the linear model, a gap of 0.002. The site ships the linear model because it is tiny, runs instantly in the browser, and its explanations are exact.
07
Bias check
A fair test should not favour one trait. The results page names your most distinctive trait, the one whose percentile is furthest from 50. Across held-out respondents answering 25 statements, each trait gets that pick for between 19% and 21% of them, close to an even 20%.
Simply taking the highest percentile would not be even: it lands on each trait for between 17% and 25% of people, with Neuroticism on top most often. That is not a model bias, and not a matter of the score distributions having different shapes (after the percentile transform every trait is close to uniform). It comes from how the traits correlate. Neuroticism runs opposite to Extraversion and Conscientiousness (r = −0.22 and −0.24) and is barely related to the other two, so it has the most negative ties to the rest: when the others are low, Neuroticism is often the highest. Agreeableness goes with Extraversion (r = 0.31), so the two tend to be high together and split the wins. Exact scoring of all 50 statements gives the same pattern (Neuroticism highest for 25%).
How often does the short form pick the same trait as the full 50-statement test? For the highest percentile at 25 statements, 80%. For the most distinctive trait, which is what you see, it depends on how many statements you answer:
| Statements answered | Same most-distinctive trait as the full test |
|---|---|
| 10 | 55% |
| 15 | 62% |
| 20Quick | 68% |
| 25 | 73% |
| 30Standard | 77% |
| 40 | 86% |
| 50Full | 100% |
Chance would be 20%. When a profile has two traits about equally far from the middle, the pick can flip with a few more answers, which is why the results page always shows all five.
08
Limitations
- A self-selected sample.
- People who take an online personality test are not everyone. Percentiles are relative to that group, which does not represent any one country or age group.
- Self-report.
- The test measures how you describe yourself, which is related to, but not the same as, how you behave or how others see you.
- Short forms trade accuracy for time.
- At 20 statements the typical error is about ±0.26 points. The band is honest about that; take small differences between traits lightly.
- The error band is a likely range.
- It covers about two in three people with an estimate like yours (69% on held-out data), so about one in three land outside it. It depends on where your estimate lands, not on the rest of your answer pattern.
- High scores are worded more cautiously.
- Near the top of the scale, full-test scores bunch up below the ceiling of 5, most of all for Agreeableness and Openness, so the short form separates high scorers less well than low scorers. At 20 statements, 85% of people truly in the top 5% for Agreeableness are told “Strongly high”, against 98% of the bottom 5% told “Strongly low”. Finishing early widens the gap: at 15 statements it is 4% against 89% for Agreeableness.
- Very high percentiles read a little low.
- The percentile shown is that of the predicted score, and a short-form prediction is pulled toward the average. On Openness and Agreeableness this understates very high percentiles by a few points: with 10 statements nobody is shown above about the 93rd, and at 20 statements people shown at the 90th or above for Openness are truly at a median of the 96th (shown 92nd). The band reaches up to cover this.
- Answer style matters.
- People who gave the same answer to everything were removed from the training data, so a result built from identical or almost identical answers is not meaningful, and the results page says so. Agreeing (or disagreeing) with nearly everything also skews short forms, Neuroticism most: its first reverse-worded statement is number 31 in the order, so shorter tests cannot balance it out. The results page flags that pattern too.
- Not clinical, not for selection.
- Nothing here diagnoses anything, and Big Five scores should not be used to make decisions about people, such as hiring.
- Traits are not destiny.
- They shift gradually over a lifetime and vary with context. A percentile is a description of tendencies, not a fixed label.
09
Credits & privacy
The 50 statements are the International Personality Item Pool Big-Five Factor Markers, in the public domain. Goldberg, L. R. (1992). The development of markers for the Big-Five factor structure. Psychological Assessment, 4(1), 26–42. doi:10.1037/1040-3590.4.1.26.
Response data: Open Psychometrics, Big Five (IPIP-FFM) responses, 2016–2018 (download). Thank you to everyone who contributed their answers.
Privacy. The site is static files. Scoring runs in your browser; no answers, results or identifiers are sent anywhere, there are no cookies and no analytics. Share links carry answers after the #, which browsers do not send to servers.
Model v2.2.0, trained 2026-10-10. Take the test.