Vassdraget øverste utspring er fra Hovdevatna i Nordre Land kommune, nord for Store Skjellingshovde. Herfra renner Hovdebekken ned til Øyvatnet (639 moh.), hvor en rekke andre små skogsbekker også munner ut. Fra Øyvatnet renner Øyvasselva mot sørøst ned til Grevssjøen (552 moh.), hvor den skifter navn til Grevssjøelva og fortsetter ned til tre små vatn kalt Stortjernet, Åboren og Veslevatnet. Elva skifter igjen navn, nå til Lygna, og renner mot sør til den ved Åmot renner sammen med Sandungselva fra Selsjøen. Samløpet danner selve Lomsdalselva, som fortsetter mot sør til Lomsjøen (250 moh.) Fra Lomsjøen renner elva mot sørvest den siste strekningen ned til munningen i Randsfjorden ved Lomsdalen.