Not all shots are equal
A point shot and a backdoor tap-in are both "one shot" on a stat sheet. We weight every shot by where it came from, so a quiet 30-save night and a stolen game read differently.
The spreadsheet tells you a goalie let in three. TendyIQ tells you where the puck came from, how dangerous it was, and whether the goalie gave themselves a chance to stop it. This page explains how we evaluate and develop goaltenders — the thinking, the metrics, and how to drive the site.
Living document — updated as we shipA goals-against number is an outcome. Development happens one layer below it — in the quality of chances a goalie faced and the decisions they made on each one.
A point shot and a backdoor tap-in are both "one shot" on a stat sheet. We weight every shot by where it came from, so a quiet 30-save night and a stolen game read differently.
Pucks take funny bounces. What a goalie controls is depth, angle, and tracking. We measure those directly so a goalie is credited for doing the right thing.
Every metric is built to point at a drill. "Too deep on in-tight shots" or "beaten glove-high from the slot" is something a coach can actually work on next week.
The whole loop, start to finish. Score a shot right here: the same taps on the web or in the mobile app, and everything on this page is computed for you. Try it, or watch an example.
Tap the net where the puck finished.
Finalize the game and the profile fills in: SV%, GAA,
GQA, GSAx, shot and net-zone heatmaps, and positioning accuracy — all trended
game over game.
Coaches set positioning tolerances per age level and compare goalies on the leaderboard. Every breakdown is built to point at the next drill.
Everything starts here. The attacking half is split into 15 named zones, each rated low, medium, or high danger. A single tap on the rink stamps every shot with its zone — no manual tagging — and that stamp feeds expected goals, net heat, and the leaderboard.
About 26 goals per 100 shots from here against a league-average goalie.
Give every zone its historical goal rate, add them up across the shots a goalie faced, and you get their expected goals against — what a league-average goalie allows on that exact workload. Subtract what they actually allowed and you get GSAx, the single cleanest measure of goaltending: it rewards stopping hard chances and never punishes a goalie for a heavy night of easy ones.
A goalie faces a realistic mix: a handful of slot chances, some high-slot and wing shots, the rest from distance — and allows 2.
That's a .938 save percentage against an expected .884 — the kind of gap a raw save% hides but GSAx surfaces.
GQA rolls a single game into one number. It blends goals allowed against ice time — scaled to the age level's period length, so a Squirt game and a Bantam game are judged on their own terms — with saves made, and adjusts for overtime. It's what sorts the goalie leaderboard and anchors the game-by-game trend line.
Each game grades to one number and the profile plots them, so a goalie and coach can see the arc. Higher is better — a shutout-caliber night grades high; soft goals on a light workload pull it negative. Example trend.
Beyond where on the ice, we track where in the net pucks get past the goalie — an 8-region map of the goal. Over a season it exposes patterns a single game hides: glove-high leaks, repeated five-holes, a soft blocker side.
The same net you tap when scoring — shown here for a left-catching goalie, whose glove is on the viewer's right (the highlighted glove-high corner). Glove vs. blocker side is resolved per goalie's catching hand, so "over the glove" vs. "over the blocker" is always labeled correctly for each netminder.
This is the one metric about the goalie's own body, not the shot. On every tracked shot we ask two independent questions — is the goalie square to the puck, and at the right depth for where the shot came from? Drag the shooter (S) and the goalie (G) to see exactly how we measure each.
Depth is how far the goalie has come out from the goal line, along the line the shooter is actually looking down. We project the net→goalie vector onto the net→shooter direction. A goalie glued to the goal line sits at 0 ft of depth — and against a shot from range, the shooter sees the whole net.
Because it's a projection, a goalie who steps out but drifts sideways is only credited for the part of that step down the sightline. The sideways part reappears as the off-line distance. The two numbers are the two legs of a right triangle on the net→goalie vector: depth along the shot line, off-line square to it.
Both are in absolute feet — not a percentage of distance. Try the Point shot, square and Point shot, deep presets: same distance, opposite verdict.
With the net centre N, shooter S and goalie G on the rink (in feet), let û be the unit vector from the net toward the shooter and d = |S − N| the shot distance. Then:
depth = (G − N) · û
off-line = |(G − N) × û|
normal shot
required depth = min depth × clamp((d − 12) / (22 − 12), 0, 1)
allowed depth = min(max depth, max(6, d / 2))
breakaway / shootout / penalty shot
required depth = 4 × min(1, d / 10)
allowed depth = min(max depth, max(6, d − 4))
A shot is flagged when off-line > tolerance, depth < required, or depth > allowed. Example: a normal shot from 17 ft with the 2.5 ft minimum needs 1.25 ft of depth and allows up to 8.5 ft. On a breakaway from the same spot the goalie needs 4 ft and can come out as far as 10 ft (the max-depth cap). The numbers shown are the defaults; each is tunable per age level.
What it leaves out. The model is flat, top-down and the same for every body size. It doesn't know how big the goalie is, whether they're standing or in butterfly, or how the gap looks bigger from close range. Those effects are why tolerances are set per age level rather than treated as universal.
It depends on where the shot comes from, so depth is judged against a band that moves with shot distance — not a single number:
Every one of these distances is a default. Each age level can have its own.
Every figure is computed over tracked shots (those with a captured goalie position) and shown per goalie — careerwide and per season. Numbers above are illustrative examples; we'll publish good / average / needs-work ranges from live league data once enough real games are tracked.
Everything here runs on real games the moment you track them.
The positioning tool above runs the exact geometry TendyIQ uses on every tracked shot. Defaults shown (2.25 ft off-line; 2.5 ft minimum depth from 22 ft out; 10 ft maximum depth; breakaways 4 ft out until the shooter is inside 10 ft) are the platform fallbacks; live games resolve every dial per age level. The expected-goal rates toggle between an NHL-anchored benchmark and live youth rates computed from the database; the net-zone counts and the GQA trend line are illustrative examples.