
Semarang and Yogyakarta are only about 170km apart by rail via Solo, but there is no fast direct train between them. You have two realistic options, and which one suits you depends on whether you would rather sit on one train or save several hours.
The direct train: the Joglosemarkerto is KAI's Central Java loop service, named after Jogja, Solo, Semarang and Purwokerto. Its morning departure from Semarang Tawang (calling at Semarang Poncol) heads west along the north coast through Pekalongan and Tegal, climbs inland through Prupuk and Bumiayu to Purwokerto, then runs east via Kroya, Kebumen, Kutoarjo and Wates to Yogyakarta Tugu and Lempuyangan in the afternoon. That is around seven hours, with eksekutif and new-generation ekonomi carriages. It is a good way to see a large slice of Central Java in one go, but slow if you simply want to reach Yogyakarta.
The quicker way, via Solo: take the Banyubiru from Semarang Tawang inland to Solo Balapan, about two hours, then the frequent KRL commuter line from Solo to Yogyakarta, about an hour. Allowing for the change, door to door is roughly three and a half to four hours. The commuter line is not booked through the long-distance system, so you buy that leg at the station or through the commuter app.
Which to choose: if you are short on time, change at Solo. If you have the day and want a long, comfortable daylight ride with no connections, the Joglosemarkerto is pleasant, and the hill section around Bumiayu is the scenic highlight. The service is one of KAI's busiest regional trains, so book the direct seats early, especially around long weekends.
Check current departures and fares in Access by KAI. For the opposite direction, see Yogyakarta to Semarang; for the two legs of the faster route, see Semarang to Solo and Solo to Yogyakarta.
Journey times vary by service and season. Confirm against current schedules before booking.
Categories
Last updated 10 Oct 2026
© Indonesia By Train 2026. All rights reserved