The river rises in the centre of Compton Martin village, in the district of Bath and North East Somerset, as a spring which feeds the village duckpond. From there it flows past the village of Ubley and enters Blagdon Lake, which was created in the 1890s by damming the river, just north of the village of Blagdon. From the lake the river flows south of Wrington and Iwood, where there was once one of several watermills along the river. It then flows around the northern outskirts of Congresbury, and crosses Congresbury Moor roughly parallel to the A370 road, past the site of a Roman villa. It then crosses under the M5 motorway and empties into the Severn Estuary in Clevedon Bay, west of the village of Kingston Seymour.