Wychowanek klubu Dinamo Zagrzeb. Kranjčar długo grał w zespole Dinama, także jako kapitan drużyny, ale na początku 2005 roku, po konflikcie z zarządem klubu, przeniósł się do drużyny rywala Hajduka Split. Jego transfer odbił się szerokim echem w środowisku piłkarskim Chorwacji. Na kilka godzin przed zamknięciem letniego okna transferowego 2006 r. podpisał 4-letni kontrakt z angielskim Portsmouth FC.
We wrześniu 2009 roku przeniósł się do Tottenham Hotspur za kwotę 2 milionów. W czerwcu 2012 roku za 7 mln euro przeszedł do Dynama Kijów[1]. 2 września 2013 został wypożyczony do Queens Park Rangers F.C.[2]. W sierpniu 2015 powrócił do Dynama Kijów[3]. W styczniu 2016 za obopólną zgodą kontrakt z Dynamem został anulowany[4]. W marcu 2016 trafił do New York Cosmos[5].