His former teams are IK Brage, IF Elfsborg, sc Heerenveen, Aalborg Boldspilklub and AS Saint-Étienne. Nilsson signed for Saint Etienne on 8 August 2007, after leaving Heerenveen, in a four-year deal worth up to €3 million. In January 2009 he moved to Vitesse Arnhem on loan, a move which became permanent when he signed a three-year deal in June 2009.
He now plays for Elfsborg in the Swedish Allsvenskan.
He has played for the Sweden national football team