The easiest connection from Tallinn is by direct bus, which takes around one and a half hours. Several services run daily; check the Lux Express and Elron timetables for current schedules. Haapsalu has a railway station — a beautiful building worth visiting in its own right — but there are no longer any passenger trains; the tracks were removed decades ago.
From Tallinn by car takes about the same time as the bus, roughly 100 km via Highway 8. Haapsalu is also the departure point for ferries to the western islands of Hiiumaa and Vormsi.