Der Qashqadaryo entspringt in den westlichen Ausläufern von Hissargebirge und Serafschankette. Er fließt in westlicher Richtung, anfangs in Tadschikistan. Er passiert den Ort Farob und überquert die Grenze nach Usbekistan. Allmählich wendet sich der Qashqadaryo nach Südwesten. Dabei passiert er die Städte Kitob und Chiroqchi und nimmt die linken Nebenflüsse Jinnidaryo, Oqsuv und Tanhozdaryo auf. Letzterer nimmt 10 km oberhalb seiner Mündung den Tanxozdaryo rechtsseitig auf. Im Mittellauf wird der Qashqadaryo zum Chimkurgan-Stausee aufgestaut. Im Unterlauf trifft noch der Gʻuzordaryo, ebenfalls von links, auf den Fluss. Schließlich erreicht er die Großstadt Qarshi und versickert in der Qarshisteppe.
Der Qashqadaryo hat eine Länge von 378 km. Sein Einzugsgebiet umfasst etwa 8780 km². Der Fluss bekommt zusätzlich Wasser vom nördlich verlaufenden Serafschan, dem drittgrößten Fluss Usbekistans, über den Eskianhorkanal.