The distance between Haapsalu and Viljandi is around 188km (117 miles) and the quickest way to get there is to drive which takes around 2h 40m.
We've found 4 different ways to get from Haapsalu to Viljandi by bus, train and car. The recommended routes, which include information on duration, ticket price, and level of difficulty, can be found below.
👋 Also check out Viljandi → Haapsalu if you're planning a return trip.
Take the bus to Lihula and then to Vabaduse plats.
Go Bus AS
1 similiar route
We’ve grouped similar routes together, click the arrows to see the other options.
Take the bus to Vana-Pääsküla then take the train to Viljandi.
Multiple operators
There are several options for getting from Haapsalu to Viljandi by bus, train and car. The cheapest option is to take the bus which costs around €10 ($10) and will take around 3hrs. If you need to get there more quickly, you can drive and arrive in approximately 2h 40m, though it is a bit more costly at approximately €35 ($35).
The distance between Haapsalu and Viljandi is around 188km (117 miles). In a direct line (as the crow flies), the distance is 135km (84 miles)
It takes around 3hrs to get from Haapsalu and Viljandi by bus. If you are travelling by car it will take around 2h 40m to drive there.
The quickest way to get from Haapsalu to Viljandi is to drive which takes around 2h 40m and will set you back approx €35 ($35).
The cheapest way to travel between Haapsalu and Viljandi, if you exclude driving, is to take the bus which will typically cost around €10 ($10) for a standard one-way ticket.
There is no train service that runs between Haapsalu and Viljandi. We recommend that you drive to Viljandi. instead which will take 2h 40m.
Yes there is a bus that runs regularly from Haapsalu and Viljandi. It typically takes around 3hrs and departs once daily.
There are no direct bus services that runs from Haapsalu to Viljandi. However, you can instead can take several connecting buses with changeovers in Lihula. These services run once daily and will take a minimum of 3hrs.
Go Bus AS, MK Reis-X OÜ, Aktsiaselts Hansa Bussiliinid and Taisto Express OÜ run regular bus services between Haapsalu and Viljandi. Buses run once daily and take around 3hrs on average but will vary depending on you book with.
It doesn't look like you can fly directly from Haapsalu to Viljandi. We recommend that you take the bus to Lihula and then to Vabaduse plats. instead which will take 3hrs.
The closest major airport to Viljandi is Tallinn Airport (TLL) (TLL) which is approximately 125km (78 miles) from Viljandi.
Yes it is possible to drive from Haapsalu and Viljandi. The distance is around 188km (117 miles) by road and it will take around 2h 40m in normal traffic conditons.
If you don't have a car, the easiest way to get from Haapsalu to Viljandi is to take the bus which takes, on average, 3hrs and will usually cost around €10 ($10).
Transport option | Duration | Cost | Frequency | Distance |
---|---|---|---|---|
Bus + 1 similar | 3hrs | €10($10) | once daily | 204km (127 miles) |
Bus via Türi bussijaam | 3h 15m | €11($11) | once daily | 203km (126 miles) |
Bus and Train | 4hrs | €14($14) | 5 times a day | 248km (154 miles) |
Drive | 2h 40m | €35($35) | on demand | 188km (117 miles) |
Go Bus AS
MK Reis-X OÜ
Aktsiaselts Hansa Bussiliinid
Taisto Express OÜ
Lux Express
The following major airports near Viljandi offer regular flights to various popular destinations within Estonia and internationally.