Rather Be Exploring

Zagreb to Ljubljana by Train

January 23, 2025 | 5 Minute Read

A pleasant three-hour journey—plenty of time to practise saying “Ljubljana”.

Introduction

Busses are the public transit of choice between the Croatian and Slovenian capitals, with dozens of departures from early morning to late night linking the two Slavic cities in about two and a half hours. But busses are boring. A less-known, thrice-daily train will take you in comfort along the same route, for a few euros more and a bit more (well spent) time.

Schedule and Tickets

Croatian and Slovenian Railways don’t make this easy: tickets can only be purchased in-person, from a person, with only one window at Zagreb’s Glavni Kolodvor station designated for selling international tickets. Three trains a day—at 7am, 12:50pm, and 7:40pm—ply this route. Two days before departure I had no problem purchasing a one-way ticket for €9, which is the cheapest rate possible and about €1 more than the cheapest bus tickets. Tickets are more expensive on the day of departure, so try and buy in advance if you can.

Rail ticket from Zagreb to Ljubljana.

Your ticket, just €9 purchased in advance, will be valid for any journey over three days.

Your ticket is valid for three days from the date of your journey, allowing you to buy in advance but still have flexibility (I purchased my ticket on January 21, told staff I planned to travel in two days’ time, and received a ticket valid from January 23 to 26). You can then travel by any train on those three days, with train staff marking your ticket after you board so tickets cannot be reused.

Station and Departure

The thrice-daily service departs from Zagreb Glavni Kolodvor, arriving into Ljubljana Station two and a quarter hours later, if the service runs to schedule.

My train, the 12:50 service, arrived on time and pulled up to platform one about 20 minutes before our scheduled departure. The departure board was showing a 45-minute delay, but with the train sitting there I hoped this was in error (it wasn’t).

Train waiting in Zagreb.

Despite our train arriving 20 minutes early, we ended up departing Zagreb 40 minutes late.

Five coaches make this journey: one Slovenian first class carriage with open seating in a 2-1 configuration, then two each of Croatian and Slovenian second class carriages with individual six-seat compartments. Seats are not reserved.

Note that the Croatian and Slovenian carriages have their seating compartments on opposite sides of the train: Croatian seats on the left and Slovenian ones on the right. For best views of the River Sava, try and grab a window seat in a Croatian carriage. This is what I did, settling into seat 65 mid-way down the first Croatian car.

We got underway 40 minutes delayed and ran non-stop to the Slovenian border.

On Board

The second class compartments are comfortable, with armrests, a small table by the window, two power sockets, and adjustable temperature. A washroom is located at each end of the carriage. There is no WiFi available, though cell service is available along the entire route.

Second class seating compartment.

I had this second class compartment aboard one of the Croatian coaches to myself until the border.

No restaurant car is attached to this service, nor is there a trolley or any other opportunity to buy food en route. There are plentiful food and drink options in and around Zagreb’s main station, and you are welcome to bring food and drink, including alcohol, on board. Each compartment has a small garbage bin.

Crossing the “Border”

Croatia and Slovenia are members both of the European Union and the Schengen Area, so it was with some surprise that I saw border guards climb aboard at Dobova station, immediately after we crossed into Slovenia. The Slovenian government has implemented mandatory, temporary measures at its borders with Croatia and Hungary, for all rail and road travellers. These will be in effect until at least June 2025—check ahead to make sure you have the appropriate identification.

Station sign at Dobova.

Unusual for travel within the Schengen Area, Slovenian police board the train to check passports at Dobova.

I had my passport with me anyway, since I would be spending the next three days in beautiful Slovenia. An agent verified my passport and moved along; in all, we spent around ten minutes stopped at Dobova while identification was checked and two very good boys sniffed their way down the train. We got underway again, less four passengers who were escorted down the platform.

Into Slovenia

From Dobova the train becomes a regular, non-express service; we made about a half-dozen stops before Ljubljana. Every second class compartment had at least two people in it by the time we reached our destination: it seems this train is much more popular as a domestic service.

Tickets are checked for a second time after crossing the border, so keep them handy even after the initial ticket inspection by Croatian staff.

View of the River Sava.

For best views following the River Sava, sit in a Croatian compartment when travelling north and a Slovenian one southbound.

We followed the River Sava for most of our time in Slovenia, with the river being to our left for about three-quarters of that time. The views were nice if not spectacular, and the time flew by with no WiFi needed.

We pulled into Ljubljana at 4:10pm, having kept our initial 40-minute delay.

Final Thoughts

In my case, the bus would have been both cheaper and faster—though that’s not to say it’s the better choice. Traffic and road closures can easily cause delays greater than the 40 minutes I experienced, and buying tickets in advance means the train can be cheaper than busses at the busiest times.

Regardless, for a few euros and a few minutes either way, I would happily choose the train again.