Spoleto si trova nell'estremità meridionale della Valle Umbra, una pianura alluvionale generata in epoca preistorica a partire da un vasto lago, il lacus Umber, prosciugato nel Medioevo. La città si è sviluppata sul colle Sant'Elia fino a spingersi, in basso, fino alle rive del Tessino. Ad est è contornata dai monti che delimitano la Valnerina.