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.

The three criteria

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.

Performance

How does it accelerate, handle and stop?

1 · Sluggish / wallowy5 · Fast, sharp, confident

Utility

How practical is it for real life?

1 · Cramped / awkward5 · Roomy, easy, versatile

Reliability

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.

From three scores to one

  1. Raw mean per criterion. For each criterion, the arithmetic mean of every rating that car has received: mean_c = Σ scores ÷ n, where n is the number of ratings for that car.
  2. Weighted average. The three criterion means are combined with fixed weights (33.3% Performance, 33.3% Utility, 33.3% Reliability) - equal, because the site has no opinion about which quality matters more: raw = Σ (weight_c × mean_c).
  3. Shrinkage towards the global mean. The raw mean is mixed with the site-wide mean using a prior of 5 imaginary votes: shrunk = (raw × n + priorMean × 5) ÷ (n + 5).
  4. Display conversion. The 1-5 figure is scaled to a headline out of 10: 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:

Reference table
One-rating carraw 4.50/5 → (4.50×1 + 3.5×5) ÷ 6 = 3.67/5, headline 7.33/10
Fifty-rating carraw 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.

Why vote counts change the score

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:

Reference table
1 rating3.667/5 → 7.33/10
3 ratings3.875/5 → 7.75/10
5 ratings4/5 → 8/10
10 ratings4.167/5 → 8.33/10
25 ratings4.333/5 → 8.67/10
50 ratings4.409/5 → 8.82/10
100 ratings4.452/5 → 8.90/10
250 ratings4.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:

  • The prior is live. The global mean is recomputed from the current data on every request, so it drifts as the site fills up and every score moves with it - very slightly, and in the same direction for everyone.
  • A negative campaign needs numbers. A handful of 1/5 ratings move a well-rated car barely at all, because the prior outweighs them until the volume is real. The same protection applies to hype.

Confidence labels

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:

Reference table
Early days1-2 ratings. Treat as a hint, not a verdict.
Emerging3-9 ratings. Directionally useful, still easily moved.
Established10-49 ratings. Stable enough to compare within a category.
Well rated50+ 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.

What the score deliberately ignores

  • Specifications do not affect the score. Power, boot volume and 0-100 times are shown as facts and can be sorted by, but they are never folded into the rating - that would let a spreadsheet masquerade as an opinion.
  • Price is not weighted in. It is a filter and a sort, not a dividend. A car is not better for being cheaper; it may be better value, which is a different claim.
  • No editorial influence. There is no staff score, no manufacturer input, no sponsored placement, and no way to pay to move up. Cars exist here because they are in the catalogue, not because anyone was paid.
  • No popularity correction beyond the prior. A car rated by people who own it is rated by people who own it; the site says so rather than pretending the sample is random.
  • No recency weighting. An old rating counts the same as a new one until the person edits or deletes it. Time decay would need ownership data the site does not collect.

Specifications versus ratings

Every car page separates two kinds of information, and the interface never blurs them:

Reference table
SpecificationsManufacturer-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.
RatingsWhat 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.

Recomputing and reproducibility

Scores are not stored. They are derived on demand from the rating rows, which gives three useful properties:

  • Deleting or editing a single rating is reflected immediately, everywhere, with nothing to backfill and no stale cache to warm.
  • The whole leaderboard can be rebuilt from the ratings alone, so there is no "score" field that could drift out of agreement with the votes that produced it.
  • A snapshot of the current aggregate is attached to every ranked entry, so the page can show exactly which numbers were used to order it.

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.

See the current leaderboards About the data