Surabaya vs Yogyakarta: Which Java City Should You Visit?

These two Javanese cities pull in almost opposite directions. Surabaya is Indonesia's gritty, prosperous second city, a port and business hub where the appeal is energy, food, and a window into how modern Java actually lives and works. Yogyakarta (everyone calls it Jogja) is the cultural heart of the island: a sultanate city wrapped around batik, gamelan, student cafes, and two of the greatest temple complexes on earth.
For most first-time visitors to Java, Yogyakarta is the more obvious holiday. It is built for travelers, walkable in its core, and surrounded by world-class sights. Surabaya rewards a different kind of traveler: the curious, the food-driven, the person passing through on the way to Mount Bromo or Ijen, or anyone who wants a real Indonesian city rather than a tourist set piece.
The good news is they pair beautifully. A fast train links them in around four to five hours, so the honest question is often not which one but in what order. Still, if you only have time for one, the differences below will decide it.
Surabaya vs Yogyakarta
Surabaya is best for
Travelers who want a real, untouristed Indonesian metropolis, fantastic local food, and a launchpad for Bromo and Ijen.
Yogyakarta is best for
First-time Java visitors and culture lovers who want temples, crafts, walkability, and great value in one easy package.
The Verdict
If you have to pick one, choose Yogyakarta: it offers more to see, is easier and cheaper to enjoy, and delivers Borobudur and Prambanan in a single base. Pick Surabaya if your trip is built around Mount Bromo or Ijen, you are flying through Juanda, or you specifically want a working city and its food rather than a polished cultural showcase.
Plan Your Trip
Explore Surabaya
Better still, link them by train and do both, starting with Surabaya's energy and ending in Jogja's temples. Either way, decide your priorities first, then build the route.
