Skip to content

Rink coordinates

also: x and y · shot location · event location

Where on the ice a play happened, in feet, already turned so every team attacks the same end.

Formula
x runs -100 to 100 along the 200-foot rink; y runs -42.5 to 42.5 across its 85-foot width

The raw feed gives coordinates in the building's frame, not the game's. Teams change ends between periods, so the same shot from the same spot lands at opposite signs depending on which period it came in. Anyone binning shots by distance without fixing this gets two mirrored clouds and a shot-quality model that learns nothing.

These are normalised before they are stored, so every event is expressed as if the shooting team were attacking the same end all night. From 2019-20 the feed states which side the home team defended and that is used directly; before that it is inferred from the sign of a team's own attempts, which agrees with the stated value on 4,429 of the 4,430 game-period-team combinations where both exist.

That normalisation is what makes distance, angle and zone comparable across periods, seasons and buildings, and it is the step that usually costs a week when people build this themselves.

The common mistake

Assuming a feed has done this for you. Most have not, and the failure is silent: the numbers look reasonable and the model is quietly fitting two different rinks.

Where to get it

Related

Rink coordinates from the API

500 free credits on signup, no card. REST or MCP.

Get a free key