Karlsson on IFK Tumban kasvatti. Hän siirtyi jo juniorina Hammarby IF:ään, jonka J20-joukkueessa Karlsson pelasi kevääseen 2002 asti. Vuodet 2002–2004 hän torjui I-divisioonajoukkueBotkyrka Hockeyssa. Karlsson siirtyi kaudeksi 2004–2005 sarjatasoa ylemmäs Allsvenskan-joukkue IK Oskarshamniin. Hän toimi kakkosmaalivahtina Tero Leinoselle ja torjui yhdeksän runkosarjaottelua. Joukkue eteni Kvalserieniin asti, joissa Karlsson pelasi kaksi ottelua keväällä 2005. Oskarshamn ei kuitenkaan noussut kauden päätteeksi Elitserieniin. Kaudella 2005–2006 Karlsson pelasi joukkueessa vain yhden runkosarjaottelun. Hän pelasi lähes koko kauden lainalla I-divisioonan MB Hockeyssa.[3]
Kaudeksi 2006–2007 Karlsson palasi Hammarbyyn ja toimi sen HockeyAllsvenskan-joukkueen ykkösmaalivahtina. Karlsson hoiti samaa virkaa myös kaudella 2007–2008, kunnes hän siirtyi kaksivuotisella sopimuksella Malmö Redhawksiin tammikuussa 2008. Karlsson toimi joukkueen ykkösmaalivahtina suurimman osan kaudesta 2008–2009, kunnes siirtyi tammikuussa 2009 Elitserieniin ja Södertälje SK:hon.[3] Hän toimi loppukauden joukkueen ykkösmaalivahtina ja onnistui säilyttämään Södertäljen sarjapaikan Kvalserienin päätteeksi.
Karlsson siirtyi kaudeksi 2009–2010 Södertäljestä Färjestad BK:hon.[4][5] Hän teki elokuussa 2009 sopimuksen NHL-joukkue San Jose Sharksin kanssa, mutta pelasi koko kauden lainalla Färjestadissa.[6][7] Karlsson kantoi joukkueen torjuntavastuuta suurimman osan runkosarjasta ja pelasi 34 ottelua. Hän jäi kuitenkin loppukaudella kakkosmaalivahdiksi Robin Rahmille, eikä torjunut kevään 2010 pudotuspeleissä.
Kesäkuussa 2010 Karlsson kaupattiin Sharksista Calgary Flamesiin vaihdossa kuudennen kierroksen varausvuoroon NHL:n varaustilaisuuteen 2010. Hänestä tuli lähtökohtainen kakkosmaalivahti Miikka Kiprusoffille.[8][9] Karlsson pelasi ensimmäisen NHL-ottelunsa 22. lokakuuta 2010, jolloin hän torjui 6–2-voiton Columbus Blue Jacketsista. Hän torjui ottelussa 20 laukausta. Karlsson pelasi Flamesissa kahden kauden aikana 26 ottelua. Työsulun takia tammikuussa 2013 alkaneen kauden 2012–2013 alussa Chicago Blackhawks hankki Karlssonin Flamesista vaihdossa seitsemännen kierroksen varausvuoroon kesälle 2013.[10] Hän jäi kuitenkin ilman peliaikaa Blachawksissa ja loppukausi kului farmijoukkue Rockford IceHogsissa, AHL:ssä.
Kaudeksi 2014–2015 Karlsson siirtyi vuoden mittaisella sopimuksella KHL:n laajennusjoukkue Jokereihin.[13] Tammikuussa 2015 hän teki joukkueen kanssa vuoden mittaisen jatkosopimuksen.[14] Karlsson edusti Jokereita myös Spengler Cupissa sekä vuonna 2014 että 2015.[3] Kahden joukkueessa vietetyn vuoden jälkeen hän siirtyi kaudeksi 2016–2017 vuoden mittaisella sopimuksella KHL:n kazakstanilaisseuraBarys Astanan maalinsuulle.[15]