Fès-Saïs International Airport: Take local bus 16 to Fès-Ville station: about 40 minutes and 4 dirham, roughly hourly 06:00–23:00. The stop is about 200 m outside the airport; it is cheap but not ideal with heavy luggage and departures can be erratic. A fixed-price airport taxi is the sensible luggage option: about 120 dirham to the medina or Fès-Ville—confirm that total before getting in and carry exact cash.
Fès-Ville railway station: For Fes el-Bali, take a red petit taxi to Bab Bou Jeloud or Place Batha: roughly 20 dirham on the meter. Bus 19 runs from near the station to Place R’cif in the central medina for about 2.50 dirham, but has no dependable posted timetable. The station is in Ville Nouvelle, not walking distance from the old city with bags.
CTM bus terminal, Place Allal el-Fassi: Use a petit taxi onward to your riad’s nearest medina gate; the terminal is about 7 km from the medina. CTM is the better intercity-bus arrival when available: generally cleaner and more reliable than the cheaper gare routière services.
Gare Routière, near Ain Zleten: This is the useful arrival point for cheaper regional buses and grand taxis: it sits just north of Fes el-Bali, near Ain Zleten/Bab Bou Jeloud. Walk only if your accommodation is near that edge; otherwise take a short petit taxi to the appropriate gate. Ignore ticket touts, especially anyone pushing Chefchaouen tickets.