Le Coiroux prend sa source vers 565 mètres d'altitude, sur la commune de Sainte Fortunade à l'est du Puy des Crozes. Il passe au nord du bourg du Chastang puis est retenu au lac du Coiroux, un plan d'eau artificiel de 24 hectares.
Au XIIe siècle, les moines ont creusé en rive droite, à flanc de rocher, une dérivation longue d'un kilomètre et demi pour alimenter en eau l'abbaye d'Aubazine, « le canal des moines ».
Le Coiroux se fraie ensuite un chemin à travers des gorges étroites en contrebas d'Aubazine. Il se jette dans la Roanne en rive droite à moins de 160 mètres d'altitude, deux kilomètres à l'est du bourg de Dampniat, au sud du lieu-dit le Bourret.
Le Coiroux est long de 11,4 km pour un bassin versant de 20 km.