Haapsalu, which is bordered by the sea on three sides, fits on a piece of land with a size of just 10.59 km2. The Old Town is located on a peninsula with two eskers, which continue to the north-west as a chain of islets (holms) connected to the mainland. There are low meanders between the holms – Suur and Väike Viik.
The culturally and environmentally valuable Old Town of Haapsalu can be divided into its medieval section and the 20th-century health resort area. The medieval part is around the Episcopal castle with the medieval network of Kooli, Jaani, Vee, Linda, Rüütli and Väike-Mere Streets and buildings. It is surrounded by a belt of wooden houses and the Promenade, Aafrika beach, and parks.