Skip to Content

How to Travel from Jakarta to Yogyakarta by Train

Taking the train from Jakarta to Yogyakarta is pretty straightforward. The train is the most convenient and affordable way to travel between these two cities. Indonesia has an excellent rail system. The trains are comfortable, reliable, punctual, and easy to use.

There are 19 trains that travel between Jakarta and Yogyakarta every day. The ride takes around 8-9 hours depending on the train you choose. There are three different classes available (executive, business, and economy). Ticket prices start at 74,000 IDR ($5) for economy class and go as high as 1,000,000 IDR ($65) for executive class when demand is high.

Most economy class trains depart from Pasar Senen Station in Jakarta (PSE). Most executive class trains depart from Gambir Station (GMR). Of course, you can also travel in the opposite direction. If you’re traveling from Yogyakarta, you’ll depart from Tugu station (YK) or Lempuyangan station (LPN).

In this guide, I will explain how to buy tickets, train schedules, ticket costs, train classes, station locations, and more. I’ll also outline some alternative transportation options between Jakarta and Yogyakarta including flying and taking the bus.

An Indonesian train car
An executive class train car
Disclaimer: This post may contain affiliate links. Please see my disclosure policy for details.

Table of Contents

Where to Buy Train Tickets

The easiest and most convenient place to buy train tickets from Jakarta to Yogyakarta is online. It is also possible to book tickets in person at the station in Jakarta or Yogyakarta. You can also book online and pay at a convenience store such as Alphamart or Indomaret.

The best way to book tickets online is through The site is available in English. You can pay with foreign credit cards. There is a booking fee of $2 or $3. You can book both one-way tickets and round-trip tickets. Simply put in your departure date and you’ll see a range of trains to choose from.

The booking process is pretty straightforward on the app. You can choose your seat when booking. There will be a map of the train car with the seats available. I recommend booking a window seat. This is a pretty scenic trip.

After booking, you’ll receive an email with your ticket confirmation. When you go to the station, you’ll see a machine where you can scan the confirmation or enter the confirmation code to print your boarding pass.

The official Indonesian train booking site is called I tried booking here but was unable to because the system wouldn’t accept my passport number as an ID. I think it needs an Indonesian ID so I couldn’t use it.

When to Book Tickets

The trains fill up so it is important to book your ticket in advance. Particularly if you’re planning to travel during a weekend or on public holidays. Ideally, you should try to book at least 4-5 days in advance to get the best deals. Train ticket sales in Indonesia open about 6 weeks in advance.

If you wait until the last minute or even if you try to book a day or two in advance, many of the trains will be fully booked. Your desired class or departure time may be sold out. Prices also increase substantially. Book early to get the lowest price.

On one occasion, I tried to book a train last minute. Most of the executive class seats were sold out. The ones that were available cost 1 million IDR. If I had booked a couple of days earlier, these seats cost around 300,000. Luckily, there were some economy-class seats available.

Looking out of an Indonesian train car on the way to Jakarta

Train Ticket Prices

Economy class seats start at IDR 74,000 (around $4.80). They can go as high as IDR 300,000 (around $19.50) if you book at the last minute.

Executive class seats start at IDR 280,000 (around $18.20) but go up past IDR 1,000,000 (around $65) when demand is high.

These are prices for one-way tickets. Ticket prices vary based on when you book, the class you book, your departure date, the time of day your train is departing, etc. You can find cheap tickets if you book in advance.

Train Classes: Economy, Business, or Executive Class

There are three classes on Indonesian trains: Eksekutif, Bisnis, and Ekonomi (executive, business, and economy). There are no sleeper trains.

Executive class is the class I recommend. It’s comfortable and relatively affordable. There are two seats on either side of the aisle. The seats recline. This allows you to get some sleep. There is plenty of legroom. Even for tall passengers. Each seat has a little table that folds out. There are also outlets for charging your devices. You could easily work on your laptop in executive. There is also air conditioning.

Economy class seats are cheaper and less comfortable. They feature bench-style seats that are closer together. In economy class, each bench seats three passengers. The benches are facing one another. This means you have to sit facing other passengers. It’s not a big deal but some people don’t like this seating arrangement. Legroom is also limited.

Business class is a bit more comfortable. There are bench seats that seat two passengers. This gives you a bit more room. Economy and business seats do not recline. There is air conditioning in both classes.

There is also an executive luxury class that is available on only a handful of trains. This class is similar to business class on an airplane. There is one seat on either side of the aisle. The seats do not lie completely flat but close. Each seat also has a TV screen for entertainment. This is the closest thing to a sleeper train. This class is only available a few days per week. It’s the most expensive but most comfortable option.

