Karlsson begann mit dem Fußballspielen bei Vasalunds IF. Die Verantwortlichen des Erstligisten AIK entdeckten sein Talent und holten ihn 1998 in die eigene Jugendabteilung. Dort entwickelte er sich zum Nachwuchsnationalspieler und kam für die U-15-Nationalmannschaft Schwedens beim 4:2-Erfolg über die finnische U-15-Auswahl an der Seite von Spielern wie Ajsel Kujović, Labinot Harbuzi oder Oskar Rönningberg zu seinem Debüt im Nationaljersey.[1] In den folgenden Jahren konnte er sich unter den besten Spielern seines Jahrgangs etablieren und gehörte regelmäßig zum Aufgebot der Nachwuchsnationalmannschaften.
In der Spielzeit 2003 rückte Karlsson in den Profikader des Traditionsvereins auf. Sein Debüt in der ersten Mannschaft feierte er am 29. Mai des Jahres, als er in einem Pokalspiel gegen BK Häcken in der 75. Spielminute für Jimmy Tamandi eingewechselt wurde. Es dauerte einige Zeit, bis er sich im Sommer in den Kader für ein Allsvenskanspiel kämpfen konnte und auf der Ersatzbank Platz nahm. Zu seinem Erstligadebüt kam er bei der 1:3-Auswärtsniederlage bei Örgryte IS, als er am 23. Juli des Jahres in Göteborg zehn Minuten vor Spielende für Krister Nordin eingewechselt wurde.[2] In der Folgezeit schwankte er zwischen Tribüne und Ersatzbank und kam in seiner ersten Spielzeit im Profifußball zu keinem weiteren Einsatz. Erst gegen Mitte der Spielzeit 2004 etablierte er sich im Kader und erkämpfte sich, als Fredrik Björck und Per Nilsson verletzungsbedingt ausfielen, zeitweilig einen Stammplatz in der Abwehrkette vor Torwart und MannschaftskapitänHåkan Svensson. Gegen Ende der Spielzeit gehörte er wieder zu den Ersatzspielern und nach einem komplizierten Schienbeinbruch Anfang Mai des nächsten Jahres fiel er bis Saisonende aus.[3]
Um Karlsson zu Spielpraxis kommen zu lassen, wechselte er 2006 auf Leihbasis zu Väsby United, seinerzeit das Farmteam AIKs, in die Superettan. Dort konnte er sich nicht durchsetzen und saß zu Saisonbeginn auf der Ersatzbank. Bei einem Trainingsspiel gegen die zweite Mannschaft von AIK nach dem dritten Spieltag Anfang Mai brach er sich den Arm und fiel abermals längere Zeit aus.[4] Ohne ein Ligaspiel für den Klub bestritten zu haben, kehrte er nach Saisonende zu AIK zurück und wurde auf eigenen Wunsch für die folgende Spielzeit abermals verliehen. Um nicht als Ersatzmann der Stammspieler Nicklas Carlsson und Niklas Sandberg auf der Bank zu landen, ging er zu Åtvidabergs FF in die Superettan. Als Stammspieler in der Verteidigung erreichte er mit dem Klub aus Östergötland den sechsten Rang der zweiten Liga und kehrte nach einer Unterbrechung aufgrund seiner Verletzungen ins Nationaljersey zurück. Beim 4:2-Erfolg über die U21 Lettlands lief er an der Seite von Tom Siwe, Mattias Bjärsmyr und Martin Olsson in der Abwehrformation der schwedischen U21-Nationalmannschaft auf.[5]
Zur Spielzeit 2008 kehrte Karlsson nach zwei Jahren in der zweiten Liga zu AIK zurück. Da Trainer Rikard Norling anfangs Daniel Arnefjord, Walid Atta, Pierre Bengtsson und Nils-Eric Johansson in der Stammformation bevorzugte, saß er zunächst wiederum auf der Ersatzbank. Ab dem fünften Spieltag konnte er sich jedoch in der Anfangself etablieren und einen Stammplatz behaupten. Nachdem er auch 2009 in neun der elf Saisonspiele bis zur Sommerpause der schwedischen Liga zum Einsatz gekommen war, wurde er Ende Mai von den Auswahltrainern Tommy Söderberg und Jörgen Lennartsson an der Seite seiner Vereinskollegen Gabriel Özkan und Pierre Bengtsson für den schwedischen Kader bei der U-21-Europameisterschaft im eigenen Land berücksichtigt.[6]
Nachdem Karlsson mit der U-21-Auswahl erst im Halbfinale gescheitert war, war er auf Klubebene erfolgreicher. In allen seinen 26 Saisonspielen in der Startformation trug er entscheidend zum Gewinn des Lennart-Johansson-Pokals für den schwedischen Landesmeister am Saisonende bei. Zudem stand er im Pokalfinale gegen den IFK Göteborg an der Seite von Jos Hooiveld in der Innenverteidigung und feierte nach dem 2:0-Erfolg durch Tore von Mauro Iván Óbolo und Antônio Flávio das Double. Durch gute Leistungen im Saisonverlauf hatte er sich ausgezeichnet, so dass Nationaltrainer Erik Hamrén ihn für die Auftaktländerspiele 2010 in den Kader der Nationalmannschaft berief. Beim 1:0-Erfolg über die Landesauswahl des Oman am 20. Januar des Jahres durch ein Tor von Anders Svensson debütierte er im Nationaljersey. In der anschließenden Spielzeit, in der die Mannschaft gegen den Abstieg spielte, weitestgehend Stammspieler, verletzte er sich im September an der Gesäßmuskulatur. Trotz Warnung der medizinischen Abteilung drei Wochen später von Trainer Alex Miller zurück in die Mannschaft beordert, brach die Verletzung erneut auf und verhinderte weitere Einsätze bis zum Saisonende im November.[7]
In der Saisonvorbereitung verletzungsbedingt gebremst etablierten sich Niklas Backman und Alexander Milošević als Stammspieler in der Innenverteidigung. Trotz lediglich sechs Spieleinsätzen im Saisonverlauf einigte er sich kurz nach Ende der Spielzeit 2011 mit den Vereinsverantwortlichen des Vizemeisters auf eine Verlängerung seines 2012 auslaufenden Vertrages und unterzeichnete einen neuen Drei-Jahres-Vertrag.[8] Im Laufe der folgenden Spielzeit etablierte er sich als Stammspieler in der Defensive, in der Spielzeit 2013 stellte ihn Trainer Andreas Alm in allen 30 Saisonspielen in der Startformation auf. Durch seine guten Leistungen kehrte er in die Nationalelf zurück, im Rahmen der Qualifikation für die Weltmeisterschaft 2014 berief ihn Hamrén als Nachrücker für den verletzten Jonas Olsson in den Kader für das Aufeinandertreffen mit Deutschland[9] Wenngleich er nicht zum Einsatz kam und beim Play-off-Spiel gegen Portugal der wieder genesene Olsson zum Aufgebot gehörte, stand er im ersten Aufgebot für die Wintertour der schwedischen Nationalmannschaft Anfang 2014. Aufgrund einer Entzündung im Knie musste er jedoch im Januar absagen und wurde durch den AIK-Mannschaftskameraden Backman ersetzt.[10]
Nach seiner Wiedergenesung war Karlsson in der Spielzeit 2014 weiters unumstrittener Stammspieler, woraufhin der Klub seinen Vertrag im Mai des Jahres bis Ende 2017 verlängerte.[11]
Karlsson beendete seine Karriere im Januar 2023 im Alter von 36 Jahre beim Verein AIK Solna.[12]