2006-07: Johan Alm appeared in five games with Skelleftea's U18 team as a 15-year-old with no points nor penalties.
2007-08: Alm played one game for the Skelleftea U20 team and 20 games with the club's U18 team. He played six games for Sweden's U16 team in international competition. Alm had no points in his only SuperElit league game and had 2 assists and 16 penalty minutes with Skelleftea's U18 team. Alm scored 2 goals with 2 assists and 6 penalty minutes with Sweden's U16 team.
2008-09: Johan Alm played for Skelleftea's U20 and U18 junior squads and represented Sweden at the U17 level. In 27 regular season games for Skelleftea's U20 team he scored 1 goal with 1 assist and 10 penalty minutes and he picked up 1 assist in six playoff games. In 12 games with the Skelleftea U18 team, including four playoff games, he scored 2 goals with 3 assists and 12 penalty minutes. Alm played nine games for Sweden's U17 team and had 1 assist with 8 penalty minutes. He played for silver medal-winning Vasterbotten in the TV-Pucken for high school players in Sweden and in seven games had 1 assist with 4 penalty minutes.
2009-10: Alm went from Skelleftea to Frolunda — making his Elitserien debut in two games with the club's men's team — and spent most of the season with the Frolunda U20 team. He played for Sweden in the 2009 World Junior A Challenge in Canada and at the 2010 U18 World Junior Championship. Alm had no points nor penalty minutes in Elitserien play and scored 1 goal with 10 assists and 14 penalty minutes in 40 games, including three playoff games, with Frolunda's U20 team. He played 11 games with Frolunda's bronze medal U18 team; scoring 1 goal with 20 penalty minutes. Alm had no points and 4 penalty minutes in four games at the WJAC and was -1 with 4 penalty minutes in six games as Sweden won a silver medal at the U18 WJC. Alm was ranked 28th amongst European skaters in Central Scouting's final rankings but was not selected in the 2010 NHL Draft.
2010-11: Alm returned to Skelleftea — skating in 16 Elitserien games including three playoff games — and was an assistant captain for the club's U20 squad. He also played seven games for Sweden's U18 team. He had 1 assist and was minus-2 during the regular season for Skelleftea and had no points nor penalty minutes in the Elitserien playoffs. Alm scored 3 goals with 13 assists and 34 penalty minutes in 22 regular season games for the Skelleftea U20 team and had no points and 4 penalty minute in five playoff games. He played one game with Pitea in Sweden's First Division and had no points with 2 penalty minutes. Alm had 3 assists with Sweden's U17 team.
2011-12: Alm played in 36 regular season games and 18 playoff contests for Skelleftea and also played for Vasteras in Allsvenskan in his first full season of pro hockey. He had 6 assists and was +1, averaging 12:22 minutes of ice time during the regular season. Skelleftea finished second and advanced to the playoff finals before falling to fourth-place Brynas. Alm had 4 assists and was -1, averaging 14:22 minutes of ice time, in the playoffs. He had 2 assists and was +10 with 8 penalty minutes in 14 Allsvenskan games with Vasteras and was +2 with 2 goals, 2 assists and 6 penalty minutes in 10 games with the Skelleftea U20 team.
2012-13: Alm was one of three players to skate in all 55 games for Skelleftea in his second season as the club won the re-christened SHL's regular season and playoff titles. He scored 3 goals with 5 assists and was +9 with 42 penalty minutes while averaging 16 minutes of ice time per game. He appeared in six playoff games and was +3 with 3 assists and 8 penalty minutes while averaging 15:29 minutes of ice time.
2013-14: Alm had a breakout season despite missing 25 games during the regular season as Skelleftea captured its second straight SHL championship. An injury in early December kept him out for over two months and he also received a three-game suspension for a hit on HV71's Kevin Fiala in March. Alm scored 1 goal with 6 assists and was +16 with 14 penalty minutes in 30 games during the regular season. In 11 playoff games he was +9 with 3 assists and 24 penalty minutes; averaging just under 20 minutes of ice time per game. Alm played for Sweden's national team for the first time and was +3 with 1 assist in three games at the Karjala Cup in Finland in November. The subject of much speculation following the SHL playoffs, Alm signed a two-year entry-level contract with the Nashville Predators in May 2014.
Alm is primarily a stay-at-home defender.
Alm has signed a free agent contract with the Nashville Predators.