Usually, the different classes are on completely different trains. There may be an executive train and an economy train. Sometimes, the same train may have economy and business class. Usually, the three classes are not available on one train.

Personally, I recommend executive class. It’s far more comfortable than economy class and not that much more expensive. I avoid economy class because I don’t like sitting facing other people. The seats are also pretty uncomfortable.

Yogyakarta train station

Train Stations

Jakarta and Yogyakarta both have multiple train stations. It’s important to check the station where you depart from and arrive at before you book a ticket. Some of the stations are located far outside of town away from tourist zones. Try to book a train that departs and arrives as close as possible to your accommodation.

In Jakarta, Pasar Senen station (PSE) is one of the most convenient options. It’s centrally located and relatively easy to reach from all of the tourist zones. This is one of the main stations. Many economy class trains depart and arrive here.

Gambir station (GMR) is also pretty convenient. It’s located in Central Jakarta. Most of the executive trains use this station.

In Yogyakarta, Tugu Train station (YK) is often the most convenient. This station is located near Malioboro Street, which is the main tourist area of the city. Most travellers stay around here.

Lempuyangan train station (LPN) is also pretty convenient. This is a smaller train station that is easy to navigate. It’s located about 2 km from Tugu. It’s also relatively centrally located.

There is also a third Yogyakarta station, called Maguwo, which is located near the old Yogyakarta airport. Yogyakarta is a much smaller city so it doesn’t matter quite as much which station you use.

Jakarta, Indonesia
Jakarta, Indonesia

Jakarta to Yogyakarta Train Schedule

There are 19 trains per day traveling from Jakarta to Yogyakarta. Trains depart regularly throughout the day from 5:45 am until around 11:00 pm.

The schedule changes frequently and there are lots of different trains. Check the schedule on a booking app like for the most up-to-date information.

The Best Time to Travel: Night Trains Vs Day Trains

You can travel by day or night. I recommend traveling by day. The main reason is the scenery. This is a scenic journey. You’ll pass by rice paddies, small villages, volcanoes, and hilly countryside. You’ll also get a good view of both Jakarta and Yogyakarta as you travel through the cities.

The second reason is that there isn’t really a true night train. One option arrives in Yogyakarta at around 3:00 am. There is also another train that arrives at around 7:00 am. After you arrive, you’ll have to wait several hours to check into your hotel. At most hotels, check-in is at 2:00 pm. If the room is available, they’ll usually let you check in earlier. If you travel by day, you can check right in when you arrive. The only benefit of traveling by night is that you will save on a night of accommodation.

There also isn’t a sleeper train. All of the trains have regular seats. The executive class seats do recline so you can lay back and get some sleep. They also hand out blankets. If you decide to travel by night, I highly recommend executive class.

How to Get to and From the Train Station

The best way to get to and from the central train station is to use Grab. This is a ride-share app that is popular in Indonesia and all over Southeast Asia.

Rides are surprisingly cheap in Indonesia. The trip to and from the train station should only cost a few dollars. For example, the 10 minute ride from the station in Yogyakarta to my hotel only cost the equivalent of 1 Euro. I was shocked at how cheap it was.

Of course, you could also take a taxi or a motorcycle taxi from the street. You will see drivers waiting outside when you leave the station. I recommend Grab because you won’t have to negotiate the rate. You’re less likely to get overcharged. Taxi drivers in Indonesia like to overcharge tourists.

In Yogyakarta, you may be able to walk between your hotel and Tugu Station, depending on where you’re staying. In Jakarta, the areas where visitors stay are further from the stations.

Public transport isn’t very good in Indonesia. There are buses available but they are kind of confusing. I usually don’t bother with them.

When to Arrive at the Station

You should try to arrive at the station 30-45 minutes before your train’s departure time. This gives you time to print your boarding pass and find your platform.

The stations are modern. There is a kiosk where you will print your boarding pass by scanning the e-ticket on your phone. There are shops where you can buy snacks and drinks. You’ll also find plenty of seating as well as restrooms.

How to Check-in When You Arrive at the Station

Before you’re allowed to board the train, you’ll have to check in and print your boarding pass. You’ll need this to board the train.

When you walk into the station, you’ll see some kiosks or computers where you can print your boarding pass. To do this, simply open the email with your ticket and scan the barcode. The boarding pass will print automatically. It looks like a receipt.

In some cases, you may need to manually enter your ticket number if there is no scanner on the machine or if it’s not working. You’ll find the ticket number in the email. There is an English option at the check-in kiosk. You can also check in in person at the check-in counter.

