Hockey Terminal
Be a GM

← All players

Photo of Brandon Carlo

Brandon Carlo

#25 · Defence · St. Louis Blues

Born Nov 26, 1996 in Colorado Springs, Colorado, USA (age 29) · 6'5", 214 lb · Shoots right · Drafted 37th overall in 2015 by BOS (round 2)

Compare with a similar player

The defencemen closest to him in points in 2016-17. Pick one to see the two side by side, or choose someone else.

Deryk Engelland CGY · 16 P in 81 GP Dan Hamhuis DAL · 16 P in 79 GP Trevor van Riemsdyk CHI · 16 P in 58 GP Josh Manson ANA · 17 P in 82 GP Mark Pysyk FLA · 17 P in 82 GP

Career

Regular season games only. Pick a season to see its game log below. Cap hit is what he counted against the salary cap that season, where it is known.

0510152016-17: 16 points1616-172017-18: 6 points617-182018-19: 10 points1018-192019-20: 19 points1919-202020-21: 4 points420-212021-22: 15 points1521-222022-23: 16 points1622-232023-24: 14 points1423-242024-25: 12 points1224-252025-26: 7 points725-262026-27: 0 points026-27

Points by season. The darker bar is the season shown below.

Season Team GP G A P +/- PIM Shots Hits P/GP Cap hit
2016-17 BOS 82 6 10 16 9 59 88 87 0.20 $789K
2017-18 BOS 76 0 6 6 10 45 76 89 0.08 $789K
2018-19 BOS 72 2 8 10 22 47 116 134 0.14 $789K
2019-20 BOS 67 4 15 19 16 33 111 126 0.28 $2.85M
2020-21 BOS 27 3 1 4 1 12 43 38 0.15 $2.85M
2021-22 BOS 79 6 9 15 2 31 125 143 0.19 $4.1M
2022-23 BOS 75 3 13 16 44 38 94 128 0.21 $4.1M
2023-24 BOS 76 4 10 14 23 42 79 140 0.18 $4.1M
2024-25 BOS 63 1 8 9 2 24 64 64 0.14 $4.1M
2024-25 TOR 20 0 3 3 4 13 13 26 0.15
2025-26 TOR 55 0 7 7 4 37 66 65 0.13 $4.1M
2026-27 STL 4 0 0 0 1 17 4 7 0.00 $4.1M
11 seasons Career 696 29 90 119 138 398 879 1047 0.17

Playoffs

Playoff games only. Pick a season to see that year's bracket.

Season Team GP G A P +/- PIM Shots Hits P/GP
2018-19 BOS 24 2 2 4 10 6 32 32 0.17
2019-20 BOS 10 0 1 1 1 4 11 27 0.10
2020-21 BOS 8 0 0 0 0 4 10 22 0.00
2021-22 BOS 7 0 1 1 -5 6 4 13 0.14
2022-23 BOS 7 0 4 4 2 4 16 11 0.57
2023-24 BOS 13 3 1 4 4 6 20 34 0.31
2024-25 TOR 13 0 0 0 -4 8 14 9 0.00
7 seasons Playoffs 82 5 9 14 8 38 107 148 0.17

2016-17 season totals

GP G A P +/- PIM Shots Hits P/GP Shooting % Avg TOI
82 6 10 16 9 59 88 87 0.20 6.8 20:49

Contract

$789KCap hitends in 2019, then RFA
$49KCap dollars per point16 points in 82 games
-$196KWorth at the going ratewhat teams paid for a season like his
-$985KValueworth minus cap hit; below zero is overpaid

His cap hit for the whole season, set against what he did in the regular season. Lower is better value. In a season still being played the cost per point starts high and falls as the games add up. He rated at or below a spare-part player, so there is no cost per goal to show. Value is coloured by where it ranks among the 664 ranked skaters whose contract is known. How value is worked out.

The contract

Signed by the Boston Bruins on Sep 25, 2015, as an entry-level contract: 3 years and $2.775M, beginning in 2016-17. It runs through 2018-19, with 2 seasons left after this one, and he is then a restricted free agent.

Season Cap hit Base salary Signing bonus Performance bonuses Paid in all Clause
2016-17 $789K $625K $93K $208K $718K
2017-18 $789K $725K $93K $108K $818K
2018-19 $789K $833K $0 $833K

