、沾益县西部，宣威市西部，会泽县东部地区，自会泽大井镇双车村起牛栏江成为滇黔两省界河，向北流至贵州省威宁彝族回族苗族自治县玉龙乡韦家大沟右纳玉龙小河后转西流，自云南鲁甸县江底乡再次流入云南境内，作为巧家县与鲁甸县及昭通市昭阳区的界河蜿蜒西北流，至昭阳区田坝乡石格闹以西汇入金沙江。河长439.6公里。天然落差1780米。
堰塞湖.2014年8月3日发生的鲁甸地震，导致牛栏江红石岩水电站上游河段一处山体滑坡，造成会泽县纸厂乡江边村区域内牛栏江堵塞形成堰塞湖，面积49平方公里。