The full single-game report: skaters, on-ice, lines, shifts, special teams, and the shot and shift charts. Computed from official NHL play-by-play and shift data, and reconciled to match.
Computing game report…
A box score tells you what a player produced. This report tells you what happened while he was out there, which is usually the more useful question after one game. Every panel below is rebuilt from the NHL's official play-by-play and shift reports for that specific game, so the on-ice attribution comes from the league's own event records rather than being inferred.
One game is a small sample, and it is worth saying plainly: shot shares from a single night describe that night. They are a good account of who carried play and a poor predictor of what happens next. Read them as a record, not a projection.
Overview pairs the score with each side's headline shares, so you can see immediately whether the result matched the run of play. A team that wins on the scoreboard while losing the expected-goals column had a good night from its goalie, its shooters, or both.
Skaters and On-Ice split individual production from on-ice results, the same distinction the season tables draw. Lines shows forward trios with overlapping seconds credited to every unit that was on the ice. Linemates and Opposition is the matchup view: who a player spent his shifts with, and who he spent them against, which is how you judge whether a strong shot share came against a checking line or a top unit.
Special teams lists each power play and penalty kill sequence. Shifts is the per-shift record, including length and starting zone. The shot map plots every unblocked attempt by location, shot type and outcome, and the shift chart lays the night out on a timeline so you can see deployment patterns and who followed whom over the boards.
Distance and angle drive most of the difference between a chance and a shot, which is why the map is more informative than a shot count. A cluster in the slot and a cluster along the wall can produce the same number in the shots column and very different expected-goal totals. Goals are highlighted, and hovering a mark gives the shooter, the outcome, the shot type and the strength state it happened at.
Ice time and shift boundaries come from the official time-on-ice reports rather than the JSON shift feed, because that feed is missing whole games and diverges on brief goalie-pull sequences. On-ice lists come from the official play-by-play, so they reflect the league's record of who was on for each event. Games are re-pulled for a week after they are played, so official stat corrections flow through instead of being frozen at the final horn.