Joel Hofer

St. Louis BluesGoalieage 266′5″, 197 lbcatches leftdrafted 2018, #107 overall
WorkloadWorkhorse Tandem2025-26

Scouting summaryBest at danger saves (76) and shot stopping (72); no real weak spot (lowest: workload, 61).

2025-26 · regular seasonSTL

2026-27 so far: 7 GP · 4 W · .921 SV%

46GP
24W
.910SV%
2.61GAA
6SO
43GS
1,250SA
+9.5GSAx
Season
At a glance · 2025-26 · 46 GP · 2,625 min · STL

Category scores

0–99 percentile vs every qualified goalie. Tap a row to see the numbers behind it.

Shot stopping

Goals saved compared with what our expected-goals model says an average goalie allows on the same shots

72Strong
MetricValuePercentile
Goals saved above expectedGSAx
+9.5
78
Save % vs expecteddSV%
+0.76
71
GSAx per 60GSAx/60
+0.22
71
Save %SV%not graded
.910
88

Goalie numbers swing a lot from one season to the next (year-to-year r of about 0.1 to 0.2 for every goalie stat, ours or the plain save %). Read these scores as one season's form, not a forecast.

How our expected goals work

Shot stopping leaders

Danger saves

Save percentage on low-, medium- and high-danger shots (danger = our xG)

76Strong
MetricValuePercentile
High-danger save %HD SV%raw .815 on 119 shots
.802
84
Medium-danger save %MD SV%raw .843 on 490 shots
.844
27
Low-danger save %LD SV%raw .977 on 642 shots
.976
89

Danger tiers come from our expected-goals model: low under 5%, medium 5–15%, high 15%+ chance to score.

Danger saves leaders

Workload

How much he plays and how hard the shots are

61Average
MetricValuePercentile
Games playedGP
46
61
Games startedGS
43
61
MinutesMIN
2,625
65
Shot difficulty facedxGA/60style
2.82
40
Shots faced per 60SA/60style
28.6
70
Workload leaders
Similar goalies · 2025-26

Plays like

Closest matches on the category scores plus style (shot difficulty and volume faced), same season, same position group.

How every number is calculated

Percentiles (0–100) rank him against every goalie with 1,200+ minutes that season (61 in 2025-26). Tiers: Elite 90+ · Strong 70–89 · Average 40–69 · Below avg 20–39 · Weak 0–19. Roles are simple rules applied in order; the first one that fits wins. Expected goals and RAPM, explained and backtested

Shot stopping
Goals saved compared with what our expected-goals model says an average goalie allows on the same shots. Category score = weighted average of the graded metrics' percentiles in that category, re-ranked 0-99 against every qualified skater (or every skater in his position group when 'vs position' is on). Style numbers (weight 0) are shown but not graded.
GSAxGoals saved above expected
Expected goals faced minus goals allowed, season total. +10 is excellent. How: Sum of our xG on every unblocked, non-empty-net shot he faced − goals allowed on them.
dSV%Save % vs expected
Save percentage minus the save percentage an average goalie would post on his shots, in percentage points. How: GSAx ÷ shots on goal faced × 100.
GSAx/60GSAx per 60
Goals saved above expected per 60 minutes. How: GSAx ÷ time on ice × 60.
SV%Save %
Plain save percentage. Shown, not graded: it ignores how hard the shots were. How: Saves ÷ shots on goal (NHL). Shown, not graded.
Danger saves
Save percentage on low-, medium- and high-danger shots (danger = our xG). Category score = weighted average of the graded metrics' percentiles in that category, re-ranked 0-99 against every qualified skater (or every skater in his position group when 'vs position' is on). Style numbers (weight 0) are shown but not graded.
HD SV%High-danger save %
Save % on shots our model rates 15%+ to score, volume-adjusted. How: (HD saves + 40 × league HD SV%) ÷ (HD shots + 40). Raw in the note.
MD SV%Medium-danger save %
Save % on shots rated 5–15% to score, volume-adjusted. How: Same adjustment, 40 league-average shots added.
LD SV%Low-danger save %
Save % on shots rated under 5% to score, volume-adjusted. How: Same adjustment, 40 league-average shots added.
Workload
How much he plays and how hard the shots are. Category score = weighted average of the graded metrics' percentiles in that category, re-ranked 0-99 against every qualified skater (or every skater in his position group when 'vs position' is on). Style numbers (weight 0) are shown but not graded.
GPGames played
Games he appeared in. How: NHL games played.
GSGames started
Games he started. How: NHL games started.
MINMinutes
Minutes played. How: NHL time on ice.
xGA/60Shot difficulty faced
Expected goals he faced per 60 minutes: how dangerous the shots were. A style number, not graded. How: Our xG on unblocked shots faced ÷ time on ice × 60. Style number, not graded.
SA/60Shots faced per 60
Shots on goal faced per 60 minutes. A style number. How: NHL shots against ÷ time on ice × 60. Style number, not graded.
Goalie roles
  • Starter Started 50+ games.
  • Workhorse Tandem Started 35–49 games.
  • 1B / Backup Started fewer than 35 games.
Season by season · regular season

Joel Hofer's stats

SeasonTeamGPGSWLOTLSV%GAASOSAGSAx
2026-27 so farSTL77421.9212.171189—
2025-26STL464324135.9102.6161,250+9.5
2024-25STL31281683.9042.641767−4.6

Hover, focus or tap a column name to see what it means. Traded players: combined line. SH% and FO% shown as 12.5 = 12.5%.

What do these stats mean?
GP
Games played
GS
Games started
W
Wins
L
Regulation losses
OTL
Overtime and shootout losses
SV%
Save percentage: saves ÷ shots on goal
GAA
Goals against per 60 minutes
SO
Shutouts
SA
Shots against
GSAx
Goals saved above expected (Spreadsheet Sports xG): expected goals faced minus goals allowed. Graded seasons only.

Box score via the NHL's public stats. GSAx from Spreadsheet Sports expected goals.

Look up another player

Or see who leads the league: Hockey leaders