By bus: Regular buses run from Girona to Besalú via Banyoles, taking around one hour. There are several departures daily; check the current timetable with the local operator. The bus stop is close to the bridge.
By car: Besalú is 35km from Girona on the C-66 — about 40 minutes. From Barcelona it's around 130km, roughly 90 minutes depending on traffic. Park outside the old walls; the historic centre is effectively pedestrian.
By air: Girona–Costa Brava Airport (GRO) is the nearest airport, around 50km away. Barcelona El Prat (BCN) is 140km.