Река Въча се образува от сливането на двете съставящи я реки Буйновска река (лява съставяща) и Чаирдере (дясна съставяща) на 847 м н.в., на 41°40′19″ с. ш. 24°21′12″ и. д. в село Тешел, община Девин. За начало на Въча се приема Буйновска река, извираща от Каинчалския дял на Западните Родопи от 1 558 м н.в., на 3,4 км югоизточно от село Кожари, община Борино, в непосредствена близост до българо-гръцката граница.
В най-горното си течение долината на Буйновска река е в посока северозапад и е широка, заета от ливади и малки обработваеми земи. След село Буйново реката завива на север и чак до излизането си от Родопите при град Кричим протича в дълбока каньоновидна долина, която се приема за граница между западната и източната част на Западните Родопи. Изключение от това правило са малките долинни разширения около Тешел, Грохотно, Девин и Михалково. При град Кричим Въча навлиза в Горнотракийската низина, където течението ѝ е бавно и спокойно в широко песъчливо корито, укрепено в водозащитни диги.