Badu speelde in eigen land voor Berlin, Berekum Arsenal en Asante Kotoko. Op 16 april 2009 nam het Spaanse Recreativo Huelva hem op huurbasis over van Berekum Arsenal. In september 2009 keerde hij terug naar Ghana.
In november 2009 maakten BBC en Sky Sports bekend dat Udinese de Ghanees zou vastleggen in de komende transferperiode in januari. Op 28 januari 2010 bevestigde Udinese het nieuws. Op 12 februari 2010 zat hij op de bank tegen AC Milan. Op 28 maart 2010 debuteerde Badu voor Udinese in een competitiewedstrijd tegen ACF Fiorentina. Tijdens het seizoen 2011-2012 dwong hij een plek in het basiselftal af als vervanger van de naar Napoli vertrokken Gökhan Inler. Samen met landgenoot Kwadwo Asamoah vormde hij een duo op het middenveld centraal voor de verdediging. Gedurende het seizoen 2013/14 scoorde Badu – als defensieve middenvelder – vijf doelpunten in de Serie A.
Op 22 mei 2008 debuteerde Badu voor Ghana, tegen Lesotho. Op 3 juni 2011 scoorde hij zijn eerste treffer voor The Black Cats tegen Congo. Hij scoorde ook tegen Swaziland, Gabon, Guinea en Egypte.