Wednesday, March 25, 2026
How the result moved each team's playoff odds, calculated Mar 25, 2026 7:32 PM EDT.
Highlights
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
BOS 46%Deserve to win 54% BUF
BOS BUF
2.50 Expected goals 2.69
4 Goals (no shootout) 3
2.34 Expected goals, 5 on 5 1.78
59 Shot attempts 58
45 Unblocked attempts 38
31 Shots on goal 25
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).
3rd Period
5:54
BUF
Deserve to win
Deserve to win · BUF takes the lead, 63–37%
BOS had led since 11:15 of the 1st, by as much as 66%
16:00
BOS
Shortened bench
Shortened bench · 3 forwards sat
Jeannot, Kuraly and Kastelic: last shifts between 3:19 and 5:54 of the 3rd
Shot map
BOS shoots ←Bigger circle: higher xG; filled: goal → BUF shoots
Alex Tuch: wrist, 32 ft, xG 0.06 (P1 0:48)
Mason Lohrei: wrist, 53 ft, xG 0.03 (P1 1:32)
Mattias Samuelsson: wrist, 22 ft, xG 0.06 (P1 3:41)
David Pastrnak: slap, 38 ft, xG 0.05 (P1 8:10)
Sean Kuraly: wrist, 19 ft, xG 0.02 (P1 9:37)
Jonathan Aspirot: wrist, 30 ft, xG 0.07 (P1 9:40)
Elias Lindholm: snap, 56 ft, xG 0.01 (P1 9:52)
Pavel Zacha: tip-in, 19 ft, xG 0.04 (P1 10:51)
Fraser Minten: wrist, 38 ft, xG 0.06 (P1 11:15)
Jonathan Aspirot: snap, 70 ft, xG 0.01 (P1 13:01)
Lukas Reichel: wrist, 33 ft, xG 0.15 (P1 13:17)
Jason Zucker: wrist, 36 ft, xG 0.01 (P1 13:44)
Jason Zucker: backhand, 13 ft, xG 0.13 (P1 13:55)
Viktor Arvidsson: wrist, 25 ft, xG 0.08 (P1 15:39)
Andrew Peeke: wrist, 51 ft, xG 0.03 (P1 15:50)
David Pastrnak: slap, 42 ft, xG 0.02 (P1 16:18)
Conor Timmins: wrist, 31 ft, xG 0.04 (P1 16:44)
Elias Lindholm: wrist, 50 ft, xG 0.02 (P1 17:18)
Jason Zucker: snap, 54 ft, xG 0.02 (P1 17:45)
Tanner Jeannot: wrist, 41 ft, xG 0.01 (P1 18:06)
Tage Thompson: wrist, 36 ft, xG 0.06 (P1 18:44)
Owen Power: slap, 54 ft, xG 0.01 (P1 19:40)
Mason Lohrei: wrist, 66 ft, xG 0.01 (P2 0:10)
Peyton Krebs: tip-in, 12 ft, xG 0.08 (P2 0:57)
Alex Tuch: wrist, 58 ft, xG 0.01 (P2 1:16)
Josh Doan: snap, 35 ft, xG 0.08 (P2 1:37)
Lukas Reichel: snap, 40 ft, xG 0.06 (P2 1:46)
Elias Lindholm: snap, 25 ft, xG 0.14 (P2 1:48)
Josh Norris: wrist, 38 ft, xG 0.07 (P2 2:25)
Nikita Zadorov: wrist, 177 ft, xG 0.00 (P2 2:38)
David Pastrnak: wrist, 31 ft, xG 0.09 (P2 3:17)
Mark Kastelic: wrist, 9 ft, xG 0.17 (P2 4:31)
Andrew Peeke: wrist, 57 ft, xG 0.01 (P2 4:36)
Pavel Zacha: wrist, 45 ft, xG 0.03 (P2 5:00)
Tage Thompson: slap, 44 ft, xG 0.04 (P2 5:19)
Tage Thompson: backhand, 6 ft, xG 0.06 (P2 5:26)
Alex Tuch: deflected, 9 ft, xG 0.12 (P2 5:48)
Morgan Geekie: wrist, 50 ft, xG 0.01 (P2 6:30)
Beck Malenstyn: tip-in, 18 ft, xG 0.05 (P2 7:09)
Rasmus Dahlin: snap, 40 ft, xG 0.05 (P2 7:16)
Rasmus Dahlin: wrist, 25 ft, xG 0.06 (P2 7:35)
Nikita Zadorov: wrist, 40 ft, xG 0.03 (P2 8:34)
Josh Doan: wrist, 48 ft, xG 0.03 (P2 8:52)
Sean Kuraly: snap, 18 ft, xG 0.21 (P2 10:21)
Peyton Krebs: wrist, 30 ft, xG 0.06 (P2 10:30)
Sean Kuraly: wrist, 26 ft, xG 0.01 (P2 11:51)
Rasmus Dahlin: slap, 46 ft, xG 0.06 (P2 12:31)
Bowen Byram: wrist, 26 ft, xG 0.12 (P2 12:48)
Noah Ostlund: wrist, 7 ft, xG 0.17 (P2 12:55)
Bowen Byram: wrist, 41 ft, xG 0.06 (P2 13:40)
Conor Timmins: slap, 63 ft, xG 0.02 (P2 14:30)
Mark Kastelic: wrist, 140 ft, xG 0.00 (P2 16:17)
Tage Thompson: wrist, 46 ft, xG 0.03 (P2 16:30)
Andrew Peeke: wrist, 42 ft, xG 0.01 (P2 16:40)
Viktor Arvidsson: slap, 38 ft, xG 0.04 (P2 16:53)
Charlie McAvoy: wrist, 34 ft, xG 0.08 (P2 16:59)
Sam Carrick: wrist, 59 ft, xG 0.02 (P2 17:32)
Beck Malenstyn: slap, 13 ft, xG 0.14 (P2 18:12)
Andrew Peeke: wrist, 56 ft, xG 0.01 (P2 19:31)
Tage Thompson: wrist, 89 ft, xG 0.00 (P2 19:55)
Sean Kuraly: wrist, 57 ft, xG 0.01 (P3 3:09)
Zach Benson: wrist, 49 ft, xG 0.01 (P3 4:12)
Nikita Zadorov: wrist, 60 ft, xG 0.02 (P3 6:38)
Jonathan Aspirot: wrist, 113 ft, xG 0.00 (P3 7:20)
David Pastrnak: snap, 25 ft, xG 0.14 (P3 7:34)
Josh Norris: wrist, 13 ft, xG 0.13 (P3 8:05)
Andrew Peeke: wrist, 58 ft, xG 0.02 (P3 8:31)
Viktor Arvidsson: slap, 41 ft, xG 0.09 (P3 9:01)
David Pastrnak: tip-in, 12 ft, xG 0.09 (P3 9:36)
Elias Lindholm: snap, 59 ft, xG 0.03 (P3 9:57)
Nikita Zadorov: snap, 44 ft, xG 0.04 (P3 10:26)
Peyton Krebs: slap, 40 ft, xG 0.07 (P3 11:58)
Josh Norris: tip-in, 14 ft, xG 0.09 (P3 12:20)
Jonathan Aspirot: slap, 63 ft, xG 0.03 (P3 13:56)
Alex Tuch: slap, 49 ft, xG 0.02 (P3 16:59)
Jason Zucker: tip-in, 14 ft, xG 0.06 (P3 18:14)
David Pastrnak: GOAL, snap, 22 ft, xG 0.09 (P1 11:07)
Jason Zucker: GOAL, snap, 19 ft, xG 0.17 (P1 15:18)
Viktor Arvidsson: GOAL, backhand, 17 ft, xG 0.08 (P2 9:45)
Zach Benson: GOAL, wrist, 7 ft, xG 0.16 (P3 5:21)
Jason Zucker: GOAL, wrist, 8 ft, xG 0.27 (P3 5:54)
Casey Mittelstadt: GOAL, wrist, 10 ft, xG 0.24 (P3 14:00)
Pavel Zacha: GOAL, wrist, 28 ft, xG 0.09 (OT 0:38)
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.
All columns
Box score
Boston Bruins
Buffalo Sabres
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.
Boston Bruins
Player
Rating
Points
Shots
On ice
Pen
FO
Other
GSAx
TOI
88 David Pastrnak R
+2.62
+2.15
+0.32
+0.20
0.00
+0.01
-0.06
—
21:56
18 Pavel Zacha C
+2.21
+1.30
+0.11
+0.80
0.00
+0.02
-0.02
—
14:33
71 Viktor Arvidsson L
+1.79
+0.75
+0.19
+0.71
+0.15
-0.01
0.00
—
13:32
11 Casey Mittelstadt C
+1.60
+0.75
+0.16
+0.65
0.00
-0.01
+0.05
—
14:28
45 Jonathan Aspirot D
+1.35
+0.70
+0.07
+0.53
0.00
0.00
+0.05
—
17:41
91 Nikita Zadorov D
+0.96
+0.55
+0.06
+0.27
0.00
0.00
+0.08
—
19:58
73 Charlie McAvoy D
+0.88
+0.55
+0.05
+0.12
0.00
0.00
+0.15
—
24:45
92 Marat Khusnutdinov C
+0.63
+0.55
0.00
-0.06
0.00
+0.01
+0.13
—
18:00
6 Mason Lohrei D
+0.48
0.00
+0.03
+0.57
-0.15
0.00
+0.03
—
17:29
26 Andrew Peeke D
+0.48
0.00
+0.05
+0.38
0.00
0.00
+0.05
—
17:15
52 Sean Kuraly C
+0.47
0.00
+0.17
+0.25
0.00
+0.01
+0.05
—
10:45
84 Tanner Jeannot L
+0.43
0.00
0.00
+0.24
+0.15
0.00
+0.03
—
7:32
27 Hampus Lindholm D
+0.38
0.00
0.00
+0.30
0.00
0.00
+0.08
—
20:10
47 Mark Kastelic C
+0.26
0.00
+0.11
+0.15
0.00
0.00
0.00
—
9:58
93 Fraser Minten C
+0.24
+0.70
+0.04
-0.33
-0.15
-0.01
-0.01
—
20:14
39 Morgan Geekie C
+0.09
0.00
0.00
+0.07
0.00
-0.01
+0.03
—
15:53
28 Elias Lindholm C
+0.08
0.00
+0.14
+0.01
-0.15
+0.03
+0.05
—
16:41
75 Lukas Reichel L
-0.15
0.00
+0.14
-0.31
0.00
0.00
+0.02
—
14:59
70 Joonas Korpisalo G
-0.31
0.00
—
—
0.00
—
—
-0.31
60:38
Buffalo Sabres
Player
Rating
Points
Shots
On ice
Pen
FO
Other
GSAx
TOI
17 Jason Zucker L
+1.44
+1.50
+0.43
-0.47
0.00
0.00
-0.02
—
15:58
6 Zach Benson L
+1.35
+0.75
+0.11
+0.27
+0.15
0.00
+0.07
—
11:35
72 Tage Thompson C
+0.91
+1.40
+0.13
-0.62
0.00
-0.02
+0.02
—
18:44
25 Owen Power D
+0.39
0.00
+0.01
+0.25
0.00
0.00
+0.13
—
21:30
22 Jack Quinn R
+0.37
+0.55
0.00
-0.23
0.00
0.00
+0.05
—
16:23
9 Josh Norris C
+0.33
0.00
+0.19
+0.15
0.00
0.00
0.00
—
16:49
89 Alex Tuch R
+0.32
0.00
+0.14
+0.14
0.00
0.00
+0.05
—
17:49
29 Beck Malenstyn L
+0.30
0.00
+0.12
+0.13
0.00
0.00
+0.05
—
12:01
86 Noah Ostlund C
+0.26
0.00
+0.11
+0.15
0.00
0.00
0.00
—
14:31
4 Bowen Byram D
+0.09
0.00
+0.11
+0.01
0.00
0.00
-0.04
—
20:15
10 Sam Carrick C
-0.03
0.00
+0.01
-0.05
0.00
-0.02
+0.03
—
10:26
23 Mattias Samuelsson D
-0.15
0.00
+0.04
-0.34
0.00
0.00
+0.15
—
21:16
64 Logan Stanley D
-0.24
0.00
0.00
-0.22
0.00
0.00
-0.02
—
14:44
21 Conor Timmins D
-0.40
0.00
+0.04
-0.54
0.00
0.00
+0.10
—
15:30
19 Peyton Krebs C
-0.49
0.00
+0.13
-0.62
0.00
0.00
0.00
—
13:32
71 Ryan McLeod C
-0.59
0.00
0.00
-0.72
+0.15
0.00
-0.02
—
17:12
26 Rasmus Dahlin D
-0.75
0.00
+0.11
-0.67
-0.15
0.00
-0.04
—
23:45
91 Josh Doan R
-1.12
0.00
+0.07
-1.19
0.00
0.00
0.00
—
14:06
1 Ukko-Pekka Luukkonen G
-1.50
0.00
—
—
0.00
—
—
-1.50
60:26
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.