San Jose SharksSJS 2–3 Final Calgary FlamesCGY

Saturday, January 31, 2026

Final 1st2nd3rd T SOG
San Jose SharksSJS 110 2 25
Calgary FlamesCGY 111 3 42

No impact calculated for this game. Impacts are calculated for games in the next 7 days.

Highlights

Scoring

1st Period
3:11 SJS Will Smith (16)PP Alexander Wennberg (26) · snap xG 0.19 1–0 ▶
14:44 CGY Morgan Frost (12)PP Matt Coronato (15), Jonathan Huberdeau (15) · snap xG 0.41 1–1 ▶
2nd Period
1:21 SJS Adam Gaudette (13) William Eklund (23), Michael Misa (6) · wrist xG 0.36 2–1 ▶
6:59 CGY Matvei Gridin (2) Morgan Frost (15), MacKenzie Weegar (14) · snap xG 0.19 2–2 ▶
3rd Period
6:53 CGY Joel Farabee (11)SH Mikael Backlund (21), Kevin Bahl (10) · backhand xG 0.17 2–3 ▶

Score away–home after each goal; season totals in parentheses.

Shot quality

Expected goals (xG) rate every unblocked shot by how often shots like it go in, from where it was taken, the shot type, the strength and what happened just before it. How it works

SJS 34%Deserve to win66% CGY
SJSCGY
3.48Expected goals4.84
2Goals (no shootout)3
1.82Expected goals, 5 on 52.79
53Shot attempts82
35Unblocked attempts62
25Shots on goal42

Game notes

What stood out as the game went on, from the play-by-play and the shifts. Time on the bench is counted in 5-on-5 play outside the penalty box; the note says the player sat, not why. Goals saved are against the shots' expected goals (xG).

2nd Period
1:21 SJS Deserve to win Deserve to win · SJS takes the lead, 65–35%
CGY had led since 14:44 of the 1st, by as much as 65%
4:50 SJS xG swing xG swing · Out-chanced CGY 1.60–0.01
In xG over 10 minutes, 15:00 of the 1st to 5:00 of the 2nd; goals 1–0
15:00 CGY xG swing xG swing · Out-chanced SJS 1.10–0.05
In xG over 10 minutes, 5:00 to 15:00 of the 2nd; goals 1–0
3rd Period
1:01 CGY Deserve to win Deserve to win · CGY takes the lead, 61–39%
SJS had led since 1:21 of the 2nd, by as much as 73%
5:20 CGY xG swing xG swing · Out-chanced SJS 1.50–0.25
In xG over 10 minutes, 17:00 of the 2nd to 7:00 of the 3rd; goals 1–0
18:26 SJS Pulled goalie Pulled goalie · Pulled Nedeljkovic, down 3–2
With 1:34 left

Shot map

