Glossary

Every number, and where it comes from.

Nothing on LinePal is bought from a stats vendor. The possession figures are measured here, by joining two public NHL feeds that nobody publishes together: the play-by-play, which timestamps every shot attempt, and the shift charts, which record who was on the ice each second. Everything below says what it measures, how it is worked out, and where it matters, what it does not mean.

Shot-attempt metrics · measured at 5v5

All of these describe what happened while a player was on the ice at even strength. They are measurements, not models. No estimate or projection is involved.

SAT% (shot attempts)
Of every shot attempt taken while he was on the ice at even strength, the share that were his team's. Above 50 means his team out-attempted the opposition while he played. This is the NHL's official name for the stat most analytics sites call Corsi For % or CF%.
How it’s calculated

The NHL publishes two things separately: every shot attempt with a timestamp, and a shift chart showing who was on the ice each second. We join them. An attempt is any shot on goal, missed shot, blocked shot or goal. Every one is credited to all ten skaters on the ice, then CF% = attempts for ÷ (attempts for + attempts against).

What it does not mean

It counts shot attempts. It does NOT measure how long a team held the puck, and we make no claim that it does: continuous puck location is not in the public data, so nobody can compute time of possession from it. Attempts are used because a team that spends the period in the other end takes more of them. Treat it as evidence of territorial play, not a stopwatch. It is also team-influenced: all five skaters are credited with the same attempt, so a fourth-liner on a dominant club will out-score a good player on a poor one.

SAT%, zone-start adjusted
Our own variant, and it has no standard name because nobody publishes it: the same shot-attempt share, ignoring the ten seconds after every faceoff. It asks who was out-attempting whom once the advantage of where the shift started had worn off.
How it’s calculated

A player put out for an offensive-zone draw is handed territory he did not earn, and a player buried in his own end is handed the opposite. We track the time since the last faceoff of any strength and count an attempt toward the adjusted figure only when more than ten seconds have passed. About 86% of attempts survive that filter.

What it does not mean

Sheltered players go down and buried players go up. Ovechkin drops 3.4 points. Blake Lizotte gains 3.5. A player whose number barely moves despite easy deployment is genuinely driving play.

USAT% (unblocked shot attempts)
SAT% with blocked shots removed. Known elsewhere as Fenwick For % or FF%.
How it’s calculated

Identical to SAT%, but only shots on goal, missed shots and goals count. It exists because blocking a shot is arguably a skill of the defending team rather than a failure of the attacking one.

What it does not mean

In practice it tracks SAT% almost exactly, so it rarely tells you anything SAT% did not.

PDO
On-ice shooting percentage plus on-ice save percentage. A luck meter, not a skill meter. The NHL officially calls this SPSV%, but nobody does, so it is PDO here.
How it’s calculated

While he was on the ice: goals for ÷ shots on goal for, plus 1 minus (goals against ÷ shots against). Multiplied by 100. The league average is exactly 100 by construction, and it always drifts back there.

What it does not mean

High is not good, it is unsustainable. A player at 109 has had pucks going in at a rate that will stop; at 92 he has been unlucky and is due. Its only real use is predicting that someone's results are about to change.

Offensive-zone start %
Of the faceoffs he was on the ice for, the share taken in the attacking end. This measures how his coach used him, not how well he played.
How it’s calculated

Every faceoff at 5v5 is filed by zone, recomputed from the puck's coordinates rather than the feed's own label, because the league writes blocked-shot zones from the defending team's point of view. Then O-zone divided by (O-zone plus D-zone).

What it does not mean

A high number means sheltered, easy minutes (Ovechkin, 85.8%). A low number means the hard defensive job (Blake Lizotte, 15.0%). Neither one is better. That is why this never feeds a rating.

5v5 ice time per game
Even-strength minutes per game, excluding all special teams.
How it’s calculated

Summed from the shift chart across every second both teams had exactly five skaters out, divided by games played.

Ratings · the 0-100 scale

Ratings are a model. They blend real measured inputs, but the weighting is a judgement call. The sliders are there for you to disagree with.

Overall rating (0-100)
A weighted blend of six axes, mapped onto a scale a fan reads at a glance.
How it’s calculated

Each axis is scored against the rest of the league, blended using your slider weights, then placed on the badge scale. Default weights: goals 35, assists 30, grit 15, skating 10, faceoffs 10, possession 10. An axis a player has no data for is dropped and its weight redistributed. It is never filled in with an average.

What it does not mean

