Sông Lô bắt nguồn từ tỉnh Vân Nam (Trung Quốc), chảy vào Việt Nam tại địa phận xã Thanh Thủy, huyện Vị Xuyên, tỉnh Hà Giang. Điểm cuối ở ngã ba sông Việt Trì, tỉnh Phú Thọ và hợp lưu với sông Hồng.
Đoạn sông Lô chảy ở Việt Nam dài 274 km, diện tích lưu vực là 22.600 km2. Riêng đoạn chảy qua tỉnh Tuyên Quang dài 145 km. Đây là một trong 5 sông dài nhất ở miền bắc Việt Nam (sông Hồng, sông Đà, sông Lô, sông Cầu, sông Đáy).