Corsi, Fenwick and expected goals (xG) for every skater, line and team: on-ice shot share, high-danger chances, PDO and zone starts at 5v5, on the power play and on the penalty kill. Computed in-house from official NHL play-by-play and shift reports, as season totals or per-60 rates.
Every number on this page is computed in-house from the NHL's official play-by-play and shift reports, the same primary sources the public advanced-stats sites parse, and each metric was validated against them one at a time before it shipped. Nothing here is scraped from another analytics site, so the tables stay available and consistent even when a third party changes or goes down.
Shot attempts (Corsi), unblocked attempts (Fenwick), shots, goals, scoring chances and high-danger chances all use on-ice attribution taken from the official event reports rather than inferred from a box score. Zone starts and faceoff locations follow the zone the league recorded for each event. Ice time comes from the published shift charts, which is why on-ice rates here line up with the per-60 numbers you see elsewhere.
Players: Individual is a skater's own production. Goals, assists and points, personal shot attempts (iCF and iFF), personal scoring chances (iSCF and iHDCF), expected goals (ixG), rush attempts, penalties drawn and taken, hits, blocks and faceoffs.
Players: On-Ice is what happened while that skater was on the ice, regardless of who touched the puck. Shot-share percentages, goals for and against, expected goals for and against, PDO, and deployment through zone starts and faceoffs. A player can post strong individual numbers on a team that is losing the shot battle whenever he plays, and comparing the two tabs is how you see that.
Teams aggregates the same framework to the club level. Lines covers forward trios with the intersection rule the official reports imply, so overlapping seconds credit every unit that was on the ice. Shifts breaks performance down per shift, and WOWY ("with or without you") splits a player's results by whether a chosen teammate was on the ice with him.
Every view is available at 5v5, on the power play and on the penalty kill, as raw totals or per-60-minute rates. Per-60 is the fair comparison between a first-line forward and a fourth-liner, because it removes the ice-time advantage; totals are the right view when you care about accumulated production, as in most fantasy formats.
Small differences are expected and come from three places: how each site handles blocked-shot attribution, where it draws the boundary of the high-danger area, and how it treats brief goalie-pull sequences when classifying strength. Core counting stats match exactly.
The season tables treat a team as on the power play when its opponent is short-handed and it has the skater advantage, which includes a team pulling its goalie for a sixth attacker against a penalty kill. Even-strength empty-net play is not counted as a power play.
Games are ingested nightly, and the previous week is re-pulled each night so official stat corrections are picked up rather than frozen at whatever was true at the final horn.
Shot-share metrics such as CF% settle down fastest and are reasonably stable inside a season. Anything built on shooting or save percentage, PDO included, needs far longer and is best read as noise until the sample is large. Per-60 rates on small ice-time totals move violently, so check the games and time-on-ice columns before drawing a conclusion.