Yogyakarta, Indonesia
Malioboro Street, Yogyakarta, Indonesia

Boarding the Train

After printing your boarding pass, you’ll pass through a ticketing gate. Here, an attendant will check your boarding pass. They may also ask to see your ID or passport. Sometimes they ask for ID and sometimes they don’t. You’ll then pass through a turnstile. From there, you can proceed to your platform to find your train or go to the waiting area.

Your boarding pass will tell your train car number and your seat number. The train cars and seats are clearly numbered. There will also be announcements when your train is arriving. Try to board the correct car so you don’t have to walk through the train with your luggage.

If you need help finding your train, there are always attendants around that you can ask. You will have plenty of time to find and board your train as long as you arrive at the station early. They usually stop for quite a bit of time.

At some of the stations, you have to walk across the tracks to reach your train or get to the exit. This is the case at Tugu Station in Yogyakarta. You may have to wait a few minutes for a train to move.


There is no luggage car on the Jakarta to Yogyakarta trains. You are responsible for handling your own luggage. If someone offers to assist you with your luggage, be cautious. They could be trying to scam you.

If you’re traveling in executive class or business class, there will be plenty of room for your luggage. There are large overhead luggage racks with plenty of room. There is also space to store luggage near your feet in executive class.

If you’re traveling in economy class, luggage space is limited. The racks are the same size but more passengers are crammed into the car so the space gets taken up. If you’re traveling in economy class, try to arrive early and board when the train arrives so you can be sure to find space for your luggage in the overhead bins.

If your suitcase is too large or too heavy to place on the overhead racks, you can find space in the back of most train cars.

There is a limit of 20kg of luggage for each passenger. This is rarely checked. In fact, my luggage has never been weighed. If you’re traveling with a particularly large or heavy-looking piece of luggage, it could be weighed.

If you arrive at the station early, there are luggage lockers where you can store your luggage for a small fee. This is a good option if you want to go exploring or grab a bite to eat before or after you arrive.

Food on the Train

During the trip, some attendants will pass by with a food cart several times. There are hot drinks, snacks (potato chips), sodas, and pre-packaged meals available. There is also a dedicated dining car where you can buy hot meals, drinks, snacks, noodles, etc. A meal costs around $2-$5, depending on what you order.

If you plan to eat on the train, it’s best to get your meal early during the journey. The best meals sell out quickly. They also become less appetizing if they’ve been sitting around for a while.

There are also restaurants and convenience stores at the stations.

If you’re on a tight budget, I recommend you bring your own snacks. Food on the trains and at the stations costs more than what you would pay in the city.

The food on the train isn’t great but it’s available if you’re hungry. I recommend just bringing some snacks for the train and eating before and after your journey. The train food isn’t great.

The Bathroom on the Train

Every car has at least one bathroom. Most of the cars have a bathroom at either end. Most cars have Western-style toilets. Some of the older cars have squat toilets.

For a train, the toilets are reasonably clean and well-stocked. Most even have toilet paper and soap.

The Train Journey

During the journey, the train will make several stops. These stops usually last 5-10 minutes. This is a good time to get up and stretch your legs. You can take a little walk on the platform. Stay nearby so the train doesn’t leave without you. Someone will announce how long the stop is and when the train is about to depart.

Is it Safe to Travel by Train in Indonesia

Yes. The trains in Indonesia are perfectly safe. They are safe for tourists. The trains and stations are modern. The stations have great security. The trains are probably the safest way to travel around Java.

Of course, you will want to take some normal precautions. If you get up to go to the bathroom or go to the dining car, take your valuables with you, just in case. It’s fine to leave your luggage by your seat. Theft is rare but it can happen anywhere.

If someone starts a conversation with you, feel free to chat. Most likely, they are just trying to pass some time. Indonesians are friendly. You’re unlikely to meet a scammer or criminal on the train.

Of course, the trains aren’t perfectly safe. Accidents do happen. A couple of days before I traveled from Yogyakarta to Jakarta, there was an accident. A train derailed. One person died and several more were injured. The trains were canceled for a day or two after the accident. A guy I met at the hostel I was staying in had to fly to his next destination because his train was canceled due to the accident. You can read about the accident here. This is a rare occurrence but it did sketch me out a bit because I was riding the train a few days later.

Jakarta and Yogyakarta are both relatively safe cities. There is a lot of petty crime. You have to take some precautions to avoid theft or getting scammed on your way to and from the station. Never give your luggage to anyone. Always handle it yourself. Only take an official taxi or Grab. Don’t accept a ride from a random person. Keep your valuables, such as your phone, wallet, and passport in zippered pockets to protect them from pickpockets. Violent crime is rare but petty theft is common in these cities.

