Karsdorp begon bij VV Schoonhoven waar hij werd gescout door Feyenoord, waar hij instroomde in de E-jeugd. De overgang naar de Rotterdamse club had grote impact op de jonge Karsdorp. Hij ging wonen bij zijn vader in Bergambacht en verhuisde naar een basisschool in Rotterdam en later naar de Willem de Zwijger school in Schoonhoven. Daar gingen zijn schoolresultaten zo sterk achteruit, dat zijn vader besloot hem als A-junior van de club af te halen. Nadat zijn schoolgedrag verbeterde, mocht hij zich van zijn ouders weer aansluiten bij VV Schoonhoven. Na een half jaar keerde hij terug bij Feyenoord, terwijl onder andere ook PSV interesse had de speler op te nemen. In het seizoen 2013/14 werd hij uitgeroepen tot beste speler van de landelijke A-jeugd, waar hij voornamelijk speelde als aanvallende middenvelder.[1]
In de voorbereiding van het seizoen 2014/15 kwam hij bij de selectie van het eerste team. Hoofdtrainer Fred Rutten positioneerde Karsdorp echter niet als middenvelder, maar als rechtsback, waardoor de carrière van Karsdorp in een stroomversnelling kwam. Hij debuteerde op 6 augustus 2014 in de return wedstrijd in de voorronde van de UEFA Champions League 2014/15 in de uitwedstrijd tegen Beşiktaş JK als invaller voor Jordy Clasie. Hij maakte zijn competitiedebuut op 24 augustus 2014 in de wedstrijd tegen FC Utrecht die met 1-2 werd verloren. Zijn basisdebuut maakte hij in het doelpuntloze gelijkspel tegen SBV Vitesse. In de gewonnen wedstrijd tegen PSV op 22 maart 2015 was Karsdorp voor het eerst betrokken bij een doelpunt, hij gaf de assist op de omhaal van Anass Achahbar. In de laatste wedstrijd van dat seizoen kreeg hij nog een rode kaart.
In het seizoen 2015/16 won Rick Karsdorp de beker met Feyenoord door in de finale FC Utrecht te verslaan. Karsdorp speelde elke minuut van het toernooi. In de eredivisie speelde hij dat jaar 29 wedstrijden. Door het winnen van de KNVB beker mocht Feyenoord spelen aan de Johan Cruijff Schaal. Deze wedstrijd werd verloren van landskampioen PSV. Voor het eerst in 18 jaar werd de Rotterdamse club met Karsdorp in de gelederen landskampioen. Karsdorp speelde opnieuw alle wedstrijden om de KNVB beker, waar ze in de kwartfinale werden uitgeschakeld. In de Europa League speelde Karsdorp ook alle wedstrijden, waaronder de gewonnen wedstrijd tegen Manchester United. Hij droeg met een doelpunt in de wedstrijd tegen sc Heerenveen bij aan het landskampioen. Hij reageerde alert nadat de strafschop van Dirk Kuijt werd gestopt.
AS Roma
Karsdorp tekende in juni 2017 een contract tot medio 2022 bij AS Roma, de nummer twee van de Serie A in het voorgaande seizoen. De Italiaanse club betaalde €14.000.000,- voor hem aan Feyenoord. Dat kreeg daarbij tot maximaal € 5.000.000,- extra aan eventuele bonussen in het vooruitzicht.[2]
Karsdorp werd direct aan zijn knie geopereerd, waardoor hij 3 maanden uit de roulatie was. Op 25 oktober 2017, in de thuiswedstrijd tegen Crotone, maakte hij zijn debuut voor AS Roma. In die wedstrijd raakte hij direct weer geblesseerd waardoor hij voor de rest van het seizoen moest toekijken hoe de Romeinen de halve finales van de Champions League haalden.
Seizoen 2018/19. Op 31 augustus 2018 speelde Karsdorp weer, tegen AC Milan. Op 27 november maakte hij zijn Champions League-debuut tegen Real Madrid nadat hij kwam invallen voor Nicolò Zaniolo.
Vervolgens waren er geruchten dat Karsdorp (op huurbasis) terug zou keren naar Feyenoord, maar na een basisplaats in de wedstrijden tegen Virtus Entella voor de beker en Torino leek dat niet meer zo nodig.[3]
Op 7 augustus 2019 verhuurde AS Roma Karsdorp toch aan Feyenoord. Bij Feyenoord moest Karsdorp de vervanger worden van de vertrokken Jerry St. Juste, die twee jaar eerder juist de vervanger van Karsdorp was.
Deze verhuurperiode eindigde in de zomer van 2020, waarna Karsdorp terugkeerde naar Roma, waar hij in seizoen 2020/21 een vaste basisplaats wist te veroveren. Ook in seizoen 2021/22 hield hij zijn basisplaats. Aan het einde van dit seizoen won hij met Roma de eerste editie van de UEFA Europa Conference League. In november van seizoen 2022/23 raakte hij in conflict met trainer José Mourinho.[4]
PSV
In de zomer van 2024 liet Karsdorp zijn contract bij AS Roma ontbinden om vervolgens transfervrij naar PSV te vertrekken. Hier tekende hij een contract voor één jaar met daarin een optie voor nog een seizoen.[5] Karsdorp speelde op 22 september zijn eerste wedstrijd voor de club uit Eindhoven, als invaller uit bij Fortuna Sittard (1–3 winst).
Op vrijdag 7 oktober 2016 maakte hij zijn debuut in het Nederlands voetbalelftal, in een wedstrijd tegen Wit-Rusland (4-1) in De Kuip. Het betrof een kwalificatiewedstrijd voor het WK 2018 in Rusland. Hij was de elfde speler die zijn debuut in Oranje maakte onder het bewind van bondscoach Danny Blind. Eind 2016 en begin 2017 speelde hij in totaal drie kwalificatiewedstrijden voor het WK van 2018. Hierna werd hij enkele jaren niet meer opgeroepen voor het Nederlands elftal. Ondanks zijn vaste basisplaats bij AS Roma in seizoen 2020/21, mocht Karsdorp niet mee naar het EK 2021.