Each season of the contract, with this one marked. The cap hit is the same every year; what he is paid is not. The pay is as written when the contract was recorded in October 2024, so a later change, such as the rise in the lowest salary for 2026-27, is not shown.

Contracts he has signed

Signed Signed by Kind Seasons Years In all Cap hit
Jul 14, 2021 Boston Bruins Extension 2021-22 to 2026-27 6 $24.6M $4.1M
Sep 17, 2019 Boston Bruins New contract 2019-20 to 2020-21 2 $5.7M $2.85M
Sep 25, 2015 Boston Bruins Entry-level 2016-17 to 2018-19 signed for 2015-16, slid 3 $2.775M $789K

Every contract on record for him, newest first, with the team that signed him to it and the day it was signed. The one covering 2016-17 is marked. An extension is signed while the contract before it is still running, often a year ahead. A row with no team or date is a contract known only by its cap hit, most often one signed since October 2024.

2016-17 analytics

Rating

-1.2Goals above replacement578th of 664 skaters, 195th of 229 defencemen
-0.2Wins above replacementgoals above replacement divided by six
-6.9Goals above averagethe five parts below added up

Each number is coloured by where it ranks among the 229 ranked defencemen: green is in the top fifth and red the bottom fifth, with paler shades in between and amber for the middle. Hover over a tile for its percentile.

Even-strength offence-1.6 28th percentileEven-strength defence-2.7 16th percentilePower play-0.1 44th percentilePenalty kill+0.9 97th percentilePenalties-3.3 1st percentile

The goals he added to his team's goal difference, compared with a spare-part player given the same ice time. Each part is measured against the league, so zero is an average skater, and the rank beside it is among defencemen. A full season is about two-thirds the player and one-third chance. Before 2023-24 the NHL timed events less exactly, and differently from rink to rink, so expected goals for this season are rougher than for recent ones.

-505102016-172018-192020-212022-232024-252026-27Goals above replacementGoals above replacement, by season

On the ice

What happened at five-on-five while he was on the ice. What these numbers mean

52.1Corsi for %1363 attempts for, 1254 against
-4.2CF% relative to teamagainst the team without him
53.8Expected goals for %58.8 expected for, 50.5 against
-2.2xGF% relative to teamagainst the team without him
52.5Fenwick for %unblocked attempts
48.8Goals for %60 for, 63 against
98.7PDO7.9% shooting + 90.8% saves
165Attempts takenhis own shot attempts

Each share is coloured by where it ranks among the 565 skaters who played enough to be ranked: green is in the top fifth and red the bottom fifth, with paler shades in between and amber for the middle. Hover over a tile for its percentile. PDO and attempts taken are left plain, since neither is good or bad on its own.

Who he played with

Defence pairGPTimeCF%xGF%Goals
Zdeno Chara · Brandon Carlo751035:5452.555.349-44
Kevan Miller · Brandon Carlo36126:1451.351.36-6
Torey Krug · Brandon Carlo70125:2059.461.21-4
John-Michael Liles · Brandon Carlo2258:1838.528.10-2

The pairs he spent the most time in at five-on-five, with the team's share of the shot attempts and expected goals, and the goals for and against, while they were out. The two shares are coloured as above, against the league's pairs that played a fair amount together. Hover over one for its percentile.

Chances and finishing

Expected goals adds up how likely each of his shots was to go in, judged by where it came from, what kind of shot it was and whether it was a rebound. All situations, leaving out shots at an empty net. Before 2023-24 the NHL timed events less exactly, and differently from rink to rink, so expected goals for this season are rougher than for recent ones.

6Goalsnot counting empty-netters
3.5Expected goalsfrom 130 unblocked attempts
+2.5Goals above expectedgoals minus expected goals
Chances created 0.12 expected goals per 60 minutes21st
Shot quality 2.7% chance per attempt32nd
Finishing +2.5 goals above expected89thOne season of finishing is mostly luck.

Each bar shows the share of defencemen he is ahead of, among the 229 who played 300 minutes or more this season.

0246Game 20Game 40Game 60Game 80Goals 6Expected 3.5

His goals and his expected goals as the season went on. When the goals line pulls away above, he is scoring more than his chances were worth; below, less.

Where he shot from

