Every football app gives players a number out of ten. Almost none of them tell you how it was worked out. Today we are introducing D-Score, Dribble's own rating for players, managers and referees, and we are publishing exactly how it works.
There are two D-Scores for everyone:
- Match D-Score: one rating for each match.
- Season D-Score: the season average so far.
Both sit on the familiar 0 to 10 scale, where 6.5 is an average performance. Every D-Score comes with receipts: the moments that pushed it up and the moments that pulled it down.
What fans see today, and where it falls short
The ratings most fans quote come from FotMob, Sofascore and WhoScored. A 2025 study in the Journal of Sports Sciences compared all three and found:
- Nobody shows their working. The algorithms are not disclosed.
- Everyone starts from a fixed score. Players begin at 6.0 on WhoScored and FotMob and 6.5 on Sofascore, then move up or down as events are counted.
- Attacking actions count most. Shots on target, key passes and successful take-ons had the biggest effect on ratings. Defensive actions such as clearances mattered less.
- The apps disagree. WhoScored rated players significantly lower overall, so a 7.4 on one app is not a 7.4 on another.
WhoScored is also reported to add a bonus or penalty for the team's result, on top of what the player actually did.
Analysts have better tools. Possession-value models such as American Soccer Analysis's goals added, StatsBomb's on-ball value and the open-source VAEP value every action by how much it changes the chance of a goal at either end. They are rigorous, but they report in goals for analysts, not as a number a fan can read at a glance, and they do not give you a season figure.
D-Score takes the rigour of a possession-value model and puts it on the scale fans already use, with the working shown.
Six choices, each one a fix
- Value, not volume. An action is worth what it changes. A sideways pass in your own half is worth almost nothing; a pass that takes the ball from halfway to the edge of the box is worth a lot. Busy players do not rate high just for being busy.
- Defending is valued by the danger removed. Winning the ball where the opponent was about to score is worth far more than winning it at halfway.
- Fair across positions. Everyone shares one base, and each position adds only the parts of the game that are its job: a goalkeeper is judged as a goalkeeper, not as an outfield player who happens to wear gloves. Every player is then compared with players in the same position, so an average centre-back and an average striker both score 6.5.
- Performance, not the scoreline. There is no win bonus. Shooting counts through the quality of the chance, so getting into a good position scores better than a speculative effort, and a goal is never counted twice.
- Honest about minutes. A 10-minute cameo is not rated. From 20 minutes, the minutes a player did not play count as average, so one moment cannot produce a 10.
- Receipts on every number. Each D-Score shows its biggest plus and minus moments, and this page explains the method in full.
Player D-Score: how one match becomes one number
Everything is measured in goals first, as how much the player changed their team's expected goal difference, and only turned into a 0 to 10 score at the very end.
Step 1: the value of every spot on the pitch
We split the pitch into a 16 by 12 grid and learn, from millions of real actions, how likely a team is to score from each square before it loses the ball. This is known as expected threat. Moving the ball from a low-value square to a high-value square creates value. Losing it costs what we had there plus what the opponent now threatens, and that swing is counted once, shared by the player who lost the ball and the player who won it.
Step 2: six components, all in goals
| Component | What earns or costs value |
|---|---|
| A · Passing and carrying | The change in expected threat when the ball moves. Every turnover is valued once: what the team had plus what the opponent now threatens, measured where the ball changes hands, so a goal kick that loses a header at halfway is charged at halfway, not in our own box. When an opponent wins the ball straight away, the player who lost it and the player who won it share that swing equally. A ball lost out of play is all on the player who lost it. |
| B · Shooting | Getting the shot: its expected goals (xG) minus the value of the spot it was taken from, so the reward is for creating the chance, not for being in the area. Penalties are left out here; winning one counts under E. A goal is never counted twice. |
| C · Defending and duels | Each ball win (tackle won, interception, recovery, block, clearance) takes the winner's half of the turnover it forced, so the same moment is never counted twice. A loose ball picked up with nobody losing it first earns the value of having the ball there. Clearances earn half, because the ball is often not kept. An aerial duel settles a 50-50 ball, so it is worth half the swing in value, won or lost. Being dribbled past costs half the opponent's threat at that spot. |
| D · Goalkeeping | Shot-stopping counts only the shots a keeper can actually stop: unblocked shots on target. Each one is given its chance of going in, from its distance, its angle, whether it was a header and whether it was a penalty, learned from every shot on target over three seasons. A save earns that chance; a goal costs the rest. A miss off target never counts for or against the keeper. Command of the box: claims, smothers and sweeping are credited with the danger removed, punches with half, and a cross the keeper came for and missed costs half. |
| E · Mistakes and discipline | Errors that lead to a shot or a goal, penalties conceded (−0.76) and won (+0.76), red cards (charged for the minutes left) and own goals. |
| F · Team share | A tenth of the team's expected goal difference, split by minutes played. This gives some credit for pressing and shape that event data cannot see, without using the score. |
One base, a module for each position
Goalkeepers have always been the hardest players to rate, because most ratings are built for outfield players and keepers are then scored on the same list. D-Score does not do that. Everyone shares the same base, and each position adds only what is its job:
| Position | Base (everyone) | Position module |
|---|---|---|
| Goalkeepers | A, E, F, plus ball wins | Shot-stopping and command of the box (D). Not rated on shooting, aerial duels, blocks or being dribbled past. Distribution counts through A, judged where the ball lands. |
| Defenders (centre-backs, full-backs and wing-backs) | A, E, F | Shooting, ball wins, blocks, aerial duels and being dribbled past (B, C). |
| Midfielders (defensive and central) | A, E, F | The same as defenders. |
| Attackers (attacking midfielders, wingers and strikers) | A, E, F | Shooting, ball wins, blocks and aerial duels (B, C). Being dribbled past does not count against them: one-on-one defending is not their job, but winning the ball back high up still earns full credit. |
Each position is then measured against its own average and spread in Step 3, so a keeper's 7.5 means the same as a striker's 7.5: better than about five games in six for that position.
Step 3: from goals to 0 to 10
With m as the minutes played, and μ and σ as the average and spread of full-match value for the player's position:
V = A + B + C + D + E + F
V_full = V + μ × (90 − m) / 90
z = (V_full − μ) / σ
Match D-Score = 6.5 + z
The score is kept between 3.0 and 10.0 and shown to one decimal. Players with fewer than 20 minutes show "Too Few Minutes" instead.
There are six position groups: goalkeeper; centre-back; full-back or wing-back; defensive or central midfield; attacking midfield or winger; striker.
On this scale, 6.5 is an average game for the position, 7.5 is better than about five games in six, and 8.5 is roughly a top 2% game. A 10 needs a performance more than three and a half spreads above the position average.
Two worked examples
| Example | Value V | After minutes | Match D-Score |
|---|---|---|---|
| Centre-back, 90 minutes, no goal, one error | 0.27 | 0.27 | 7.1 |
| Striker, 25-minute substitute, two big chances, one goal | 0.76 | 0.98 | 8.4 |
The centre-back won eight balls in dangerous areas (+0.21), passed and carried well (+0.13), made one error that led to a shot (−0.15) and earned +0.08 as their team's share. Count-based apps often score a game like that around 6.6, because it contains few attacking events.
The striker's two big chances were worth 0.72 on their own. Measured per 90 minutes, 25 minutes like that would be off the scale, capping at 10.0. Counting the unplayed minutes as average gives a fair 8.4: a big moment, clearly visible, but not the best performance of the season.
Season D-Score: the season average so far
A plain average of match ratings treats a 15-minute cameo the same as a full match, and after three games it is mostly luck. The Season D-Score averages the value itself, weighted by minutes, and starts from the position average until there is enough evidence:
S = ΣV / Σm × 90
S_shrunk = (M × S + 450 × μ) / (M + 450)
Season D-Score = 6.5 + (S_shrunk − μ) / σ_season
S is the player's value per 90 minutes, M is their minutes this season, and the 450 is five full matches of average play: the early-season pull. σ_season is the spread of Season D-Scores for the position, and the score is again kept between 3.0 and 10.0.
| Striker | Minutes | Value per 90 | After the pull | Season D-Score | Plain average of ratings |
|---|---|---|---|---|---|
| Three great cameos | 60 | 1.20 | 0.41 | 7.4 (Provisional) | about 8.5, top of the table |
| Regular starter | 1,800 | 0.48 | 0.44 | 7.7 | about 7.4 |
A Season D-Score appears after three rated matches and 180 minutes, and is marked Provisional until 900 minutes. Each competition gets its own Season D-Score, so a player's league form and cup form stay separate. The last five Match D-Scores sit alongside it as form.
Manager D-Score
A manager does not touch the ball, so the Manager D-Score asks three questions about each match:
| Component | Question | Measured as |
|---|---|---|
| Performance (50%) | Did the team play better than expected? | Team expected goal difference minus the expected goal difference for that fixture |
| Result (30%) | Did the team get more than expected? | Points won minus expected points, from the pre-match chances of a win, a draw and a loss |
| Substitutions (20%) | Did the changes help? | For each substitute: the value the player brought on added per 90, minus the value of the player taken off, times the minutes left |
value = 0.5 × performance + 0.3 × result + 0.2 × substitutions
Match D-Score = 6.5 + (value − μ) / σ
Season D-Score = 6.5 + (season average − μ) / σ_season
The season average is pulled towards the average manager over the first five matches, in the same way as for players.
Before each match we estimate how many goals each side should create from their expected goals for and against so far that season. Early in the season we lean on the league average until a team has played eight matches, and home sides get a small boost. Those two scoring rates give the expected goal difference and, through a Poisson model, the chances of a win, a draw and a loss. Beating a strong side is therefore worth more than beating a weak one. The result counts, because results are a manager's job, but it counts for less than how the team played.
Referee D-Score
A good referee is consistent and keeps control. The Referee D-Score measures those two things. It does not judge whether each individual decision was right, which needs video review rather than data.
| Component | Question | Measured as |
|---|---|---|
| Card consistency (60%) | Were bookings in line with how similar fouls are usually punished? | The gap between cards shown and expected cards. Each foul's chance of a card depends on where it happened, how dangerous the attack it stopped was (expected threat again) and whether the player had already fouled repeatedly |
| Game control (40%) | Did the match stay under control? | Fouls in the match compared with what these two teams usually commit and suffer |
card gap = |cards − expected cards|
excess fouls = max(0, fouls − expected fouls)
value = −(0.6 × card gap + 0.4 × excess fouls / 10)
Match D-Score = 6.5 + (value − μ) / σ
Too many cards and too few cards both count against a referee, because both are inconsistent. A match with far more fouls than these teams normally produce suggests the referee lost control of it. We leave VAR reviews out, because not every competition uses VAR and a referee should not be marked up or down for the league they work in.
How we test D-Score
We tested D-Score on every match from July 2023 to October 2026 across our competitions: 18,315 matches and more than 570,000 player performances. Here is how it did.
- It adds up. The sum of a team's player values tracks that team's expected goal difference in the match, with a correlation of 0.84 over 37,184 team performances.
- It is fair. The average Match D-Score is 6.5 in every position group, from keepers to strikers, and each position's share of 8.0+ ratings is close to its share of minutes played.
- It is honest about luck. For players with 1,500+ minutes, Season D-Scores built from odd-numbered and even-numbered matches correlate at 0.43. Football is noisy: half a season is not much evidence, and for goalkeepers shot-stopping over half a season is mostly luck. That is why a Season D-Score is pulled towards the average for its position until a player has enough minutes, by an amount we measured for each position and each part of the rating.
- It predicts. Season D-Scores from the first half of a season predict how a player's team performs with that player on the pitch in the second half (correlation 0.42), twice as well as goals plus assists per 90 (0.21) on the same 7,943 player seasons.
- It makes sense. We review well-known matches by hand, and every surprise is explained by its receipts.
- It is stable. Improvements to the model are released as new, labelled versions, so a player's history does not quietly change. The next one is planned: our data does not yet carry post-shot expected goals (xGOT), and when it does, finishing and shot-stopping will use it in a new version.
Where you will see it
- Logs: Season D-Score columns for players, managers and referees, so you can sort the best performers in any league.
- Lineup Builder: switch D-Score on to see every player's Season D-Score in your formation, and your team's average.
D-Scores are calculated from post-match data and refresh roughly every 72 hours. They are never live.
Sources
- Comparing player rating systems as a metric for assessing individual performance in soccer, Journal of Sports Sciences, 2025
- WhoScored and Sofascore: the main resources for player ratings, Footyroom
- Goals Added: Deep Dive Methodology, American Soccer Analysis
- socceraction: VAEP and expected threat, KU Leuven
- Introducing Expected Threat, Karun Singh, 2018