There are 4 ways to get from Haapsalu to Viljandi by bus, train, or car
Select an option below to see step-by-step directions and to compare ticket prices and travel times in Rome2Rio's travel planner.
Bus
best- Take the bus from Veekeskus to LihulaL20 / ...
- Take the bus from Lihula to Vabaduse plats149
4h 2m€6–10Bus, train
- Take the bus from Haapsalu bussijaam to Vana-Pääsküla234 / ...
- Take the train from Tallinn to ViljandiRe23 / ...
5h€11–26Drive 178 km
- Drive from Haapsalu to Viljandi178 km
2h 37m€29–41Bus via Pärnu
- Take the bus from Haapsalu bussijaam to Pärnu bussijaam321
- Take the bus from Pärnu bussijaam to Ugala371
5h 27m
Haapsalu to Viljandi by bus
Questions & Answers
The cheapest way to get from Haapsalu to Viljandi is to bus which costs €6 - €10 and takes 4h 2m.
The fastest way to get from Haapsalu to Viljandi is to drive which takes 2h 37m and costs €28 - €45.
No, there is no direct bus from Haapsalu to Viljandi. However, there are services departing from Veekeskus and arriving at Vabaduse plats via Lihula. The journey, including transfers, takes approximately 4h 2m.
The distance between Haapsalu and Viljandi is 202 km. The road distance is 178 km.
The best way to get from Haapsalu to Viljandi without a car is to bus which takes 4h 2m and costs €6 - €10.
It takes approximately 4h 2m to get from Haapsalu to Viljandi, including transfers.
Haapsalu to Viljandi bus services, operated by Go Bus AS, depart from Veekeskus station.
Haapsalu to Viljandi bus services, operated by Go Bus AS, arrive at Lihula station.
Yes, the driving distance between Haapsalu to Viljandi is 178 km. It takes approximately 2h 37m to drive from Haapsalu to Viljandi.
There are 120+ hotels available in Viljandi.
What companies run services between Haapsalu, Estonia and Viljandi, Estonia?
You can take a bus from Veekeskus to Vabaduse plats via Lihula in around 4h 2m.
Transport is disrupted due to the Russia-Ukraine war. Read more
- Phone
- +372 616 0245
- klienditugi@elron.ee
- Website
- elron.ee
Train from Tallinn to Viljandi
- Ave. Duration
- 2h 5m
- Frequency
- 5 times a day
- Estimated price
- €7–14
- Website
- https://elron.ee/en
- Express Train Ticket
- €9–14
- Phone
- +372 640 4000
- klienditugi@gobus.ee
- Website
- gobus.ee
Bus from Veekeskus to Lihula
- Ave. Duration
- 44 min
- Frequency
- 5 times a day
- Estimated price
- €1–3
- Website
- https://gobus.ee/en/
Bus from Lihula to Vabaduse plats
- Ave. Duration
- 2h 18m
- Frequency
- Once daily
- Estimated price
- €4–7
- Website
- https://gobus.ee/en/
Bus from Haapsalu bussijaam to Vana-Pääsküla
- Ave. Duration
- 1h 21m
- Frequency
- Every 4 hours
- Estimated price
- €3–5
- Website
- https://gobus.ee/en/
- Phone
- +372 680 0909
- info@luxexpress.eu
- Website
- luxexpress.eu
Bus from Haapsalu bussijaam to Vana-Pääsküla
- Ave. Duration
- 1h 15m
- Frequency
- 4 times a day
- Estimated price
- €8–9
- Website
- https://luxexpress.eu/en/
- Phone
- +372 502 5996
- info@reis.ee
- Website
- reis.ee
Bus from Haapsalu bussijaam to Vana-Pääsküla
- Ave. Duration
- 1h 22m
- Frequency
- Once daily
- Estimated price
- €4–7
- Schedules at
- reis.ee
Bus from Haapsalu bussijaam to Pärnu bussijaam
- Ave. Duration
- 2h 15m
- Frequency
- Once daily
- Estimated price
- €6–9
- Schedules at
- reis.ee
- Phone
- +372 641 8218
- grupp@atko.ee
- Website
- atko.ee
Bus from Pärnu bussijaam to Ugala
- Ave. Duration
- 2h 12m
- Frequency
- 6 times a week
- Website
- Atko Bussiliinid AS
Want to know more about travelling around the world?
Rome2Rio's Travel Guide series provide vital information for the global traveller. Read our range of informative guides on popular transport routes and companies - including Flying into Beijing?, Thanksgiving 2018: How to travel stress-free, and Heading to Europe? Read this before you buy a Eurail Pass - to help you get the most out of your next trip.




















