Performance
How does it accelerate, handle and stop?
1 · Sluggish / wallowy5 · Fast, sharp, confident
Method
Three 1-5 ratings per car, one weighted average, then a Bayesian pull towards the site-wide mean so small samples cannot shout.
3
Criteria per rating
33.3%
Weight per criterion
5 votes
Prior strength
Imaginary votes at the global mean mixed into every car.
0.70/5
Live global mean
The prior actually in force right now.
Every rating is three integers from 1 to 5 - not a single "score out of ten", because that produces answers that cannot be compared between raters. Each criterion anchors both ends of its scale in words.
How does it accelerate, handle and stop?
1 · Sluggish / wallowy5 · Fast, sharp, confident
How practical is it for real life?
1 · Cramped / awkward5 · Roomy, easy, versatile
How dependable and cheap to keep running has it been?
1 · Fragile / costly5 · Bulletproof, low drama
These exact anchors appear next to the radio buttons on the rating form, so the numbers mean the same thing to everyone. Integers only: there is no way to submit 3.5.
mean_c = Σ scores ÷ n, where n is
the number of ratings for that car.raw = Σ (weight_c × mean_c).shrunk = (raw × n + priorMean × 5) ÷ (n + 5).score = shrunk ÷ 5 × 10. Criterion values stay on the 1-5 scale everywhere they are shown.Worked example. Suppose the global mean is 3.5/5. A car with one 5/5 rating against a rival with fifty ratings averaging 4.5/5:
| One-rating car | raw 4.50/5 → (4.50×1 + 3.5×5) ÷ 6 = 3.67/5, headline
7.33/10 |
|---|---|
| Fifty-rating car | raw 4.50/5 → (4.50×50 + 3.5×5) ÷ 55 = 4.41/5,
headline 8.82/10 |
Identical raw opinion, different amount of evidence - and the better-evidenced car wins. That is the entire point of the prior.
With the prior fixed at 5 votes and a global mean of 3.5/5, a car whose raters keep giving 4.5/5 creeps up on 4.5/5 as evidence accumulates - it never jumps:
| 1 rating | 3.667/5 → 7.33/10 |
|---|---|
| 3 ratings | 3.875/5 → 7.75/10 |
| 5 ratings | 4/5 → 8/10 |
| 10 ratings | 4.167/5 → 8.33/10 |
| 25 ratings | 4.333/5 → 8.67/10 |
| 50 ratings | 4.409/5 → 8.82/10 |
| 100 ratings | 4.452/5 → 8.90/10 |
| 250 ratings | 4.480/5 → 8.96/10 |
Read the first and last rows together: one enthusiastic vote on an otherwise average scale produces 7.3/10, while a hundred consistent 4.5/5 votes produce 8.9/10. Without shrinkage, both would read 9/10 and the leaderboard would be noise.
Two consequences worth knowing:
Every score is shown with the number of ratings behind it, and a label derived from that count. These thresholds are the only place a vote count changes a word rather than a number:
| Early days | 1-2 ratings. Treat as a hint, not a verdict. |
|---|---|
| Emerging | 3-9 ratings. Directionally useful, still easily moved. |
| Established | 10-49 ratings. Stable enough to compare within a category. |
| Well rated | 50+ ratings. The prior now contributes little; the crowd does the talking. |
The site never hides a low vote count, and never shows a score without it. If a leaderboard position rests on four ratings, you will see the "4 ratings" next to it.
Every car page separates two kinds of information, and the interface never blurs them:
| Specifications | Manufacturer-published figures for a stated model year and market - generalised and rounded, with the market recorded on the car itself. Reference data: not voted on, not scored, and never presented as a measurement we took. |
|---|---|
| Ratings | What people who used the car said, as three integers and an optional note. Shown with vote counts, timestamps and the confidence label described above. |
Specifications are manufacturer-published figures for the model year and market stated, rounded for readability. Real cars differ by trim, market, options and tyres. Prices are indicative at launch and are not an offer.
Scores are not stored. They are derived on demand from the rating rows, which gives three useful properties:
If you would rather check the arithmetic yourself, the same numbers are available as JSON:
GET /api/cars returns each car with its criterion means, vote count, confidence
label and headline score, and GET /api/stats returns the site-wide mean used as
the prior.