Every attempt he took this season, in all situations, attacking the net on the right. Darker red means more attempts from that spot, and each dot is a goal. "Show every shot" switches to a dot for each attempt, bigger for a better chance. Click a goal for its details.

Game log

Date Opponent Result G A P +/- PIM Shots Hits TOI
Apr 8, 2017 vs WSH L 1-3 0 0 0 -1 0 0 0 04:00
Apr 6, 2017 vs OTT L 1-2 (SO) 0 0 0 0 0 0 2 28:04
Apr 4, 2017 vs TBL W 4-0 0 0 0 0 0 2 2 20:30
Apr 2, 2017 @ CHI W 3-2 0 1 1 -1 0 0 1 20:11
Apr 1, 2017 vs FLA W 5-2 0 0 0 2 2 0 1 17:36
Mar 30, 2017 vs DAL W 2-0 0 0 0 1 0 1 2 23:29
Mar 28, 2017 vs NSH W 4-1 0 0 0 1 2 1 0 18:49
Mar 25, 2017 @ NYI W 2-1 0 0 0 2 0 0 1 21:54
Mar 23, 2017 vs TBL L 3-6 0 0 0 -2 2 1 2 16:34
Mar 21, 2017 vs OTT L 2-3 0 0 0 -1 2 1 1 16:46
Mar 20, 2017 @ TOR L 2-4 0 0 0 1 0 2 4 23:34
Mar 16, 2017 @ EDM L 4-7 0 0 0 1 0 0 0 19:08
Mar 15, 2017 @ CGY W 5-2 0 0 0 1 0 0 1 20:31
Mar 13, 2017 @ VAN W 6-3 0 0 0 3 2 0 0 19:43
Mar 11, 2017 vs PHI W 2-1 0 0 0 -1 2 0 1 14:11
Mar 8, 2017 vs DET W 6-1 0 0 0 2 2 2 2 19:11
Mar 6, 2017 @ OTT L 2-4 0 0 0 -2 0 0 1 20:42
Mar 4, 2017 vs NJD W 3-2 1 0 1 1 0 3 0 15:14
Mar 2, 2017 vs NYR L 1-2 0 0 0 -2 0 2 2 21:58
Feb 28, 2017 vs ARI W 4-1 0 0 0 1 0 1 2 23:43
Feb 26, 2017 @ DAL W 6-3 0 0 0 1 2 2 0 21:22
Feb 23, 2017 @ LAK W 4-1 0 0 0 1 0 0 0 22:49
Feb 22, 2017 @ ANA L 3-5 1 0 1 0 2 1 0 18:33
Feb 19, 2017 @ SJS W 2-1 (OT) 0 0 0 0 0 0 1 23:19
Feb 12, 2017 vs MTL W 4-0 0 0 0 2 2 0 1 18:53
Feb 11, 2017 vs VAN W 4-3 0 0 0 1 0 3 0 21:28
Feb 9, 2017 vs SJS W 6-3 0 1 1 -1 0 0 0 21:28
Feb 4, 2017 vs TOR L 5-6 0 0 0 2 0 0 0 16:31
Feb 1, 2017 @ WSH L 3-5 0 0 0 -1 4 2 3 17:55
Jan 31, 2017 @ TBL W 4-3 0 0 0 -1 2 0 1 20:31
Jan 26, 2017 vs PIT W 4-3 0 1 1 1 2 0 0 12:25
Jan 24, 2017 vs DET W 4-3 (OT) 0 1 1 -2 0 5 2 22:35
Jan 22, 2017 @ PIT L 1-5 0 0 0 -2 0 2 3 20:02
Jan 20, 2017 vs CHI L 0-1 0 0 0 0 0 0 1 22:10
Jan 18, 2017 @ DET L 5-6 (SO) 1 0 1 -2 0 3 2 26:15
Jan 16, 2017 vs NYI L 0-4 0 0 0 -1 0 1 0 24:23
Jan 14, 2017 vs PHI W 6-3 0 0 0 1 2 0 0 22:31
Jan 12, 2017 @ NSH L 1-2 0 0 0 -1 0 2 0 18:50
Jan 10, 2017 @ STL W 5-3 1 0 1 2 4 2 2 19:57
Jan 8, 2017 @ CAR L 3-4 (OT) 0 0 0 -1 0 0 3 17:47
Jan 7, 2017 @ FLA W 4-0 0 0 0 2 2 1 1 16:20
Jan 5, 2017 vs EDM L 3-4 0 0 0 -1 0 0 1 16:00
Jan 2, 2017 @ NJD L 0-3 0 0 0 -1 0 1 0 18:34
Dec 31, 2016 vs BUF W 3-1 0 0 0 1 0 0 2 19:33
Dec 29, 2016 @ BUF W 4-2 0 0 0 0 2 0 2 20:26
Dec 27, 2016 @ CBJ L 3-4 0 0 0 -2 2 1 0 18:40
Dec 23, 2016 @ CAR L 2-3 (OT) 0 0 0 -1 2 1 2 19:38
Dec 22, 2016 @ FLA W 3-1 0 0 0 -1 0 0 0 22:23
Dec 20, 2016 vs NYI L 2-4 0 1 1 1 0 0 2 22:13
Dec 18, 2016 vs LAK W 1-0 0 0 0 0 0 1 0 21:05
Dec 15, 2016 vs ANA L 3-4 0 0 0 -1 0 1 1 18:09
Dec 14, 2016 @ PIT L 3-4 (OT) 0 0 0 0 0 1 1 23:32
Dec 12, 2016 @ MTL W 2-1 (OT) 0 0 0 0 0 4 0 27:59
Dec 10, 2016 vs TOR L 1-4 0 0 0 -1 0 0 0 20:20
Dec 8, 2016 vs COL L 2-4 0 0 0 -2 0 1 4 22:19
Dec 7, 2016 @ WSH L 3-4 (OT) 0 0 0 -2 0 2 2 22:30
Dec 5, 2016 vs FLA W 4-3 (OT) 0 1 1 0 0 5 1 23:03
Dec 3, 2016 @ BUF W 2-1 0 1 1 1 2 0 1 23:33
Dec 1, 2016 vs CAR W 2-1 (SO) 0 0 0 0 0 1 0 21:44
Nov 29, 2016 @ PHI L 2-3 (SO) 0 1 1 1 0 3 0 24:07
Nov 27, 2016 vs TBL W 4-1 0 0 0 1 0 1 2 24:17
Nov 25, 2016 vs CGY L 1-2 0 0 0 0 0 1 1 20:06
Nov 24, 2016 @ OTT L 1-3 0 0 0 0 0 1 2 20:00
Nov 22, 2016 vs STL L 2-4 0 0 0 -2 0 1 1 20:01
Nov 19, 2016 vs WPG W 4-1 0 0 0 0 0 2 1 23:52
Nov 17, 2016 @ MIN L 0-1 0 0 0 0 0 0 0 23:51
Nov 13, 2016 @ COL W 2-0 0 0 0 0 2 4 1 20:37
Nov 12, 2016 @ ARI W 2-1 0 0 0 1 5 0 2 22:17
Nov 10, 2016 vs CBJ W 5-2 0 0 0 3 0 1 1 23:12
Nov 8, 2016 @ MTL L 2-3 0 0 0 -1 0 1 0 23:40
Nov 7, 2016 vs BUF W 4-0 0 0 0 0 2 2 0 19:37
Nov 5, 2016 vs NYR L 2-5 0 1 1 -1 0 0 2 21:26
Nov 3, 2016 @ TBL W 4-3 (SO) 1 0 1 2 0 1 0 23:01
Nov 1, 2016 @ FLA W 2-1 0 0 0 1 0 3 1 23:47
Oct 29, 2016 @ DET W 1-0 0 0 0 1 2 1 1 23:09
Oct 26, 2016 @ NYR L 2-5 0 0 0 -1 0 0 0 24:30
Oct 25, 2016 vs MIN L 0-5 0 0 0 -1 2 1 1 21:58
Oct 22, 2016 vs MTL L 2-4 0 0 0 0 0 0 5 22:16
Oct 20, 2016 vs NJD W 2-1 0 0 0 0 0 1 1 22:52
Oct 17, 2016 @ WPG W 4-1 1 0 1 3 2 1 0 24:27
Oct 15, 2016 @ TOR L 1-4 0 0 0 -1 0 2 1 22:30
Oct 13, 2016 @ CBJ W 6-3 0 1 1 5 0 2 0 17:48