HOW THE GAME GRADE WORKS
The Game Grade rates one player's night in one game, from 0 to 10. It is really three numbers: Production is what the score sheet says he did, Quality is how well he played, and the Game Grade itself is the blend of the two.
Production reflects what is seen on the score sheet: goals, assists, shots and the other things a box score counts.
Quality is a representation of the quality of play, as determined by our underlying analytics: expected goals, who had the better of the chances while he was on the ice, and the minutes he played against.
We show both halves because they disagree often, and the disagreement is the interesting part. A player can pick up two assists on a night his line was hemmed in its own end. Another can drive play all game and leave with nothing on the score sheet. One number would hide both stories.
What the numbers mean — in one game
The scale is set so that an ordinary NHL game lands in the sixes. These bands are for a single game, and they mean the same thing every night, for every position — goalies included:
There is no separate goalie column here, and that is not an oversight: a goalie is compared against other goalies, a defenseman against other defensemen, so a 9.0 already means the same thing to each of them — roughly the best one game in a hundred at your own position. Across the last two seasons the three groups land in these bands within a tenth of a percent of one another.
Two season numbers
A single game is graded against other players at the same position: a 9 is the best night a defenseman can have, and the best night a winger can have. Over a season that gives you two different questions, so the player page shows two numbers.
Average Game Grade is the plain mean of his game grades. It says how good his typical night was for his position. Averaging squeezes everyone toward the middle, so it reads on its own tighter bands (below).
Overall Grade takes the goals-scale value behind each game grade, averages it over the span, and places it against every skater in the league (goalies against goalies), on the same 0–10 anchors as a single game. A 9.0 Overall Grade is a top-1% season the way a 9.0 Game Grade is a top-1% night. It is the number that orders any list where forwards and defensemen appear together.
The two will not look alike: a leading forward might read 7.6 average and 9.8 overall. That is not a disagreement. One says his ordinary night was excellent for a forward; the other says nobody in the league produced more. The average is measured over a compressed range; the Overall Grade is not.
Short windows reach the tails more often: a last-10 Overall Grade of 9 is common in a way a full-season 9 is not.
A season average is read on a different scale
The bands above are for one game. A player's average Game Grade across a season is banded on its own, tighter scale — and that is not a fudge, it is the only way the labels can mean anything. Averaging eighty games cancels out the big nights and the bad ones, so season averages bunch up in a narrow band where single games spread out:
Read a season average on the single-game bands and almost everybody is “Average”: 631 of the 706 qualified skaters in 2025-26 would land there, and “Elite” and “Very good” would be unreachable — no season average in either season we have has ever touched 8.0. Evan Bouchard's 7.62 was first in the entire league, and it would read “Good”. So season averages get these:
| Season average | Skaters | Goalies | Share |
|---|---|---|---|
| Elite | 7.627.25 and up | 6.906.80 and up | Top 2% |
| Very good | 7.156.90 and up | 6.726.65 and up | Top 10% |
| Good | 6.856.65 and up | 6.586.50 and up | Top 25% |
| Average | 6.426.25 and up | 6.386.25 and up | Middle of the league |
| Below average | 6.056.00 and up | 6.156.05 and up | Bottom 25% |
| Poor | 5.70under 6.00 | 5.90under 6.05 | Bottom 5% |
Goalies get their own column here, and not in the single game table above, which is the whole difference between the two in one line. Over a single game every position is on the same scale. Over a season, averaging squeezes goalies about twice as hard as skaters — a goalie's season averages spread by roughly half as much — so the best goalie in the league never reaches 7.0 and tops out near 6.90. On a shared scale every goalie alive would be capped two bands below the top no matter how well he played. Forwards and defensemen stay close enough to share one scale; goalies do not.
Below a games cut-off there is no band at all. The cut-off is half the games teams have played on average that season, rounded up, from 1 up to 10 games, so a full season needs 10. The average and the game count still show, but no label and no color: a two-game 8.50 is not “Elite” the way an eighty-game 7.60 is, and coloring it that way would be a stronger claim than the sample can carry.
The method
The skater engine is built on a linear model in which every event is worth a fixed number of goals. Production is what the score sheet says he did. Quality is the quality of play, as our underlying analytics measure it: how play went while he was on the ice at five-on-five, on both expected and actual goals, measured against two references at once: the league's rate, and his own team's rate in that game. That second reference is what stops a whole team from being graded on one bad night. The expected-goals model in the formula is our own, not anyone else's; our scoring-chance model is wired in too, with a fitted weight that came out close to zero once expected goals were already counted. The ingredients simply add up, so every player page can show exactly what raised and lowered his number.
Each of the two totals is then turned into a 0–10 rating by asking where it sits among every game played at that position over the last two NHL seasons, regular season and playoffs. That comparison set is frozen. If it were refitted every night, last week's 8.2 would quietly drift, and “his fourth-best game of the season” would reshuffle by itself.
Production: the score sheet
What each event is worth, in goals. The comparison with other players at his position happens afterwards, when the total is ranked.
A secondary assist is worth about three-quarters of a primary one, and faceoffs barely count. Those are the two places ratings like this most often go wrong: they reward points so heavily that the rating becomes the points column again, and they let centers pile up credit by taking forty draws. An empty-net goal counts the same as any other goal.
Quality: how well he played
Quality blends expected goals and actual goals for and against while he is on the ice at five-on-five. Expected goals carry most of the weight on the defensive side and for defensemen (−1.75 vs −0.4375 for forwards, −2.30 vs −0.575 for defense), while for a forward's offense the two count equally (+0.625 each) — one game's goals are partly luck, but not entirely, and a rating that ignored them disagreed with what everyone watching saw.
Two things about expected goals surprise people, so they are worth saying plainly. Angle counts as much as distance. A shot from eight feet out but from beside the post is not the chance that the same eight feet straight on would be — across last season, attempts from that range went in 13% of the time from in front and 6% of the time from a sharp angle, and the model separates the two. A blocked shot carries no expected goals at all. The model is built only on shots that reached the net or missed it. Once a shot is blocked, what the league records is where the block happened rather than where the shot came from, so there is nothing reliable to weigh. A blocked attempt still shows on a player's shot map, and it still counts toward his attempts — it simply adds nothing to Quality.
| Ingredient | Forwards | Defense |
|---|---|---|
| Expected goals for with him on the ice, five-on-five | +0.625 | +1.70 |
| Goals for with him on the ice, five-on-five | +0.625 | +0.425 |
| Expected goals against with him on the ice, five-on-five | −1.75 | −2.30 |
| Goals against with him on the ice, five-on-five | −0.4375 | −0.575 |
| Power-play expected goals for with him on the ice, above the league rate | +0.6 | +0.6 |
| Power-play goal for on ice, above the league rate | +0.1167 | +0.1167 |
| Penalty-kill goal against on ice, above the league rate | −0.09893 | −0.09893 |
| Usage: competition minus teammates, per five-on-five hour | +0.007468 | +0.007468 |
Each five-on-five ingredient is measured 45% against the league rate and 55% against his own team's rate that night.
Defensemen are measured against other defensemen. Chances against weigh more heavily for them than for forwards, and so do chances for (+1.70 vs +0.625) — while actual goals for weigh less (+0.425 vs +0.625).
Tough matchups
A player whose job is to face the other team's best line will give up more chances than one who plays sheltered minutes. That is what the job looks like, not a failure at it. We tested the obvious fix — weighing chances against even more — and it made those players rank worse, not better.
The usage credit exists and is deliberately tiny — a player who draws tougher opponents than his own teammates over the season earns a small bonus for every five-on-five hour, labelled Usage on his page, worth about 0.004 goals in a typical game. Most of the shelter a shutdown player actually gets in this model comes from somewhere else: measuring his on-ice numbers 55% against his own team's rate that night, so being sent out against the other side's best on a night the whole team is under pressure no longer reads as his personal failure. One honest limit: usage is measured over the season, not in that single game. The matchup panel on each page shows who he actually played against that night.
Goalies
Goalies are never rated on how many saves they made. A save count rewards facing a lot of weak shots. Production is goals saved above average: what a league-average goalie would have allowed on that many shots, minus what he allowed. Quality is goals saved above expected, which accounts for how dangerous the shots were, plus a small credit for high-danger saves beyond the usual rate. For goalies the blend leans toward Quality, 60 to 40; for skaters it is an even split.
Who gets a rating
A skater needs seven minutes of ice time and a goalie needs twenty. Below that the page still exists, with his score sheet, but there is no number — a rating from four shifts would be noise.
While a game is live the bar is lower, because seven minutes is a lot to ask ten minutes into a game. It keeps the same proportion — seven minutes is about an eighth of a game — so a skater needs roughly 2:20 after one period and 4:40 after two, and never less than two minutes. Live grades are provisional: they move as the game goes, early ones move the most, and a player who finishes under seven minutes loses his grade at the final.
Preseason games are graded and labelled as exhibition, but never count toward season averages, leaderboards or the season reference; the training-camp card averages them, labelled as camp.
What it is not
The Game Grade describes one game. It is not a measure of how good a player is, and one game is a small sample: a great player has plenty of sixes and an ordinary one will have the occasional nine. It also cannot see everything. A smart defensive read that ends a rush before a shot is ever taken leaves no trace in the data. Use it as a well-informed first look, then go read the page underneath it.
To see one, open any game from Scores, go to the box score, and tap the colored number beside a player's name.
Model version 0.3