Se aloittaa matkansa Ranualta Simojärvestä, virtaa yläjuoksun erämaisten ja asumattomien maiden halki ensin keskijuoksulle, jossa Sääskijärvi ja Kaitajärvi laskevat jokeen ennen ensimmäisen sivujoen, Kelukkajoen, yhtymistä.
Matka jatkuu Toljanjärven, Saarijärven, Saukkojärven ja Juurikkajärven kautta Portimojärvelle. Tässä välissä toinen sivujoki, Kämäjoki, laskee jokeen Saukkojärven ja Juurikkajärven välissä. Portimojärven kohdilla myös Majavajoki ja Ylijoki yhtyvät pääuomaan.