The distance between Surabaya and Jakarta is around 704km (437 miles) and the quickest way to get there is to fly and then take the bus which takes around 2h 35m.
We've found 6 different ways to get from Surabaya to Jakarta by plane, 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 Jakarta → Surabaya if you're planning a return trip.
Fly from Juanda International (SUB) to Jakarta Halim Perdana Kusuma (HLP).
Batik Air
+ 1 others2 similiar routes
We’ve grouped similar routes together, click the arrows to see the other options.
Take the train to Jakarta Gambir.
Kereta API
Take the bus to Jakarta Pinang Ranti Bus Station.
Kramat Djati
There are several options for getting from Surabaya to Jakarta by plane, bus, train and car. The cheapest option is to take the train which costs around IDR 269,605 ($18) and will take around 8h 10m. If you need to get there more quickly, you can fly and then take the bus and arrive in approximately 2h 35m, though it is a bit more costly at approximately IDR 808,810 ($54).
The distance between Surabaya and Jakarta is around 704km (437 miles). In a direct line (as the crow flies), the distance is 663km (412 miles)
It takes around 2h 35m to get from Surabaya and Jakarta by plane and bus. If you are travelling by car it will take around 8h 35m to drive there.
The quickest way to get from Surabaya to Jakarta is to fly and then take the bus which takes around 2h 35m and will set you back approx IDR 808,810 ($54).
The cheapest way to travel between Surabaya and Jakarta, if you exclude driving, is to take the train which will typically cost around IDR 269,605 ($18) for a standard one-way ticket.
Yes there is a train service that runs between Surabaya and Jakarta. It typically takes around 8h 10m and departs 4 times a day.
Yes there is a direct train service that runs between Surabaya and Jakarta with no changeovers required. The train runs 4 times a day and takes 8h 10m.
Kereta API run train services between Surabaya and Jakarta. Trains depart 4 times a day and will take around 8h 10m, however, this may vary depending on the particular service and whether it runs express or stops all stations.
Yes there is a bus that runs regularly from Surabaya and Jakarta. It typically takes around 18h 60m and departs once daily.
There are no direct bus services that runs from Surabaya to Jakarta. However, you can instead can take several connecting buses with changeovers in Surabaya Bungurasih Station and Jakarta Pinang Ranti Bus Station. These services run once daily and will take a minimum of 18h 60m.
Kramat Djati run regular bus services between Surabaya and Jakarta. Buses run once daily and take around 18h 60m on average but will vary depending on you book with.
Yes you can fly from Surabaya and Jakarta. Flights depart from Juanda International (SUB) and arrive at Jakarta Halim Perdana Kusuma (HLP). The flight takes around 1h 20m.
Yes there is a direct flight between Surabaya and Jakarta with no stop-overs required. Flights typically take around 1h 20m.
Batik Air and Citilink Indonesia fly between Surabaya and Jakarta. Flights depart from Juanda International (SUB) and and arrive into Jakarta Halim Perdana Kusuma (HLP). These flights usually take around 1h 20m.
The flight from Surabaya to Jakarta typically takes around 1h 20m. Flights depart from Juanda International (SUB) and and arrive into Jakarta Halim Perdana Kusuma (HLP).
The closest major airport to Jakarta is Halim Perdanakusuma Airport (HLP) (HLP) which is approximately 12km (8 miles) from Jakarta. Soekarno–Hatta International Airport (CGK) (CGK) and Husein Sastranegara International Airport (BDO) (BDO) are also nearby and might be a better alternative airport depending on where you are flying from.
Yes it is possible to drive from Surabaya and Jakarta. The distance is around 779km (484 miles) by road and it will take around 8h 35m in normal traffic conditons.
If you don't have a car, the easiest way to get from Surabaya to Jakarta is to fly and then take the bus which takes, on average, 2h 35m and will usually cost around IDR 808,810 ($54).
Transport option | Duration | Cost | Frequency | Distance |
---|---|---|---|---|
Fly + 2 similar | 2h 40m | IDR 928,635($62) | hourly | 704km (437 miles) |
Plane and Bus | 2h 35m | IDR 808,810($54) | hourly | 742km (461 miles) |
Fly to Husein Sastranegara (BDO), Bus | 4h 45m | IDR 1,557,705($105) | hourly | 774km (481 miles) |
Train | 8h 10m | IDR 269,605($18) | every 3 hours | 718km (446 miles) |
Bus | 18h 60m | IDR 389,425($26) | once daily | 800km (497 miles) |
Drive | 8h 35m | IDR 659,030($44) | on demand | 779km (484 miles) |
Lion Mentari Airlines
Citilink Indonesia
Batik Air
Garuda Indonesia
Indonesia AirAsia
Citi Trans
Kramat Djati
Kereta API
The following major airports near Jakarta offer regular flights to various popular destinations within Indonesia and internationally.