Skaters only. Goaltending, special teams and coaching are not in it, so a club that wins on those will rate lower here than its results suggest.

Goals / Assists axes
Goals and assists per game, measured against the league.
How it’s calculated

Per-game rates blended over the last three seasons, weighted for recency and games played (2025-26 counts most). The league leader in a category scores 100 and everyone else scales in proportion.

Grit axis
Physical play: hits, takeaways, blocks and penalty minutes.
How it’s calculated

Per-game rates from the NHL's official real-time reports, weighted hits 1.6, takeaways 0.7, blocks 0.7, penalty minutes 0.5, then scaled against the league leader.

Skating axis
Top speed, repeat speed, and distance covered.
How it’s calculated

From the NHL EDGE tracking feed: season top speed, number of bursts above 20 mph per game, and distance skated per game.

What it does not mean

EDGE does not cover everybody. A player it misses has no skating score at all. That weight moves to his other axes rather than defaulting him to average.

Faceoffs axis
Faceoff wins per game.
How it’s calculated

Official NHL faceoff totals per game, scaled against the league leader. Applied only to players who actually take draws.

SAT% axis
SAT% expressed on the 0-100 axis scale. The slider is labelled SAT%.
How it’s calculated

Scaled differently from the counting axes on purpose. Goals start at a true zero. SAT% is a share: 50 is average and nobody is ever near zero, so proportional scaling would squeeze the whole league into the top third. The axis is anchored on the league midpoint instead. The leader scores 100, an even player scores 50, and being out-attempted falls away symmetrically.

What it does not mean

Because SAT% is shared by everyone on the ice, this axis carries a team signal as well as an individual one. That is deliberate. It is what lets the rating see a club that wins by controlling the puck rather than by out-scoring people.

Everything else

Expected goals (xG)
What a shot was worth. A chance from the slot is worth far more than one from the point, and xG puts a number on that: the share of shots like this one that go in.
How it’s calculated

A gradient-boosted model trained on 336,000 shots across three seasons. It sees distance, angle, shot type, the time since the previous event and what that event was (so a shot two seconds after another is a rebound), and the strength state. Unblocked attempts only: the league records a blocked shot where the BLOCKER stood, about ten feet nearer the net than the shooter. Empty-net attempts are excluded and left blank rather than zero.

What it does not mean

A model, not a measurement, and it is labelled with its version everywhere it appears. It does NOT know who took the shot, deliberately: that is what makes the gap between goals and expected goals mean something about the finisher. It cannot see the pass before the shot either, which is the single biggest thing missing from public data, so a chance created by moving the goalie across the crease is undervalued.

Goals above expected
Goals scored minus expected goals. What the shooter added beyond the quality of his chances.
How it’s calculated

Summed over a season from the shots the model scored. Positive means he beat the chances he got, negative means he did not.

What it does not mean

One season of finishing is noisy. A forward can run several goals above expectation for a year on shooting luck, which is why PDO exists. Treat a single season as a hint and repeated seasons as a skill.

NHLe
A player's production in another league, translated to what it would be worth in the NHL.
How it’s calculated

NHL points per 82 = (that league's points per 82) × a published factor per league. Sixteen leagues are covered and every factor is cited on the page that uses it.

What it does not mean

A population-level translation, not a forecast. Elite outliers beat it routinely. It says what a typical player making that jump has scored.

Balance
How well a line or pairing covers the jobs it has to do, rather than how good its players are on average. Shown as the balance chip on each line in the Line Lab; the Balance slider sets how much it counts toward the team rating.
How it’s calculated

A unit is scored on whether somebody on it can do each job. The best man per facet, not the average, because a line needs one finisher, not three. Forward lines are judged on shooting, playmaking and grit; defence pairs on puck-moving and defending, since a pair is not supposed to be a scoring line. Your slider weights steer which jobs count.

What it does not mean

It is not the same as the big number beside it. That one is the average rating of the players in the unit, which is a measure of talent. Fit is a measure of coverage, and it is the one that moves when you rearrange players: swapping two wingers changes who covers which job without changing the sum of the ratings.

Sample floors
When a season is allowed to stand for a player.
How it’s calculated

Ten games before a season may represent a player anywhere he is compared with others: the Line Lab, matchups, rankings, the cap sheet's value column. Twenty games in the rating window before he carries a rating at all. Rankings by the possession rates require ten games for the same reason.

What it does not mean

Player profiles deliberately ignore these floors. A profile is a record of what happened, so a short season belongs there from game one, always shown with its games played beside it.