发源自京都府京都市左京区广河原和南丹市美山町佐々里境界的佐々里峠。在左京区广河原、左京区花嵴向南流，在花嵴南部转向西流。东西横断京都市右京区京北地区，经由南丹市日吉町天若的世木水库、同市日吉町中的日吉水库，以降向南流入龟冈盆地。纵断龟冈市的中央部，在保津崃向东南流，在岚山出京都盆地后向南流，在伏见区和鸭川合流，在大坂府境和木津川、宇治川合流为淀川。
表记.通例上，京都市右京区京北地区的流域称作上桂川（かみかつらがわ），进入南丹市园部地区称作桂川，南丹市八木地区到龟冈市称作大堰川（