If you've stared at xGF% or NHLe and thought "what is this," you're in the right place. This site is supposed to be where the argument finally has receipts. That only works if the numbers make sense to the people doing the arguing.
Standings come down to one number: points. The way teams earn those points is the part that throws people off.
Win in regulation? 2 points. Win in overtime or shootout? Still 2 points. Lose in regulation? Nothing. Lose in OT or shootout? 1 point. That's the loser point, and it's why a team's record looks like 40-25-12. 40 wins, 25 regulation losses, 12 OT/shootout losses, 92 points (40×2 + 12×1). Two teams can play the same number of games. One has more wins. The other is ahead in the standings. That happens because of the loser point. P% (points percentage) is the cleaner read: the share of available points a team has actually banked.
The rest of the columns:
W4 means won the last 4. L2 means lost the last 2.The basics first:
Now the two skater stats that look simple but lie to you.
Plus/Minus (+/−). On the ice, your team scores at even strength, +1. On for a goal against, -1. Sounds clean. It isn't. A great defenseman on a tanking team has a brutal +/-. A mediocre forward on Colorado looks like a star. The number is mostly about your team and your linemates. Treat +/- as a vibe check, not a verdict.
Shooting % (Shot %). The fraction of a player's shots that become goals. League average is 9-10%. Someone at 18% over a long stretch is either an elite finisher or about to come back to earth. Someone at 4% with normal shot quality is probably about to score. Hot streak or signal? Shot % alone won't tell you. xG will.
TOI / GP (time on ice per game). Average minutes played per night. The fastest tell on what role a coach trusts a player with. A forward at 20+ min/GP is a true top-6 workhorse. 16-19 is middle-6 / Selke territory. Under 12 is fourth-line minutes. For defensemen the bar is higher: 22+ is top-pair, 18-21 is top-4, under 16 is bottom-pair.
Primary points. Goals plus primary assists only (the pass right before the goal), dropping secondary assists out of the count. Why it matters: secondary assists are noisier and credit-y, the breakout pass from the D or the bank off the boards. Primary points strip them out so the number reflects direct goal involvement. A guy with 60 points and 50 primary points is genuinely driving offense. A guy with 60 points and 30 primary is riding linemates.
5v5 splits. Many of the rate stats on this site filter to 5-on-5 play only. That means no power play, no penalty kill, no empty net, no 4-on-4 OT. Just regular full-strength hockey. Why? Power-play opportunities are unequally distributed (your team draws penalties, the coach picks the unit) and that noise washes out real on-ice impact. 5v5 strips it back to the part of the game everyone gets equal reps in. When you see "P (5v5)" or "TOI/GP (5v5)" on a player page, that's the filter.
Power play and penalty kill swing more games than people realize. A great PP can drag a mediocre 5-on-5 team into the playoffs. A leaky PK can sink a great one.
PP% (power play percentage). The share of power play opportunities where a team scored. League average sits around 21%. 25%+ is a real weapon, 30%+ is elite. Under 17% is a problem worth talking about every intermission.
PK% (penalty kill percentage). The share of times shorthanded where a team did not get scored on. League average is around 79%. 82%+ is solid, 85%+ is elite. Anything under 75% and the team has a structural issue down the middle.
Faceoff %. The share of faceoffs a center wins. League average is 50% (because every win is somebody's loss). 54%+ over a season is real top-six C territory. Over 58% is best-in-class. Faceoffs decide possession off every whistle: penalty kills, offensive zone draws, defensive zone draws after icings. A 5-point swing per night across 60 faceoffs is three extra possessions a game.
Two numbers on every goalie page.
Save % (SV%). Out of every shot on net, what fraction the goalie stopped. .910 is roughly league average. .920+ is starter-tier. .925+ is elite. Anything north of .930 over a real sample and you're in Vezina territory.
GAA (goals against average). Goals allowed per 60 minutes. Lower is better. Under 2.50 is starter-tier these days, under 2.30 is great.
GSAx (Goals Saved Above Expected). For every shot a goalie faced, the HighDanger model figures out how often an average NHL goalie would have saved it. Then we add it all up. Did this goalie save more than expected, or less? +15 GSAx over a season means he saved 15 goals his team would have given up with an average guy in net. +25 and up is Vezina-conversation territory. Negative numbers mean the opposite.
GSAx (Playoffs). The same calculation, but restricted to playoff games. We split this out because playoff GSAx is a smaller, higher-leverage sample. A goalie at +5 GSAx over a 14-game playoff run is doing what +25 looks like over a full regular season, because every shot in the postseason carries more weight. Andersen's +14.7 through two rounds is the kind of number that decides a Stanley Cup. Dobeš at +11.5 is right behind him.
xG is short for expected goals. The idea is simple. Every shot has a probability of going in.
A wraparound from behind the net? Basically nothing. 1%. A clean wrister from the slot? Closer to 15%. A tip-in off a cross-ice pass in the crease? Pushing 30%. Add the probabilities up across every shot in a game and you get xG.
So when a team has 3.2 xG, the chances they generated were worth about 3 goals on average. If they scored 1, they got snake-bitten or the goalie stood on his head. If they scored 5, they finished beautifully or got hot. Same chances, different scoreboard.
High Danger chances (HDC). The site's namesake. A high-danger chance is the top tier of shot quality: a puck struck from the inner slot, the area between the faceoff dots and below the top of the circles. The kind of shot a goalie has to make a real save on. We pay attention to HDC because they convert at roughly 15-20%, compared to ~3% for shots from the perimeter. A team generating 12 HDC a game is creating real offense. A team generating 4 is shooting from the parking lot. The xG model weights every shot by quality, so HDC are doing most of the work behind any team's xG number.
The flavors of xG you'll see on this site:
3.0 xGF/60 is driving a top line. At 1.5 xGA/60 on the defensive side, the line he plays on is suffocating teams. These two numbers together tell you whether a player is winning the game when he's out there, separately from how often his team takes shifts.32 SOG but 22 xShots, meaning a lot of his shots were the easy ones the goalie sees coming. Or the other direction: 20 SOG but 26 xShots means he's getting to the dangerous spots even if the volume is modest.Hockey is played at a lot of different levels and 100 points in one of them is not 100 points in another.
The NHL is the hardest. KHL in Russia is a little easier. AHL (the NHL's main minor league) is meaningfully easier. Junior leagues like the OHL where most NHL players spent ages 16-19 are easier than that. So a 100-point OHL kid and a 50-point NHL veteran are not playing the same sport.
NHLe (NHL Equivalency) is the translation factor. Every league has a known multiplier for converting production in that league into "what would he have done in the NHL." 100 OHL points × 0.30 = 30 NHLe points. A 100-point junior kid would project to a 30-point NHL rookie if dropped straight in. 60 AHL points × 0.60 = 36 NHLe points. Now you can stack the two against each other.
This is what powers the Organization strength bars on every team page. NHL roster + drafted prospects in juniors and college and Europe, all converted to one common scale, then averaged by position group. Apples to apples.
The factors HighDanger uses (blended from published estimates):
| League | Factor |
|---|---|
| NHL | 1.00 |
| KHL (Russia) | 0.83 |
| SHL (Sweden) | 0.78 |
| AHL | 0.60 |
| Liiga (Finland) | 0.55 |
| Czech Extraliga | 0.55 |
| Swiss NL | 0.55 |
| Allsvenskan (Sweden 2nd) | 0.45 |
| DEL (Germany) | 0.40 |
| NCAA (US college) | 0.31 |
| OHL | 0.30 |
| WHL | 0.27 |
| QMJHL | 0.27 |
| USHL (US juniors) | 0.20 |
| ECHL | 0.18 |
You'll see NHLe used on team pages in the Organization strength bars. That's how we average out forwards/defensemen across the NHL roster + drafted prospects in junior leagues / college / Europe to get one comparable depth number per team.
Every player has their own page with a few HighDanger-specific labels and visualizations. Here's what they all mean.
Each skater gets a colored label that captures their role. We compute it from points per game, time on ice, penalty minutes, and career games played. The forward labels go (best to baseline):
For defensemen the floors are different because defenders score less:
Goalies get a simple split: Starter (40+ GP) or Backup.
A second label that captures where the player is in his career arc:
On every player chart you'll see a solid line for completed seasons and a dotted line for future projection. The projection isn't a guess. It's the player's own production curve, smoothed and aged forward using a standard NHL age curve (forwards peak around 24-26 and decline after 30, defensemen peak slightly later, goalies have a flatter curve into their mid-30s).
Rate stats (P/GP, SV%, GAA) project differently from counting stats (G, A, P, Wins). Counting stats get a small year-over-year haircut to reflect that nobody plays 82 games forever. Rate stats don't get the haircut. We age them with a gentler curve, so a goalie's SV% projection doesn't crash to .830 the year after a Vezina-caliber season. GAA is inverted because lower is better.
Two visualizations on every player page, and they tell different stories.
Shotmap (skaters). A rink diagram with every shot the player took plotted as a dot. Goals are flagged with 🚨. The pattern tells you the player's style: clustered in the slot (a finisher), spread across the points (a power-play QB), heavy down the wall (a wing). Match the pattern against the goals and you can see whether the player is converting from where they shoot or relying on a few hot spots.
Heatmap (goalies). The inverse: a rink diagram showing where the goalie has been shot at, colored by frequency. Dark concentrations in the slot mean the team in front is giving up high-danger chances. A heatmap that lights up the perimeter and stays dim in the slot means the team plays a structured defensive game and the goalie's job is easier than the raw SV% would suggest.
On the Compare page you'll see bars labeled things like "Goals: 89th" or "+/-: 55th". Those are percentile ranks. They're answering the same question we yell at the TV about: is this guy actually good or just on a hot streak?
89th means he's done better than 89% of the comparable players this season. Top 11% of the league at his position. 50th is exactly average. 1st is bottom of the league. 99th means nobody at his position has done better.
To strip out single-game flukes, the pool only includes skaters and goalies with 10+ games this season. We used to set this at 20+ for skaters but dropped it: real role players and call-ups have stories worth showing at 10-19 games, and the cohort is still big enough to keep the percentiles meaningful. Color: green is 75th+ (elite), amber is 50th-74th (above average), grey is below the median.
Each team gets a colored badge on the standings. Quick read on whether they're making the playoffs. The NHL takes the top 3 in each division automatically, then 2 more wild card spots per conference from whoever has the best remaining records. So:
If you just want the abbreviation → meaning lookup:
Missing a stat or want a clearer explanation? Hockeyops@highdanger.com.