Hockey Terminal
Be a GM

← All players

Photo of Miro Heiskanen

Miro Heiskanen

#4 · Defence · Dallas Stars

Born Jul 18, 1999 in Espoo, FIN (age 27) · 6'2", 197 lb · Shoots left · Drafted 3rd overall in 2017 by DAL (round 1)

Compare with a similar player

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

Ryan Pulock NYI · 35 P in 68 GP Drew Doughty LAK · 35 P in 67 GP Jaccob Slavin CAR · 36 P in 68 GP Ivan Provorov PHI · 36 P in 69 GP Kevin Shattenkirk TBL · 34 P in 70 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.

02040602018-19: 33 points3318-192019-20: 35 points3519-202020-21: 27 points2720-212021-22: 36 points3621-222022-23: 73 points7322-232023-24: 54 points5423-242024-25: 25 points2524-252025-26: 63 points6325-262026-27: 3 points326-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
2018-19 DAL 82 12 21 33 -14 16 182 34 0.40 $894K
2019-20 DAL 68 8 27 35 14 12 163 40 0.51 $894K
2020-21 DAL 55 8 19 27 -9 12 121 47 0.49 $894K
2021-22 DAL 70 5 31 36 3 24 156 52 0.51 $8.45M
2022-23 DAL 79 11 62 73 12 32 206 49 0.92 $8.45M
2023-24 DAL 71 9 45 54 8 36 162 55 0.76 $8.45M
2024-25 DAL 50 5 20 25 7 10 108 17 0.50 $8.45M
2025-26 DAL 77 9 54 63 9 30 148 21 0.82 $8.45M
2026-27 DAL 5 2 1 3 3 4 9 1 0.60 $8.45M
9 seasons Career 557 69 280 349 33 176 1255 316 0.63

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 DAL 13 2 2 4 0 2 31 5 0.31
2019-20 DAL 24 6 16 22 8 0 51 48 0.92
2021-22 DAL 7 1 2 3 0 4 20 10 0.43
2022-23 DAL 19 1 11 12 -6 8 35 25 0.63
2023-24 DAL 19 6 10 16 0 8 44 26 0.84
2024-25 DAL 8 1 3 4 -4 0 14 7 0.50
2025-26 DAL 6 2 4 6 -9 2 21 1 1.00
7 seasons Playoffs 96 19 48 67 -11 24 216 122 0.70

2019-20 season totals

GP G A P +/- PIM Shots Hits P/GP Shooting % Avg TOI
68 8 27 35 14 12 163 40 0.51 4.9 23:46

Contract

$894KCap hitends in 2021, then RFA
$26KCap dollars per point35 points in 68 games
$80KCap dollars per goal above replacement11.2 goals above replacement
$10MWorth at the going ratewhat teams paid for a season like his
+$9.1MValueworth 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. Value is coloured by where it ranks among the 668 ranked skaters whose contract is known. How value is worked out.

The contract

Signed by the Dallas Stars on Jul 8, 2017, as an entry-level contract: 3 years and $10.275M, beginning in 2018-19. It runs through 2020-21, with 1 season 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
2018-19 $894K $833K $93K $2.5M $925K
2019-20 $894K $833K $93K $2.5M $925K
2020-21 $894K $833K $0 $2.5M $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 17, 2021 Dallas Stars Extension 2021-22 to 2028-29 8 $67.6M $8.45M
Jul 8, 2017 Dallas Stars Entry-level 2018-19 to 2020-21 signed for 2017-18, slid 3 $10.275M $894K

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 2019-20 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.

2019-20 analytics

Regular season Playoffs

Rating

+11.2Goals above replacement35th of 670 skaters, 11th of 231 defencemen
+1.9Wins above replacementgoals above replacement divided by six
+5.9Goals above averagethe five parts below added up

Each number is coloured by where it ranks among the 231 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 85th percentileEven-strength defence+3.3 93rd percentilePower play-1.1 3rd percentilePenalty kill+1.0 97th percentilePenalties+1.1 99th 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.

0510152018-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

