Xã Vĩnh Hảo nằm ở phía đông nam huyện Bắc Quang, có vị trí địa lý:
- Phía đông giáp tỉnh Tuyên Quang và thị trấn Vĩnh Tuy
- Phía tây giáp tỉnh Tuyên Quang và các xã Tiên Kiều, Vĩnh Phúc, Đông Thành
- Phía nam giáp tỉnh Tuyên Quang
- Phía bắc giáp tỉnh Tuyên Quang và xã Hùng An.
Xã Vĩnh Hảo có diện tích 44,92 km², dân số năm 2019 là 5.131 người[2], mật độ dân số đạt 114 người/km².