Planning a balkan itinerary 2 weeks long? This coastal-meets-mountains loop threads together Croatia’s polished Adriatic, Bosnia and Herzegovina’s Ottoman charm, Montenegro’s fjord-like bays, Albania’s wild Riviera and North Macedonia’s lake country. It’s compact enough for buses, richer with a rental car, and rewarding either way. Expect sea days, winding alpine passes, and one or two ferries if you want them. Connectivity varies: coastal corridors are strong, but inland national parks and ferry crossings can be patchy—so a smart eSIM plan and a quick APN check at each border will keep you online.
This guide gives you a day-by-day route with realistic travel times, the best side trips, and connectivity tactics that work in the Western Balkans (where “EU roaming” often doesn’t). We’ll show you when to stay coastal, when to go inland, bus vs car trade‑offs, and how to choose between a regional eSIM and stacking country eSIMs. Finish in Skopje (open-jaw) or loop back if you must—either way, you’ll cover the highlights without rushing.
Who this route suits (and when to go)
- Best for: First-time visitors who want both Adriatic coast and inland culture, photographers, food lovers.
- Trip style: 2 weeks, 1–3 nights per stop, mix of city and nature.
- Transport: Works by bus; a car unlocks national parks and short ferries (Bay of Kotor shuttle, Komani Lake).
- When: May–June and September–October for lighter crowds and steady ferry timetables. July–August is hot and busy; winter reduces services in mountain areas.
The 2-week Balkan itinerary (open-jaw recommended)
Open-jaw (start in Croatia, end in North Macedonia) saves backtracking. If you need a loop, see the variant at the end of this section.
Day 1–2: Dubrovnik, Croatia (arrival)
- Why: Walk the city walls, Old Town, Elaphiti Islands ferry day.
- Transport in: Fly to Dubrovnik; 25–40 minutes to town.
- Ferry option: Half-day to Lopud or Koločep. Connectivity at sea is variable; download offline maps.
- Connectivity note: Croatia is EU, but neighbouring legs aren’t—plan your eSIM accordingly (see below).
Day 3: Dubrovnik → Mostar, Bosnia and Herzegovina
- Travel: 3–4 hours by bus; 2.5–3.5 hours driving (border timing varies).
- Do: Old Bridge (Stari Most), Kujundžiluk bazaar at dusk.
- Coverage: Good in town; dips in the mountains en route.
Day 4–5: Mostar → Sarajevo
- Travel: 2–2.5 hours by train (scenic Neretva valley) or 2 hours by road.
- Do: Baščaršija, Latin Bridge, Tunnel of Hope.
- Inland vs coastal: This is your richest inland cultural stop—worth two nights.
Day 6: Sarajevo → Kotor, Montenegro
- Travel: 5.5–7.5 hours by bus; 5–6.5 hours by car via Trebinje. Border can add 30–90 minutes in season.
- Do: Sunset from Kotor Fortress; Perast in the evening.
- Ferry: If driving the bay, use the short Kotor Bay ferry (Lepetane–Kamenari) to save 30–45 minutes.
- Coverage: Strong around the bay; occasional gaps on mountain approach.
Day 7: Kotor/Perast day
- Pick one: Boat to Our Lady of the Rocks; drive to Lovćen National Park for switchback views.
- Connectivity: Fine on the coast; Lovćen viewpoints can be spotty.
Day 8: Kotor → Budva → Lake Skadar (overnight near Virpazar) or Ulcinj
- Travel: 1 hour to Budva; 1.5–2 hours to Virpazar; 2 hours to Ulcinj.
- Do: Old Budva quick stop; Lake Skadar boat tour for birds and vineyards; or beach time in Ulcinj.
- Inland vs coastal: Skadar is inland nature; Ulcinj keeps you coastal.
Day 9: Montenegro → Shkodër → Tirana, Albania
- Travel: 3–5 hours total (border varies); roads are improving but watch speeds and signage.
- Do: Rozafa Castle in Shkodër (lunch), then on to Tirana’s cafes and Blloku.
- Coverage: Solid on the SH1 corridor; occasional drops near the border.
Day 10: Tirana → Berat or Gjirokastër (UNESCO)
- Travel: 2–3 hours to Berat; 3.5–4 hours to Gjirokastër.
- Pick one: Berat for vineyards and Ottoman quarters; Gjirokastër for stone-town drama and Blue Eye access.
Day 11: Riviera or Komani ferry (choose coast or inland)
- Coastal day: From Gjirokastër, continue to the Albanian Riviera (Himarë/Dhermi). Beaches and cliff roads, but mobile coverage is mostly coastal.
- Inland ferry: From Shkodër/Koman, the Lake Komani ferry is a standout day trip. Signal is minimal on the lake—download everything first.
Day 12: Albania → Ohrid, North Macedonia
- Travel: From Tirana/Berat via Elbasan: 3.5–5 hours depending on border. From the Riviera, allow 6–7.5 hours.
- Do: Lake Ohrid, old town, Saint Naum monastery (border-hop is possible by boat; carry ID).
- Coverage: Good in towns, weaker on lakeside drives.
Day 13–14: Ohrid → Skopje
- Travel: 3–3.5 hours by bus or car via Kičevo.
- Do: Old Bazaar, Kale Fortress, Matka Canyon (half-day trip; patchy coverage inside the gorge).
- Fly out from Skopje.
Need a closed loop?
- Option A (fast): From Skopje, overnight bus/train back to Sarajevo (8–10 hours), then bus to Dubrovnik (4–6 hours). Adds one long transit day.
- Option B (drive): Skopje → Sarajevo (7–9 hours), Sarajevo → Dubrovnik (4–6 hours). One extra night en route recommended.
Getting around: buses vs car, borders and ferries
- Buses: Reliable, cheap, and frequent on main corridors (Dubrovnik–Mostar–Sarajevo; Kotor–Shkodër–Tirana; Tirana–Ohrid–Skopje). Buy tickets at stations or reputable sites; carry small cash for baggage fees.
- Car rental: More freedom for national parks (Lovćen, Durmitor if you extend, Lake Skadar) and the Komani or Kotor ferries. Confirm cross-border permissions and insurance (“Green Card”) with your rental company before pickup.
- Driving style: Coastal E-roads are straightforward; inland passes are narrow and slow. Plan daylight drives for scenery and safety.
- Ferries you’ll actually use:
- Bay of Kotor shuttle (Lepetane–Kamenari): 10 minutes, frequent.
- Komani (Albania): Pre-book in high season; very limited signal on board.
- Adriatic island day trips (Dubrovnik to Elaphiti; optional Split if you add it): Good service, variable signal offshore.
Connectivity: the smart way to stay online across five countries
EU-style roaming rarely covers this whole route. Croatia is EU; Bosnia and Herzegovina, Montenegro, Albania and North Macedonia are not in the EU/EEA. That’s why you should plan your connectivity up front.
Regional eSIM vs country eSIMs
- Regional eSIM (ideal if available for “Balkans”): One plan, one APN, no SIM swaps. Check coverage includes all five: Croatia, Bosnia and Herzegovina, Montenegro, Albania, North Macedonia.
- EU-only regional eSIMs (e.g., Esim Western Europe) typically exclude most of this route. They’re great if you’re adding Italy or Spain, but you’ll still need coverage for the non‑EU legs.
- Country eSIM stack: Buy smaller data packs per country and activate as you cross borders. Slightly more admin, but often the most cost‑efficient if you use lots of data in one place (e.g., week in Albania).
Before you decide, check each country’s page under Destinations to confirm networks and 4G/5G availability.
APN checks at every border (2-minute routine)
- Before crossing: Turn off data roaming on your eSIM to avoid out‑of‑bundle usage.
- After crossing: 1) Toggle aeroplane mode on/off. 2) Manually select a local partner network if auto-connect fails. 3) Confirm APN matches the eSIM’s instructions. If blank/wrong, enter it manually. 4) Turn data roaming back on for that eSIM profile. 5) If data is slow, try 4G/LTE only (some rural towers are 4G-only).
- Keep SMS from your eSIM provider handy; they often list the correct APN and preferred networks.
Coastal vs inland coverage (what to expect)
- Coastal corridors: Dubrovnik–Herceg Novi–Kotor–Budva and the Albanian SH8 (Riviera) have solid coverage, with brief dead spots through tunnels and cliffs.
- Inland/mountain parks: Expect patchy or no service on sections near Lovćen viewpoints, Durmitor (if detouring), parts of Lake Skadar, Komani ferry, Mavrovo/Matka canyons.
- Cities and lakes: Dubrovnik, Sarajevo, Kotor, Tirana, Ohrid and Skopje have strong 4G; 5G is spotty and mainly urban—don’t rely on it between towns.
Ferry days: how to stay connected
- Download offline maps (Google Maps/Organic Maps) and tickets/QR codes the night before.
- Message contacts your departure/arrival windows early. Onboard Wi‑Fi is rare; tethering from patchy mobile signal isn’t reliable.
- Queue screenshots: hotel address, driving directions for the first 30 km after the ferry, and key phrases in local languages.
If you’re pairing regions
- Starting or finishing in Italy or Spain? Add a short EU eSIM like Esim Italy or Esim Spain alongside your Balkans plan.
- Flying in via Paris or elsewhere in the EU? An EU pack such as Esim Western Europe covers your transit—but confirm where EU coverage ends before you head east.
- Coming from the States or Canada? Get connected before you board with Esim United States or a transregional option like Esim North America, then switch to your Balkan plan on arrival.
Pre-trip checklist (connectivity-first)
- Check country coverage and partner networks: Destinations.
- Decide: Regional Balkans eSIM vs stacking country eSIMs.
- Install eSIMs on Wi‑Fi at home; label profiles by country.
- Note APN settings and preferred partner networks for each plan.
- Download offline maps for each stop, plus bus tickets and hotel details.
- Pack: Dual‑SIM phone or eSIM-capable device; power bank; universal adapter (Type C/F common; Type G in some hotels).
- If renting a car: Confirm cross-border permission and roadside assistance numbers; download routes for mountain drives.
Pro tips: - Keep WhatsApp/Signal tied to your main number; data‑only eSIMs won’t receive normal SMS. - If you work on the road, schedule uploads when you’re in cities; rural uplink speeds can be slow. - Set data limits or use OS data saver to stretch smaller country packs.
Costs and time savers
- Buses: 10–35 EUR per leg; buy in advance on busy routes.
- Fuel and tolls: Coastal E-roads have fewer tolls than inland motorways; Montenegro and Albania rely on standard highways.
- Accommodation: Coastal towns spike in July–August; book Kotor/Ohrid early.
- Cash vs cards: Cards widely accepted in cities; carry small cash for buses, markets, and border snacks.
- Data: City cafés have reliable Wi‑Fi; don’t bank on it in villages or on ferries.
FAQ
1) Is two weeks enough for this route? - Yes for highlights: Dubrovnik, Mostar, Sarajevo, Kotor, Tirana plus Berat or Gjirokastër, Ohrid, Skopje. Add a day if you want both the Komani ferry and the Albanian Riviera.
2) Bus or car—what’s better? - Buses are simple and cheap on the main corridors. Rent a car if you value flexibility for national parks, early starts, and short ferries (Kotor Bay, Komani). Avoid night driving on mountain roads.
3) Will my EU eSIM roam across this route? - Not fully. Croatia is EU; Bosnia and Herzegovina, Montenegro, Albania and North Macedonia are not. You’ll need a regional plan that explicitly lists these countries or separate country eSIMs. Verify coverage under Destinations.
4) Do I need to change APN settings at each border? - Often, yes. After crossing, toggle aeroplane mode, check you’ve connected to a partner network, and confirm the APN. If speeds are poor, set your device to 4G/LTE only and retry.
5) How reliable is coverage on ferries and in the mountains? - Ferries (Elaphiti, Komani) and canyon drives (Matka, parts of Lovćen/Skadar) can have little to no signal. Download offline maps and tickets beforehand; message contacts before departure.
6) I’m travelling for work—anything extra to consider? - Bring a backup data option (secondary country eSIM or hotel Wi‑Fi plan) and schedule calls from cities for stable bandwidth. If you’re organising a team trip, see Simology For Business. Travel companies and resellers can explore the Partner Hub.
Next step
Compare coverage and pick your regional or country plans for each stop via Simology’s Destinations. Install before you fly, note the APNs, and you’re ready for a smooth two‑week Balkan loop.
© Simology
// Make external links open in a new tab for (const a of document.querySelectorAll('#content a[href]')) { try { const u = new URL(a.getAttribute('href'), window.location.href); if (u.origin !== window.location.origin) a.setAttribute('target','_blank'); } catch(e) { /* ignore */ } } // Add 'lead' class to the first paragraph for nicer intro const firstP = document.querySelector('#content p'); if (firstP) firstP.classList.add('lead');