SJS shoots ←Bigger circle: higher xG; filled: goal→ CGY shoots
Dmitry Orlov: backhand, 142 ft, xG 0.00 (P1 0:17) Will Smith: wrist, 32 ft, xG 0.05 (P1 0:47) Jonathan Huberdeau: slap, 62 ft, xG 0.03 (P1 1:23) Jonathan Huberdeau: wrist, 29 ft, xG 0.11 (P1 1:35) Nazem Kadri: snap, 8 ft, xG 0.02 (P1 1:44) Nazem Kadri: poke, 5 ft, xG 0.05 (P1 1:45) MacKenzie Weegar: wrist, 58 ft, xG 0.01 (P1 1:58) Macklin Celebrini: slap, 44 ft, xG 0.09 (P1 2:41) Ryan Lomberg: snap, 35 ft, xG 0.03 (P1 3:35) Morgan Frost: snap, 18 ft, xG 0.24 (P1 4:17) Alexander Wennberg: wrist, 7 ft, xG 0.19 (P1 5:56) Joel Hanley: slap, 67 ft, xG 0.01 (P1 6:11) Adam Klapka: backhand, 99 ft, xG 0.00 (P1 6:27) Macklin Celebrini: wrist, 39 ft, xG 0.01 (P1 7:16) Zach Whitecloud: slap, 56 ft, xG 0.03 (P1 7:37) Shakir Mukhamadullin: wrist, 66 ft, xG 0.01 (P1 7:51) Joel Farabee: slap, 58 ft, xG 0.03 (P1 8:09) Nazem Kadri: wrist, 22 ft, xG 0.02 (P1 8:10) Philipp Kurashev: tip-in, 9 ft, xG 0.09 (P1 8:49) Mario Ferraro: slap, 55 ft, xG 0.03 (P1 9:07) Collin Graf: tip-in, 13 ft, xG 0.06 (P1 9:31) Yegor Sharangovich: wrist, 39 ft, xG 0.01 (P1 9:40) Yegor Sharangovich: tip-in, 39 ft, xG 0.02 (P1 9:55) Brayden Pachal: snap, 70 ft, xG 0.01 (P1 10:34) MacKenzie Weegar: wrist, 45 ft, xG 0.01 (P1 10:39) Yan Kuznetsov: slap, 72 ft, xG 0.01 (P1 10:46) Matt Coronato: wrist, 64 ft, xG 0.01 (P1 12:42) Alexander Wennberg: backhand, 15 ft, xG 0.05 (P1 12:51) Matvei Gridin: wrist, 38 ft, xG 0.05 (P1 13:55) Matt Coronato: snap, 20 ft, xG 0.19 (P1 14:42) Morgan Frost: wrist, 45 ft, xG 0.01 (P1 14:57) John Klingberg: wrist, 31 ft, xG 0.11 (P1 17:08) Will Smith: tip-in, 10 ft, xG 0.11 (P1 19:53) Tyler Toffoli: wrist, 5 ft, xG 0.52 (P1 19:56) Alexander Wennberg: wrist, 19 ft, xG 0.05 (P1 19:57) Philipp Kurashev: slap, 50 ft, xG 0.05 (P2 1:41) MacKenzie Weegar: wrist, 68 ft, xG 0.01 (P2 2:38) Alexander Wennberg: wrist, 15 ft, xG 0.24 (P2 4:14) Adam Gaudette: wrist, 8 ft, xG 0.16 (P2 4:55) Ryan Lomberg: backhand, 47 ft, xG 0.01 (P2 6:13) Zach Whitecloud: snap, 24 ft, xG 0.14 (P2 6:40) MacKenzie Weegar: slap, 61 ft, xG 0.00 (P2 6:43) Nazem Kadri: wrist, 11 ft, xG 0.03 (P2 7:16) Tyler Toffoli: backhand, 26 ft, xG 0.04 (P2 7:27) Ryan Lomberg: snap, 47 ft, xG 0.02 (P2 8:24) Mario Ferraro: wrist, 179 ft, xG 0.00 (P2 9:55) Brayden Pachal: wrist, 55 ft, xG 0.01 (P2 11:02) Brayden Pachal: wrist, 40 ft, xG 0.01 (P2 11:09) Morgan Frost: tip-in, 12 ft, xG 0.08 (P2 11:47) Jonathan Huberdeau: tip-in, 19 ft, xG 0.09 (P2 13:20) Matt Coronato: deflected, 6 ft, xG 0.20 (P2 13:46) Matt Coronato: poke, 3 ft, xG 0.14 (P2 13:47) Yegor Sharangovich: wrist, 40 ft, xG 0.03 (P2 14:33) Connor Zary: snap, 14 ft, xG 0.15 (P2 14:40) Mario Ferraro: slap, 60 ft, xG 0.02 (P2 15:02) Morgan Frost: tip-in, 17 ft, xG 0.08 (P2 17:30) Brayden Pachal: wrist, 52 ft, xG 0.01 (P2 17:38) Yegor Sharangovich: wrist, 6 ft, xG 0.19 (P2 17:56) Yegor Sharangovich: wrist, 6 ft, xG 0.05 (P2 17:57) Will Smith: snap, 25 ft, xG 0.15 (P2 18:19) Mikael Backlund: wrist, 25 ft, xG 0.02 (P2 18:30) John Klingberg: wrist, 187 ft, xG 0.00 (P2 18:44) Morgan Frost: wrist, 12 ft, xG 0.15 (P2 18:58) MacKenzie Weegar: wrist, 49 ft, xG 0.00 (P2 19:01) Yegor Sharangovich: tip-in, 14 ft, xG 0.07 (P3 0:38) Yegor Sharangovich: snap, 9 ft, xG 0.15 (P3 0:48) Joel Farabee: tip-in, 8 ft, xG 0.10 (P3 1:01) Jonathan Huberdeau: backhand, 13 ft, xG 0.12 (P3 2:01) Michael Misa: wrist, 33 ft, xG 0.05 (P3 2:48) Nazem Kadri: snap, 17 ft, xG 0.18 (P3 4:02) Barclay Goodrow: backhand, 15 ft, xG 0.01 (P3 4:44) Alexander Wennberg: wrist, 154 ft, xG 0.00 (P3 4:50) Mikael Backlund: wrist, 9 ft, xG 0.14 (P3 5:20) Macklin Celebrini: wrist, 46 ft, xG 0.03 (P3 6:09) Mikael Backlund: slap, 43 ft, xG 0.06 (P3 6:51) Nazem Kadri: snap, 18 ft, xG 0.32 (P3 8:56) Martin Pospisil: snap, 45 ft, xG 0.03 (P3 9:51) Adam Klapka: snap, 22 ft, xG 0.16 (P3 11:54) Macklin Celebrini: snap, 41 ft, xG 0.06 (P3 12:56) Will Smith: snap, 18 ft, xG 0.13 (P3 13:36) Alexander Wennberg: tip-in, 6 ft, xG 0.11 (P3 13:53) Macklin Celebrini: snap, 25 ft, xG 0.12 (P3 15:29) Matt Coronato: snap, 42 ft, xG 0.01 (P3 16:42) Mikael Backlund: poke, 6 ft, xG 0.03 (P3 16:43) Matvei Gridin: wrist, 41 ft, xG 0.01 (P3 16:46) Morgan Frost: wrist, 36 ft, xG 0.04 (P3 17:00) MacKenzie Weegar: wrist, 50 ft, xG 0.02 (P3 17:25) MacKenzie Weegar: slap, 54 ft, xG 0.05 (P3 18:21) William Eklund: snap, 16 ft, xG 0.18 (P3 18:29) Morgan Frost: wrist, 85 ft, xG 0.26 (P3 19:02) Macklin Celebrini: snap, 23 ft, xG 0.18 (P3 19:33) Will Smith: wrist, 49 ft, xG 0.01 (P3 19:41) Will Smith: GOAL, snap, 11 ft, xG 0.19 (P1 3:11) Morgan Frost: GOAL, snap, 7 ft, xG 0.41 (P1 14:44) Adam Gaudette: GOAL, wrist, 4 ft, xG 0.36 (P2 1:21) Matvei Gridin: GOAL, snap, 31 ft, xG 0.19 (P2 6:59) Joel Farabee: GOAL, backhand, 9 ft, xG 0.17 (P3 6:53)
About these numbers

