Ice hockey · Video annotation

Hockey annotation that keeps up with the game.

Players tracked through board battles and line changes on the fly, a puck followed even when it disappears, and every shot, entry and faceoff labelled by people who know the game.

See what we label

PRO · JUNIOR · YOUTH · PRACTICE

ID 3ID 7ID 12ID 18ID 22
TRACKING · 5 ON 5
SHIFT LOGCHANGES · 0
  • Waiting for the first change…
ID 3ID 7ID 12ID 18ID 22ON ICE

Illustrative simulation. Real labels follow your spec.

7.6 cm

A black puck on white ice

Smaller than a tennis ball, often lost in glare or a scrum along the boards.

Live

Line changes mid-play

Players swap while the puck is moving, so every exit and entry has to be caught.

Boards

Ricochets off the glass

The puck ricochets at sharp angles, breaking any path a tracker predicts.

Visors

Helmets hide faces

Visors and padding leave jersey number and team colour as the main identity cues.

What we label

Four kinds of label. One rink.

Pick a label type to see what it looks like on the ice and what lands in your delivery.

Every skater, every shift.

A box and a persistent ID for every player, held through checks and puck battles, with the exact frame each player leaves or joins the ice on a line change.

  • Bounding box and track ID per player per frame
  • Bench exit and entry frames for every change
  • On-ice unit at any moment
  • Team, position and jersey when readable
PLAYERS & SHIFTS · EXAMPLETRACKED SKATERLEAVING ICE
ID 7ID 12ID 18ID 3ID 22 OFF · f 2,410ID 9 ON · f 2,414

Illustrative example on a regulation NHL rink. Figures are invented.

Sample output

A hidden puck is marked as hidden.

The most dangerous label in hockey data is a guess dressed up as an observation. Occluded puck frames are flagged, deflections are marked, and every shift change carries its exact frame.

[
{ "frame": 2501, "xy_px": [1312, 604],
"visible": true },
{ "frame": 2502, "xy_px": null,
"visible": false,
"occluded_by": "board battle" },
{ "frame": 2540, "xy_px": [1388, 571],
"visible": true,
"event": "deflection", "off": "boards" }
]

Example structure with synthetic labels, not a real game. Your delivery follows your spec.

Example JSON

How it works

Game in. Labels out.

  1. 01

    Send footage

    Broadcast, a fixed rink camera or practice video. A link or a bucket is enough.

  2. 02

    Agree the spec

    Classes, event definitions, ID rules and how occluded puck frames are handled, written down and versioned.

  3. 03

    Label and check

    A hockey-literate annotator labels, a specialist reviews board battles and changes, a senior auditor signs off.

  4. 04

    Receive data

    JSON, CSV or COCO in your structure, with a QA report.

Footage we handle

Any rink. Any level.

Broadcast

Camera cuts and replays break tracks, so IDs are re-linked after each cut and replays are never counted twice.

Youth and community rinks

One wide camera and small players, so identity leans on team, position and skating pattern.

Practice and drills

Repeated movements suit stride and shooting-technique labels, set up for the drills you run.

Board battles

The puck vanishes for seconds at a time, so hidden frames are flagged rather than guessed.

Quality you can check

We check where errors hide.

Hockey label errors cluster in the same places: scrums along the boards, players coming off the bench, and the frames around a deflection. Every one of those gets a second look, and every delivery ships with a QA report.

Why hockey is so hard for computer vision
LAYER 1

Primary annotator

Labels every frame to the spec: players, puck, events or faceoffs.

LAYER 2

Specialist reviewer

Reviews the hockey logic: the right player out of a scrum, the right exit frame on a change.

LAYER 3

Senior auditor

Audits a sample including every line change and board battle, and signs off the QA report.

Pricing

Quoted per project. Tested for free.

PER PROJECT

Priced by task and volume

Player boxes, puck frames and event logs take different effort, so we quote after a short call and a look at your footage and spec.

How our pricing works

FREE PILOT

Your messiest shift

One clip, up to about 10 minutes, labelled with full QA and returned in 3 business days. No contract, no payment.

Questions

What hockey teams ask us.

Can you track the puck when it is hidden?

We label every frame where it is visible. Frames where it is hidden, such as in a scrum along the boards, are flagged as occluded, with an estimated position only if your spec asks for one, so your model never treats a guess as an observation.

How do you handle line changes on the fly?

Each player's exit and entry is labelled at the exact frame, so you can reconstruct which unit was on the ice at any moment and calculate shifts and time on ice.

What if jersey numbers can't be read?

We agree identity rules first: what evidence links two appearances, and when a player is marked unknown rather than guessed. Our player re-ID labeling guide sets out the approach.

Read the re-ID labeling guide
Whose event definitions do you use?

Yours, ours, or a mix. Our sports taxonomy lists the hockey events we work with, from faceoffs and zone entries to shot types, and any definition can be adapted.

See the hockey taxonomy
Do you work with youth and community hockey footage?

Yes. Lower camera quality changes what can be labelled reliably, so we agree that in the spec and mark what is out of view instead of guessing.

How is hockey annotation priced?

Per project, by task, footage volume and label density. We quote after a short call. New clients start with a free pilot.

Free pilot

Send us the shift your tracker loses.

The scrum on the boards, the change on the fly, the puck that vanishes. We label it and send the QA report.

Or write to us