Mlava originates as the Tisnica, from the Kučaj mountains in eastern Serbia, under the Veliki Krš peak. It flows to the north and curves around the eastern slopes of the mountain Beljanica, through an almost uninhabited area. Reaching the Homolje region, the Tisnica receives from the right a very powerful outflow of the karst well of Žagubičko vrelo (Žagubica well), at an altitude of 320 meters, and from that point the river is known as the Mlava. Measured from the Žagubičko vrelo, the river is 122 km long.
Originally, the Mlava flows to the northwest, but soon turns to the north, which is the general direction it follows for the rest of its course. It flows next to the Žagubica, the main center of Homolje valley, and the villages of Izvarica (where it receives from the right the Jošanička reka), Ribare, Sige and Ladne Vode.
In this section, the Mlava carved a long gorge, Gornjčako-ribarska klisura (Cyrillic: Горњачко-рибарска клисура; The gorge of Gornjak-Ribare), which begins at the Ribare, than it widens into the Krepoljin widening (where the large village of Krepoljin is located), and narrows again. Breaking through the ending part of the gorge at the village of Ždrelo, near the monastery of Gornjak, the Mlava leaves the Homolje for the Mlava region.
In this section, the Mlava valley widens, as the river flows next to the villages of Šetonje, Malo Laole, Veliko Laole, and reaches the town of Petrovac na Mlavi, the center of the whole Mlava region. It continues to the north, passes through the villages of Kamenovo, Trnovče and Rašanac and enters the hilly region of Stig.
In the final section, which borders the Stig plain, the Mlava spills over into many parallel streams and causes frequent floods, so even though many villages are located near the river, none of them are on the river banks: Veliko Selo, Toponica, Kalište, Malo Crniće, Veliko Crniće, Salakovac, Trnjane, Nabrađe, Bubušinac and Bradarac. Here, the Mlava receives its two major tributaries: Čokordin, from the left, and Vitovnica, from the right. One of its arms flows just a few kilometers from the city of Požarevac.
The last two settlements on the Mlava course are the village of Drmno and the town of Kostolac, both also a coal mines, located in the center of the Kostolac coal basin. The Mlava doesn't flow into the main bed of the Danube, but in its small, southern arm of Dunavac (Cyrillic: Дунавац; Little Danube) at an altitude of 67 meters, which used to surround the marshy peninsula of Ostrvo, formwerly the largest island in Serbia. In the rainy years, the Mlava breaks through the middle of the island, and splits it in two. Some sources call this dividing stream Mogila (Cyrillic: Могила), while the Dunavac is being considered as the final part of the Mlava course until it reverts to the Danube, east of the tourist resort of Ram.
Drainage area of The Mlava covers 1,830 km³ and belongs the Black Sea drainage area.
Average annual discharge at the mouth is 14 m³/s. The river's huge possibility in hydroelectricity in the gorge of Gornjak-Ribare is not used. The dam would also help to prevent floods below the artificial lake that would be created.