xG comes from hockeystats.io's own model, a gradient-boosted tree model trained on every unblocked shot from the 2021-22 to 2025-26 regular seasons using the NHL's public play-by-play. Each shot's value is the share of similar shots that became goals. A team's xG is the sum over its shots; "deserve to win" asks how often the team would outscore its opponent if every shot went in at exactly that rate. Blocked shots count as attempts but have no xG (the NHL records where they were blocked, not where they were taken), so the map leaves them out.

Box score

San Jose Sharks

Skater GAP+/− AttxG HitBlkTOI
Forwards
21 Alexander Wennberg 011 -1 60.65 1124:30
71 Macklin Celebrini 000 -1 70.49 2023:40
51 Collin Graf 000 0 30.06 0019:09
2 Will Smith 101 -1 60.64 1119:03
73 Tyler Toffoli 000 0 30.56 0218:08
27 William Eklund 011 0 20.18 1114:35
96 Philipp Kurashev 000 0 30.14 1213:32
63 Zack Ostapchuk 000 -1 00.00 1011:38
23 Barclay Goodrow 000 0 20.01 1110:23
81 Adam Gaudette 101 0 40.52 0010:09
77 Michael Misa 011 0 30.05 0010:02
75 Ryan Reaves 000 0 00.00 2006:33
Defense
38 Mario Ferraro 000 0 40.05 1319:37
3 John Klingberg 000 -2 20.11 0119:36
6 Sam Dickinson 000 +1 20.00 0219:24
73 Vincent Desharnais 000 0 00.00 1019:01
9 Dmitry Orlov 000 0 30.00 1016:33
85 Shakir Mukhamadullin 000 0 30.01 1515:02
Goalie SAGA SVSV% xGA GSAx
Alex Nedeljkovic 42339 .929 4.58 +1.58