Arriving in Yogyakarta Central Train Station

There are three train stations in Yogyakarta (Maguwo, Lempuyangan and Tugu). If you arrive at Tugu station in Yogyakarta, you are near the main touristy area of Malioboro Street. Lempuyangan station is located about 2 km away. Both are convenient options. There is also a fourth station, called Wates train station, which is located on the edge of the city. Most trains stop at a couple of the stations. Make sure you get off at the right stop.

From the station, you can take a Grab or Gojek to your hotel. You could also take a city bus or take a taxi or motorcycle taxi from the street. If you take a taxi from the street, make sure the driver uses the meter. If there is no meter, negotiate the fare before you accept the ride.

Zac at Borobudur Temple
At Borobudur Temple near Yogyakarta

Arriving in Jakarta

If you arrive at Pasar Senen or Gambir station in Jakarta, you will be near the city center. These are both large stations. Pasar Senen is located in a particularly busy area.

If you plan to call a Grab, you will have to walk to a designated pickup area about a block away from the station. You should double-check to confirm that you’re in the right spot. You will also find taxis and motorcycle taxis waiting for passengers. There is a bus service as well.

Traffic in Jakarta is bad. If you’re arriving during peak commuter times, you may experience a traffic jam. It can take some time to reach your hotel. Plan ahead for this.

Traveling from the Airport to the Train Station

Many visitors choose to skip Jakarta entirely and head straight to Yogyakarta. Flying into Jakarta and then taking the train can be cheaper than flying to Yogyakarta.

If you’re flying in, you can travel directly from the airport to the train station. From Jakarta Airport, you can take the Damri bus directly to Gambir station. Be sure to arrive at least 30 minutes in advance to get your ticket and find your train.

If you’re train leaves from Pasar Senen station, you can take a bus from the airport to the Senen district. From there, you will have to take a taxi or Grab to the train station. There is no direct bus. Of course, you could also take a taxi or Grab directly from the airport to the station.

Flying from Jakarta to Yogyakarta

If you’re short on time, consider flying from Jakarta to Yogyakarta. There are lots of cheap flights between these cities. You can often find flight tickets for less than $50. It’s easy to find cheap flights from Yogyakarta to Jakarta if you book at least a couple of weeks in advance. There are almost 50 Yogyakarta to Jakarta flights per day. A number of airlines offer this route. It’s easy to find a direct flight.

With such cheap airfare, it may make more sense to fly if you’re short on time. Before you book a train, it’s a good idea to check the price of a flight ticket to compare prices, even if you don’t really plan to fly. Sometimes it’s as cheap to fly as it is to travel in executive class. If you book flights in advance, you can get a good deal.

Taking the Bus from Jakarta to Yogyakarta

It is also possible to take the bus between Jakarta and Yogyakarta. There are many bus companies operating this route every day. A ticket costs around $11-$15.

I have never made this trip by bus. I love train travel so I always take the train. If you prefer bus travel for some reason, it is an option.

I would avoid the bus for this trip because the train is so comfortable and convenient.

My Experience

I’ve made the train trip between Jakarta and Yogyakarta on several occasions. It’s always a smooth ride. The trains and stations are modern and clean. The conductors and everyone working in the station are helpful and professional. Most speak at least basic English. The stations are also conveniently located. This is an easy trip to make.

I have made this trip in both economy and executive class. I always ride executive class but last time I had to take economy because I booked too late. Even though I booked 2 days in advance, most of the executive class seats were sold out. The ones that were available were very expensive (around 1 million IDR). The trip in economy was fine but I found the seating to be pretty uncomfortable. I also found it kind of awkward having to sit facing other passengers. The other passengers were very friendly though. I will only make this trip in executive class going forward. I will also book as early as possible.

Borobudur temple, Indonesia
Borobudur Temple

Final Thoughts

It’s easy to travel between Jakarta and Yogyakarta by train. This is a direct route. You don’t need to make any transfers. There are over a dozen trains traveling both ways every day. The ride takes around 8.5 hours on average. An executive class ticket will cost you around $25-$30. It’s important to book this trip a few days in advance. Trains do fill up. You can easily book online on and pay with a credit card.

Have you taken the train between Jakarta and Yogyakarta? Share your experience in the comments below!

Pin it for later!

More from Where The Road Forks

Sharing is caring!

Disclosure: Please note that some of the links in this post are affiliate links, including links from the Amazon Serivices LLC Associates Program. At no additional cost to you, I earn a commission if you make a purchase through these links. I only recommend products and services that I use and know. Thank you for reading!