Vichy est située sur la rivière Allier, affluent de la Loire.
Elle est accessible depuis la route départementale 2209 (depuis Gannat ou Varennes-sur-Allier), la RD 906 depuis Thiers, la RD 1093 depuis Randan ou la RD 6 depuis Charmeil.
Mais elle est située actuellement à 20 km de l’autoroute A719 et à 35 km de l’autoroute A89 (ex-A72).