国見山系南部・標高670mの隠居岳(かくいだけ)東麓を水源とする。心野町(ここんのまち)を東へ流れ下り、横手町で流れを南東へ変える。なお、小森川と有田川との分水界は、長崎県佐世保市と佐賀県西松浦郡有田町の境界となっている。
吉福町で、東側から木原川・江永川が合流し、同時に流路を南西へ変える。中流域では水田が広がる三川内地区の盆地を大きく蛇行しながら流れ、日の出川など多くの支流が合流する。
下流域の早岐地区は都市部で、川の両岸が護岸されている。花高団地の下流で下の原ダムがある鷹巣川が合流し、なおも蛇行しながら中原町・権常寺町・広田と流れ、早岐瀬戸へ注ぐ。
中原町では1度大水害が起きている