Football websites can show different stats for the same player because they count different matches, define events differently, use different models, or update their records at different times. Sometimes there is an error. A mismatch alone doesn't tell you which explanation applies.
Before deciding that one website has got it wrong, check what each number actually measures. Two figures beside the same player's name are only comparable when their scope, definition and calculation match.
Key Takeaways
Match the competition, dates and team before comparing player totals.
Check the definitions behind assists, shots and advanced metrics.
Keep totals, per-match figures and per-90 rates separate.
When a discrepancy remains, trace it to individual fixtures.
Start with the matches being counted
The first check is the sample. A league total and an all-competitions total answer different questions, even if both appear under a heading called “Season stats”.
Use this table to narrow down the disagreement before reading methodology pages.
What differs? | First thing to check | What would make the comparison fair? |
|---|---|---|
Goals or appearances | League versus all competitions | The same fixture list |
Career or annual totals | Season versus calendar year | Identical start and end dates |
Team totals | Club, country or both | The same teams and match types |
Assists or shots | Event definitions | The same counting rules |
Per-match or per-90 figures | Denominator and minutes | The same calculation |
Expected goals | Metric variant and model | The same metric from the same model |
Match ratings | Rating methodology | Comparison within one system |
A recently finished match | Update status | Records checked after corrections |
Imagine a fictional striker with eight league goals and two cup goals. A league-only page would show eight; a page covering both competitions would show ten. Both totals fit the stated scope. These numbers are illustrative, not a real player's record.
Dates need the same care. “2025” and “2025/26” are different time windows. A transfer adds another question: are you viewing the player's full season or only the spell at the selected club?
Write down the filters instead of relying on the page's overall appearance. Check whether qualifiers, play-offs or friendlies are included. If those choices aren't explained, leave the comparison unresolved until you can establish the fixture list.
Also separate starts from appearances. A substitute appearance belongs in the latter, but it isn't a start. Check the column heading and tooltip before treating two different participation measures as conflicting records.
An assist depends on the counting rules
Everyday football language isn't always precise enough for a database. “He created that goal” could describe the final pass, an earlier through ball or a shot that produced a rebound. Those are different events.
Opta's event definitions distinguish conventional goal assists from fantasy assists. Its fantasy categories include situations such as rebounds and winning certain penalties or free kicks. Opta also specifies how shots are classified: efforts against the woodwork that do not go in count as off target, while a last-line block can count as a shot on target.
These definitions explain why the label matters. A fantasy-assist tally should not be compared directly with a conventional-assist tally. Likewise, “shot blocked” in a match conversation may not tell you how an event provider coded it.
The useful question is specific: which event was counted on one page and excluded on the other? Find the disputed fixture, then inspect its event record and the applicable definition. Watching the passage of play can help you understand it, but the database's published rules determine what its label means.
Avoid assuming that every website uses Opta, or that two sites share a provider because their totals look similar. Confirm attribution where it is available. If a website doesn't explain its source or definitions, acknowledge that limit instead of guessing.
Per 90 and per appearance answer different questions
A total describes accumulated output. A rate divides that output by a measure of opportunity. Mixing those formats can create an apparent disagreement even when the underlying goals are identical.
Consider a hypothetical player with five goals, 900 minutes and 15 appearances:
Calculation | Arithmetic | Result |
|---|---|---|
Total goals | No division | 5 |
Goals per appearance | 5 ÷ 15 | 0.33 |
Goals per 90 minutes | 5 ÷ 900 × 90 | 0.50 |
The per-90 formula is:
Stat per 90 = stat total ÷ minutes played × 90
All three figures describe the same invented record. None can replace the others without changing the question.
For a scoring comparison, record both the rate and the minutes behind it. A short substitute spell and a season of regular starts provide different amounts of evidence, even when their calculated rates happen to match.
If two per-90 figures disagree, recalculate them from the displayed totals and minutes. Check rounding too. A page displaying a rounded rate may have calculated it from more precise underlying values. Don't reverse-engineer an exact total from a rounded decimal and then treat the difference as proof of bad data.
Expected goals is a model estimate
Expected goals needs another layer of checking because the number depends on a model. Matching the fixtures and shots is necessary, but it doesn't establish that two xG estimates should be identical.
Hudl's explanation of its upgraded expected-goals models, published on 16 May 2022, describes how model design, training data and inputs affect estimates. Its examples include goalkeeper and defender positioning. It also distinguishes pre-shot models from post-shot models, which can incorporate information about the shot after it has been struck.
Read the full metric name. Standard xG estimates chance quality before the outcome is known. Non-penalty xG, often abbreviated npxG, excludes penalties. Post-shot xG addresses a different stage of the attempt. The Hudl explanation provides the modelling context; a site's glossary should establish precisely which variant its column reports.
For your own analysis, choose the question first. If you're comparing the chances two forwards received, use one consistent pre-shot model and the same penalty treatment. If you're examining shot execution or goalkeeping, identify the relevant post-shot measure and its definition.
Don't average two providers' xG totals simply to settle a disagreement. Without knowing their methods, that average has no clear interpretation. Keep the source attached to the number, and use a second model as a separate perspective.
Match ratings belong to their own systems
A match rating compresses multiple observations into one score. Its meaning depends on how that score was constructed.
Sofascore's rating explanation describes a system that weights statistical actions to produce a player rating. That makes its score an output of its methodology. It doesn't establish a universal grade that another website must reproduce.
When comparing ratings, stay within one system where possible. Then inspect the underlying performance: what actions explain the score, and what football question are you trying to answer?
A rating can be a starting point for reviewing a performance. Treating it as the final argument removes the detail you need to assess why the player received it.
Live figures can change after the match
A screenshot also captures a moment in the data's life. Opta's player-stats information page says records can receive post-match corrections. A live figure and a later checked figure may therefore represent different versions of the record.
Note when you accessed each page. Revisit both after the match rather than comparing an old screenshot with a current table. A timestamp doesn't resolve a discrepancy by itself, but it prevents you from overlooking a possible revision.
How to reconcile two conflicting player records
Use a repeatable process. Changing filters and definitions at the same time makes it difficult to identify what caused the difference.
Save the context. Record each URL, access time, player and exact column label.
Align the sample. Match competitions, date range, club or country, and included match types.
Align the measure. Separate starts from appearances, totals from rates, and metric variants from one another.
Compare fixtures. Find the first match where the records diverge. A season total is much easier to investigate once it becomes a single event.
Check definitions and revisions. Read the provider's explanation and confirm that both pages reflect the same update stage.
Document what remains. Report the precise unresolved difference rather than declaring an entire website unreliable.
Copy this comparison template into your notes:
Player:
Website A / Website B:
URLs and access times:
Competition(s), teams and date range:
Exact metric labels:
Totals and minutes, if comparing rates:
Provider or methodology, if disclosed:
First fixture with a difference:
Relevant definition or correction:
Resolution, or evidence still missing:
If the sample, definition and calculation all match and the discrepancy persists, an error remains possible. Check the fixture against an appropriate official record and send the website a concise report with the conflicting entries. You don't need to invent an explanation for a difference the available evidence cannot resolve.
The next time two player pages disagree, resist choosing whichever number supports your argument. Establish what each page counted. Once the matches, definitions and methods are clear, you can decide whether the figures are compatible, meaningfully different or genuinely unresolved.
The Take A player comparison is only as strong as its definitions. Choose the method before choosing the number that wins the argument.