La città sorge in una zona collinare a 128 m s.l.m. La sua costa si estende per 3 km di arenile, sul Mar Adriatico, con la frazione di San Salvo Marina. Fa parte della Costa dei Trabocchi .
Comuni costieri confinanti : Montenero di Bisaccia ⟵ San Salvo ⟶ Vasto