Fivefold

Model card · v2.2.0

How it works, and how sure it is.

Everything on this page is generated from the same model file the test runs on, so the numbers here are the numbers you get.

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:

  1. 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.

  2. 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.

  3. 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).

  4. 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.

Old appRebuilt model 20% = even split
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:

StepRemovedRemaining
Responses in the download—1,015,341
One submission per network IPC = 1318,496696,845
No statement left blank93,523603,322
Every answer between 1 and 5—603,322
Not the same answer to all 50731602,591
Took 50 s to 60 min testelapse5,491597,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

    1. Statement 1: forward
    2. Statement 2: reverse
    3. Statement 3: forward
    4. Statement 4: reverse
    5. Statement 5: forward
    6. Statement 6: reverse
    7. Statement 7: forward
    8. Statement 8: reverse
    9. Statement 9: forward
    10. Statement 10: reverse
  • Neuroticism

    1. Statement 1: forward
    2. Statement 2: reverse
    3. Statement 3: forward
    4. Statement 4: reverse
    5. Statement 5: forward
    6. Statement 6: forward
    7. Statement 7: forward
    8. Statement 8: forward
    9. Statement 9: forward
    10. Statement 10: forward
  • Agreeableness

    1. Statement 1: reverse
    2. Statement 2: forward
    3. Statement 3: reverse
    4. Statement 4: forward
    5. Statement 5: reverse
    6. Statement 6: forward
    7. Statement 7: reverse
    8. Statement 8: forward
    9. Statement 9: forward
    10. Statement 10: forward
  • Conscientiousness

    1. Statement 1: forward
    2. Statement 2: reverse
    3. Statement 3: forward
    4. Statement 4: reverse
    5. Statement 5: forward
    6. Statement 6: reverse
    7. Statement 7: forward
    8. Statement 8: reverse
    9. Statement 9: forward
    10. Statement 10: forward
  • Openness

    1. Statement 1: forward
    2. Statement 2: reverse
    3. Statement 3: forward
    4. Statement 4: reverse
    5. Statement 5: forward
    6. Statement 6: reverse
    7. Statement 7: forward
    8. Statement 8: forward
    9. Statement 9: forward
    10. 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
  1. 1I feel comfortable around people. (Extraversion)
  2. 2I have frequent mood swings. (Neuroticism)
  3. 3I sympathize with others' feelings. (Agreeableness)
  4. 4I am full of ideas. (Openness)
  5. 5I often forget to put things back in their proper place. (Conscientiousness, reverse-keyed)
  6. 6I keep in the background. (Extraversion, reverse-keyed)
  7. 7I have a rich vocabulary. (Openness)
  8. 8I follow a schedule. (Conscientiousness)
  9. 9I get stressed out easily. (Neuroticism)
  10. 10I am not really interested in others. (Agreeableness, reverse-keyed)
  11. 11I have difficulty understanding abstract ideas. (Openness, reverse-keyed)
  12. 12I am always prepared. (Conscientiousness)
  13. 13I talk to a lot of different people at parties. (Extraversion)
  14. 14I have a vivid imagination. (Openness)
  15. 15I get upset easily. (Neuroticism)
  16. 16I have a soft heart. (Agreeableness)
  17. 17I make a mess of things. (Conscientiousness, reverse-keyed)
  18. 18I don't talk a lot. (Extraversion, reverse-keyed)
  19. 19I often feel blue. (Neuroticism)
  20. 20I feel little concern for others. (Agreeableness, reverse-keyed)
  21. 21I get chores done right away. (Conscientiousness)
  22. 22I don't mind being the center of attention. (Extraversion)
  23. 23I am exacting in my work. (Conscientiousness)
  24. 24I insult people. (Agreeableness, reverse-keyed)
  25. 25I take time out for others. (Agreeableness)
  26. 26I use difficult words. (Openness)
  27. 27I leave my belongings around. (Conscientiousness, reverse-keyed)
  28. 28I spend time reflecting on things. (Openness)
  29. 29I am easily disturbed. (Neuroticism)
  30. 30I do not have a good imagination. (Openness, reverse-keyed)
  31. 31I seldom feel blue. (Neuroticism, reverse-keyed)
  32. 32I am quick to understand things. (Openness)
  33. 33I am quiet around strangers. (Extraversion, reverse-keyed)
  34. 34I make people feel at ease. (Agreeableness)
  35. 35I am not interested in abstract ideas. (Openness, reverse-keyed)
  36. 36I like order. (Conscientiousness)
  37. 37I am not interested in other people's problems. (Agreeableness, reverse-keyed)
  38. 38I am relaxed most of the time. (Neuroticism, reverse-keyed)
  39. 39I shirk my duties. (Conscientiousness, reverse-keyed)
  40. 40I pay attention to details. (Conscientiousness)
  41. 41I get irritated easily. (Neuroticism)
  42. 42I don't like to draw attention to myself. (Extraversion, reverse-keyed)
  43. 43I am interested in people. (Agreeableness)
  44. 44I have excellent ideas. (Openness)
  45. 45I have little to say. (Extraversion, reverse-keyed)
  46. 46I feel others' emotions. (Agreeableness)
  47. 47I worry about things. (Neuroticism)
  48. 48I am the life of the party. (Extraversion)
  49. 49I start conversations. (Extraversion)
  50. 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.

Accuracy of the short form by number of questionsMean R² against the full 50-item score rises from 0.15 after one question to 0.88 after 20 and 0.94 after 30.0.000.250.500.751.0011020304050questions answered →
Linear short form, mean of five traits Each trait Naive prorated scoring LightGBM

R² by trait

QsENACOMean
100.770.800.780.720.700.75
150.850.860.780.800.870.83
200.900.910.880.850.870.88
250.940.910.940.930.880.92
300.940.930.940.950.950.94
400.960.970.981.000.990.98

Against the alternatives

Mean across the five traits, held-out test set.

R² (higher is better)
QsLinearProratedLightGBMMLP
100.750.510.760.76
150.830.700.840.83
200.880.800.890.88
250.920.860.920.92
300.940.900.940.94
400.980.970.980.98
RMSE in points on the 1–5 scale (lower is better)
QsLinearProratedLightGBMMLP
100.3790.5300.3760.377
150.3140.4190.3110.312
200.2620.3410.2580.260
250.2190.2800.2160.218
300.1880.2500.1860.187
400.1060.1280.1100.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:

Share of held-out respondents whose most distinctive trait matches the full test, by test length
Statements answeredSame most-distinctive trait as the full test
1055%
1562%
20Quick68%
2573%
30Standard77%
4086%
50Full100%

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.