牛栏江以发源于寻甸县南部烂泥箐（旧属金所乡）的果马河为正源，向南流过羊街镇后进入嵩明县上游水库，出库后向南流入嵩明坝子，至牛栏江镇以西转东北流，同时右纳南源杨林河。牛栏江东北流再入寻甸境，流经寻甸县东部、沾益县西部，宣威市西部，会泽县东部地区，自会泽大井镇双车村起牛栏江成为滇黔两省界河，向北流至贵州省威宁彝族回族苗族自治县玉龙乡韦家大沟右纳玉龙小河后转西流，自云南鲁甸县江底乡再次流入云南境内，作为巧家县与鲁甸县及昭通市昭阳区的界河蜿蜒西北流，至昭阳区田坝乡石格闹以西汇入金沙江。河长439.6公里。天然落差