Nilsson was born in
Visby on the island of
Gotland,
Sweden. His youth team was
Visby/Roma HK. He moved to
Leksands IF prior to the 2010–11 season, playing for the club's J18 team in
J18 Allsvenskan, the top-tier J18 league in Sweden. In the 2012–13 season, he played 41 games for Leksand's J20 team in
J20 SuperElit, scoring 23 points. For the
2013–14 season, Nilsson was put in the roster of Leksand's senior team in the
Swedish Hockey League (SHL), the top-tier senior ice hockey league in Sweden. He has played 12 games for the team. On 16 July 2019, with Leksands promoted to the SHL from the Allsvenskan, Nilsson left as a free agent to sign a one-year contract in Norway with the Sparta Warriors of the GET-ligaen. ==International play==