Elva har utspring fra Strandavatnet øst for Kvanngrødvarden lengst sørvest i Høyanger kommune. Den renner derfra mot nord til Årnesvatna, deretter mot sørvest til Inngardsvatnet, hvor den møter elva fra Skjerjevatnet. Ved utløpet fra Inngardsvatnet krysser den grensa til Gulen kommune og renner mot nordvest ned Fossedalen, hvor den møter elva derfra etter at de to elvene har dannet to parallelle fosser. Elva fortsetter mot nord gjennom den dype og trange dalen, hvor den veksler mellom fossestryk og mere rolige partier. Fra øst kommer Koveelva og Indredalselva inn. Nedstrøms samløpet med Indredalselva blir dalen noe bredere og flatere, og det ligger bebyggelse og jordbruksområder på begge sider av elva. Rundt en halv kilometer før munningen i Sognefjorden ved Indre Oppedal renner elva igjen i fossestryk.