50.5Corsi for %1131 attempts for, 1110 against
+1.9CF% relative to teamagainst the team without him
54.5Expected goals for %52.4 expected for, 43.7 against
+3.6xGF% relative to teamagainst the team without him
50.3Fenwick for %unblocked attempts
57.5Goals for %46 for, 34 against
101.7PDO7.5% shooting + 94.2% saves
231Attempts takenhis own shot attempts

Each share is coloured by where it ranks among the 583 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
Jamie Oleksiak · Miro Heiskanen60464:4352.561.112-9
Esa Lindell · Miro Heiskanen58202:4041.944.19-11
Stephen Johns · Miro Heiskanen15202:1053.653.36-3
Andrej Sekera · Miro Heiskanen50149:5150.858.76-4

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.

7Goalsnot counting empty-netters
9.9Expected goalsfrom 208 unblocked attempts
-2.9Goals above expectedgoals minus expected goals
Chances created 0.37 expected goals per 60 minutes96th
Shot quality 4.8% chance per attempt97th
Finishing -2.9 goals above expected3rdOne 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.

02468Game 20Game 40Game 60Expected 9.9Goals 7

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
Mar 10, 2020 vs NYR L 2-4 0 2 2 -2 0 4 0 25:34
Mar 7, 2020 vs NSH L 0-1 0 0 0 0 0 4 0 21:55
Mar 5, 2020 @ NSH L 0-2 0 0 0 0 0 0 1 23:14
Mar 3, 2020 vs EDM L 1-2 (OT) 0 0 0 0 0 4 0 22:10
Feb 29, 2020 @ STL L 3-4 (SO) 0 0 0 1 0 1 0 24:17
Feb 27, 2020 @ BOS L 3-4 1 0 1 2 0 3 1 25:13
Feb 25, 2020 @ CAR W 4-1 0 0 0 2 0 2 0 23:00
Feb 23, 2020 vs CHI W 2-1 0 0 0 1 0 1 2 19:55
Feb 21, 2020 vs STL L 1-5 0 0 0 -1 0 1 1 22:27
Feb 19, 2020 vs ARI W 3-2 0 1 1 1 0 2 2 23:41
Feb 16, 2020 @ OTT L 3-4 (OT) 0 2 2 1 0 3 0 24:40
Feb 15, 2020 @ MTL W 4-3 (OT) 0 0 0 0 0 1 1 25:09
Feb 13, 2020 @ TOR W 3-2 0 0 0 -1 2 2 0 23:11
Feb 11, 2020 vs CAR W 4-1 0 2 2 1 0 1 1 20:30
Feb 8, 2020 @ STL W 3-2 (OT) 0 1 1 2 0 3 1 21:44
Feb 7, 2020 vs MIN L 2-3 0 1 1 1 0 2 2 20:34
Feb 4, 2020 @ NYI L 3-4 (OT) 0 0 0 -1 0 1 0 22:50
Feb 3, 2020 @ NYR W 5-3 0 0 0 0 2 1 1 22:39
Feb 1, 2020 @ NJD W 3-2 (OT) 0 0 0 0 0 3 1 22:47
Jan 29, 2020 vs TOR L 3-5 0 1 1 -1 2 4 1 25:16
Jan 27, 2020 vs TBL W 3-2 (OT) 0 0 0 0 0 4 0 20:31
Jan 16, 2020 vs BUF L 1-4 0 1 1 0 0 2 1 12:06
Jan 14, 2020 @ COL W 3-2 (OT) 0 0 0 -1 0 2 1 21:41
Jan 11, 2020 @ SJS L 1-2 0 1 1 -1 0 2 0 26:05
Jan 9, 2020 @ ANA W 3-0 0 0 0 1 0 0 2 22:38
Jan 8, 2020 @ LAK W 2-1 0 0 0 0 0 2 2 23:17
Jan 3, 2020 vs DET W 4-1 0 0 0 -1 0 4 3 24:31
Jan 1, 2020 vs NSH W 4-2 0 0 0 1 0 2 0 25:09
Dec 29, 2019 @ ARI W 4-2 0 0 0 0 0 2 2 24:55
Dec 28, 2019 vs COL W 3-2 (SO) 0 0 0 -1 0 3 1 27:40
Dec 22, 2019 vs CGY L 1-5 0 0 0 0 0 2 0 23:18
Dec 20, 2019 @ FLA L 4-7 0 1 1 1 0 4 1 25:21
Dec 19, 2019 @ TBL W 4-3 (OT) 0 0 0 0 0 2 0 23:03
Dec 16, 2019 vs EDM L 1-2 0 0 0 0 0 1 3 25:16
Dec 14, 2019 @ NSH W 4-1 0 0 0 0 0 4 0 21:57
Dec 13, 2019 vs VGK L 2-3 (OT) 0 0 0 0 0 3 0 24:39
Dec 10, 2019 vs NJD W 2-0 0 0 0 1 2 1 1 21:53
Dec 7, 2019 vs NYI W 3-1 0 1 1 0 0 5 0 19:51
Dec 5, 2019 vs WPG W 3-2 (OT) 0 2 2 -1 0 3 0 24:23
Dec 3, 2019 @ WPG L 1-5 1 0 1 -2 0 3 0 21:36
Dec 1, 2019 @ MIN L 2-3 (SO) 0 0 0 0 0 4 0 23:18
Nov 29, 2019 vs STL L 1-3 0 0 0 -2 0 0 0 25:09
Nov 26, 2019 @ CHI L 0-3 0 0 0 0 0 1 1 24:42
Nov 25, 2019 vs VGK W 4-2 0 0 0 0 0 2 0 23:26
Nov 23, 2019 vs CHI W 2-1 (SO) 0 0 0 -1 2 4 0 25:06
Nov 21, 2019 vs WPG W 5-3 0 1 1 1 0 4 0 24:06
Nov 19, 2019 vs VAN W 6-1 1 1 2 2 0 1 0 23:08
Nov 16, 2019 @ EDM W 5-4 (OT) 1 1 2 1 0 7 2 28:13
Nov 14, 2019 @ VAN W 4-2 0 2 2 2 0 2 0 23:55
Nov 13, 2019 @ CGY W 3-1 0 1 1 1 0 3 0 25:18
Nov 10, 2019 @ WPG L 2-3 (OT) 0 0 0 0 0 5 0 25:30
Nov 5, 2019 vs COL W 4-1 0 0 0 0 2 3 0 27:07
Nov 2, 2019 vs MTL W 4-1 1 0 1 1 0 2 0 25:00
Nov 1, 2019 @ COL W 2-1 0 0 0 2 0 2 0 27:20
Oct 29, 2019 vs MIN W 6-3 0 2 2 4 0 5 1 26:55
Oct 26, 2019 vs PIT L 0-3 0 0 0 -2 0 0 1 25:02
Oct 24, 2019 vs ANA W 2-1 0 0 0 1 0 2 0 26:14
Oct 21, 2019 vs OTT W 2-1 0 0 0 -1 0 2 0 21:15
Oct 19, 2019 @ PHI W 4-1 1 0 1 2 0 2 0 25:08
Oct 18, 2019 @ PIT L 2-4 0 1 1 -2 0 3 1 25:17
Oct 16, 2019 @ CBJ L 2-3 1 0 1 1 0 2 0 21:21
Oct 14, 2019 @ BUF L 0-4 0 0 0 0 0 1 0 21:54
Oct 12, 2019 vs WSH L 1-4 0 1 1 1 0 1 0 24:15
Oct 10, 2019 vs CGY L 2-3 (SO) 0 0 0 0 0 2 0 28:06
Oct 8, 2019 @ WSH W 4-3 (OT) 0 0 0 1 0 1 1 23:03
Oct 6, 2019 @ DET L 3-4 0 1 1 -1 0 0 0 26:33
Oct 5, 2019 @ STL L 2-3 1 0 1 1 0 7 0 25:18
Oct 3, 2019 vs BOS L 1-2 0 0 0 -1 0 1 1 23:53