Calgary Flames

Skater GAP+/− AttxG HitBlkTOI
Forwards
11 Mikael Backlund 011 +1 60.25 0020:40
10 Jonathan Huberdeau 011 0 60.35 2118:49
91 Nazem Kadri 000 0 80.62 0018:07
16 Morgan Frost 112 +1 101.27 2017:13
17 Yegor Sharangovich 000 -1 80.53 0117:12
27 Matt Coronato 011 0 50.54 0016:09
86 Joel Farabee 101 +1 30.30 0115:35
92 Matvei Gridin 101 +1 60.25 0115:20
43 Adam Klapka 000 0 30.16 4013:23
47 Connor Zary 000 -1 10.15 0112:54
94 Ryan Lomberg 000 0 30.05 1109:15
76 Martin Pospisil 000 0 10.03 1007:24
Defense
52 MacKenzie Weegar 011 0 100.09 1426:17
7 Kevin Bahl 011 +1 10.00 2324:12
28 Zach Whitecloud 000 +1 30.17 1120:01
37 Yan Kuznetsov 000 0 20.01 2318:50
44 Joel Hanley 000 0 10.01 1111:41
94 Brayden Pachal 000 0 50.04 4010:34
Goalie SAGA SVSV% xGA GSAx
Dustin Wolf 25223 .920 3.48 +1.48

Skaters by time on ice. Goalie lines count shots with the goalie in net, from the NHL play-by-play.

Player ratings

What each player added to the result, in goals, from most to least. Hover a number for what it's made of.

San Jose Sharks

Player Rating Points Shots On ice Pen FO Other GSAx TOI
21 Alexander Wennberg C +1.65 +0.70 +0.42 +0.42 +0.08 -0.04 +0.07 — 24:30
33 Alex Nedeljkovic G +1.58 0.00 — — 0.00 — — +1.58 57:38
73 Tyler Toffoli C +1.04 0.00 +0.36 +0.42 +0.15 0.00 +0.10 — 18:08
81 Adam Gaudette R +0.98 +0.75 +0.34 -0.11 0.00 0.00 0.00 — 10:09
2 Will Smith C +0.77 +0.75 +0.42 -0.44 0.00 +0.01 +0.03 — 19:03
96 Philipp Kurashev C +0.53 0.00 +0.09 +0.37 0.00 -0.02 +0.08 — 13:33
72 William Eklund L +0.46 +0.70 +0.12 -0.54 +0.15 0.00 +0.03 — 14:35
77 Michael Misa C +0.42 +0.55 +0.03 -0.11 0.00 -0.06 0.00 — 10:02
85 Shakir Mukhamadullin D +0.10 0.00 +0.01 -0.31 +0.15 0.00 +0.25 — 15:02
6 Sam Dickinson D -0.01 0.00 0.00 -0.07 0.00 0.00 +0.06 — 19:24
71 Macklin Celebrini C -0.14 0.00 +0.32 -0.43 0.00 -0.01 -0.02 — 23:40
38 Mario Ferraro D -0.29 0.00 +0.04 -0.41 -0.08 0.00 +0.15 — 19:37
5 Vincent Desharnais D -0.31 0.00 0.00 -0.29 0.00 0.00 -0.02 — 19:01
75 Ryan Reaves R -0.32 0.00 0.00 -0.32 0.00 0.00 0.00 — 6:33
23 Barclay Goodrow C -0.47 0.00 +0.01 -0.49 0.00 0.00 +0.01 — 10:23
3 John Klingberg D -0.65 0.00 +0.07 -0.58 -0.15 0.00 +0.01 — 19:36
63 Zack Ostapchuk C -0.94 0.00 0.00 -0.68 -0.30 +0.04 0.00 — 11:38
9 Dmitry Orlov D -0.96 0.00 0.00 -0.77 -0.15 0.00 -0.04 — 16:33
51 Collin Graf R -1.08 0.00 +0.04 -1.06 0.00 0.00 -0.06 — 19:09

