Croatia's two most-visited cities couldn't be more different — Dubrovnik is a walled coastal fortress-city made famous partly by Game of Thrones, while Zagreb is the country's understated, workaday inland capital.
Dubrovnik's Dubrovnik City Walls encircle the entire Old Town (Stari Grad), and walking the full loop with Adriatic views is the single best thing to do in Croatia's coastal region. Zagreb's Gradec (Upper Town) and Kaptol are pleasant but modest by comparison — a relaxed European capital rather than a fortified spectacle.
Zagreb has the more interesting museum scene for its size, anchored by the genuinely inventive Museum of Broken Relationships, alongside St. Mark's Church's colorful tiled roof. Dubrovnik's cultural draw is more about atmosphere than institutions — the Dubrovnik Summer Festival aside, it's a city built for walking and photographing rather than museum-hopping.
Dubrovnik's coastal setting is the whole appeal — the Cable Car to Mount Srđ gives a panoramic view over the walls and sea, and nearby islands are an easy boat trip away. Zagreb is entirely inland, with no beach or coastal access of its own.
Dubrovnik is one of Croatia's most expensive and crowded destinations, especially when cruise ships dock. Zagreb is noticeably cheaper, far less touristy, and gives a more authentic sense of everyday Croatian life away from the coast.
Choose Dubrovnik for the walled old town, Adriatic views, and Croatia's single most iconic coastal experience. Choose Zagreb for a cheaper, quieter capital city with better museums and a more local feel. They're about four hours apart by road, so most travelers pick one as the anchor for a coastal trip or a capital-city stopover rather than combining both.