The explorer draws a full 200-foot rink and both ends have to stay on screen, because clips regularly start at the far blue line. Below about 900 pixels wide there is no honest way to show that, so it does not try.
There is no phone layout, and a rotated phone is still too narrow. Open this page on a laptop or desktop and it will work from there.
Player and puck positions at 10 Hz before every goal of the 2025-26 season (8,521 goals), reconstructed from the NHL's sprite tracking data.
Clips are not a fixed length. The footage before the shot runs a median of 9.4 seconds, with 90% of clips between 7.8 and 10.6, and each one continues a little past the shot to the puck crossing the line.
A clip carries the entities the tracking supplies for that stretch: the puck, both goalies, and typically ten skaters. That is not a guarantee of who was legally on the ice: about 37% of clips carry more than ten skaters, mostly players at or near the bench mid-change, and a handful carry no goalie at all.
This site is not affiliated with or endorsed by the NHL. Video clips, where they are available, are embedded from the NHL's own player as served.
The corpus is one row per goal and nothing else. Saves, blocks and misses are not counted anywhere. There is no shot-level table behind this, and therefore no denominator.
That is a statement about the counting, not about the clips. Saves, blocks and missed shots happen constantly inside the clip you are watching, and a goal scored off a rebound means the save that created it is right there on screen. What is missing is any record of the ones that did not end in a goal.
So nothing here is a rate, a share of attempts, or a save probability. A count of 40 means forty goals looked like this, not that anything happened 40% of the time, and not that this is a common or an uncommon way to shoot.
The goalie's sight line to the puck spans an angular width. Screening is the part of that width covered by other bodies at the release frame, reported in degrees, using a 1.5-foot body radius. That radius is calibrated rather than assumed: sustained player-to-player contact in this tracking settles at 2.0–2.5 feet of sensor separation, and 1.5 allows for a sight line passing a screener at hip height rather than shoulder height.
It is horizontal occlusion only. The tracking has no vertical dimension, so a player crouched, sprawled or leaning has the same footprint as one standing, and a puck lifted over a screen is not distinguished from one through it.
Corrections and questions: hello@visualpuck.com. This is an early version and reports of anything that looks wrong are genuinely useful.