Calgary Flames

Player Rating Points Shots On ice Pen FO Other GSAx TOI
16 Morgan Frost C +4.07 +1.45 +0.82 +1.37 +0.30 +0.12 0.00 — 17:13
92 Matvei Gridin R +1.93 +0.75 +0.16 +0.96 0.00 +0.01 +0.05 — 15:20
10 Jonathan Huberdeau L +1.89 +0.55 +0.23 +1.09 0.00 -0.01 +0.03 — 18:49
32 Dustin Wolf G +1.48 0.00 — — 0.00 — — +1.48 59:51
86 Joel Farabee L +1.08 +0.75 +0.20 +0.09 0.00 -0.01 +0.05 — 15:35
44 Joel Hanley D +1.07 0.00 +0.01 +1.01 0.00 0.00 +0.05 — 11:41
52 MacKenzie Weegar D +1.00 +0.55 +0.06 +0.22 0.00 0.00 +0.16 — 26:17
7 Kevin Bahl D +0.92 +0.55 0.00 +0.09 +0.15 0.00 +0.13 — 24:12
91 Nazem Kadri C +0.90 0.00 +0.40 +0.63 -0.15 +0.02 0.00 — 18:07
27 Matt Coronato R +0.84 +0.70 +0.35 -0.20 0.00 +0.01 -0.02 — 16:09
11 Mikael Backlund C +0.78 +0.70 +0.16 -0.04 0.00 -0.04 0.00 — 20:40
94 Brayden Pachal D +0.67 0.00 +0.03 +0.79 -0.15 0.00 0.00 — 10:34
43 Adam Klapka R +0.66 0.00 +0.11 +0.54 0.00 -0.01 +0.02 — 13:23
37 Yan Kuznetsov D +0.30 0.00 +0.01 +0.16 0.00 0.00 +0.13 — 18:50
28 Zach Whitecloud D +0.07 0.00 +0.11 +0.06 -0.15 0.00 +0.05 — 20:01
70 Ryan Lomberg L +0.04 0.00 +0.03 +0.03 -0.08 0.00 +0.05 — 9:15
17 Yegor Sharangovich C -0.04 0.00 +0.34 -0.61 +0.15 0.00 +0.07 — 17:12
76 Martin Pospisil C -0.18 0.00 +0.02 -0.10 -0.08 -0.02 0.00 — 7:24
47 Connor Zary C -0.40 0.00 +0.10 -0.70 +0.15 +0.01 +0.05 — 12:54

An expected-goals take on Dom Luszczyszyn's Game Score: goals and assists, the quality of a player's own shots, shot quality for and against while they were on the ice at 5v5, penalties, faceoffs and puck plays, all in goals; goalies by goals saved above expected. From the NHL play-by-play and shift charts.