Four trains a day (one on Sunday in winter, two in summer) run from Glasgow Queen Street to Mallaig, taking 5 hours 30 mins. These trains split at Crianlarich, with part of them going to Oban, so you need to be in the right section. The first train leaves at 08:20 so the earliest you can reach Mallaig is 13:30. The last train south is around 18:00 to reach Queen Street by midnight. Trains and ferries are sometimes held for connections . . . and then again, sometimes not.
The Caledonian Sleeper leaves London Euston nightly (not Sat) at 21:00, reaching Glasgow Queen Street shortly before 06:00 and Fort William by 10:00. You then have to wait a couple of hours for the next train from Queen Street to continue to Mallaig, there isn’t an earlier bus. The 18:00 from Mallaig connects with the southbound sleeper from Fort William towards 20:00, to reach Euston for 08:00.
The railway route crosses impressive highland scenery, spectacular in fine weather and grim at other times. You pass Loch Lomond, bleak Rannoch Moor, Fort William beneath Ben Nevis, then cross the Glenfinnan Viaduct, a hundred-year-old stone arched rail bridge. From up there you don’t see much of the viaduct itself, but there are views down Loch Shiel to the left.
The Jacobite steam train runs April-Oct between Fort William and Mallaig. It’s a six-hour excursion (depart 10:15, return by 16:00) staying two hours in Mallaig. An adult day trip is £38 standard, £60 first class, child £21 / £33; single tickets (standard only) are £32 adult, £19 child. Mid-May to mid-Sept there’s also an afternoon train (14:30 – 20:30), so you could have six hours in Mallaig, time for a boat trip to the Small Isles, by going in the morning and returning on the afternoon excursion. Trains also stop at Glenfinnan for the obligatory photo of the viaduct, and by request at Arisaig. The morning excursion connects with the Caledonian Sleeper from London. In previous years some of them started from Glasgow or Edinburgh, but they’re don’t do so in 2019.
Under your own steam, using the regular train service, you can day trip here from Fort William leaving at 08:30 or 12:00 and setting off back around 16:00 or 18:00, for only £15 adult return.
In Mallaig the railway station is close to the ferry terminal.
Scottish Citylink buses run from Glasgow Buchanan Street to Portree on Skye; get off at Fort William (3 hours) and change to the Shiel Bus. In summer the Citylink buses run daily every couple of hours, but only half of them have a speedy onward connection to Mallaig. So from Glasgow buy a through-ticket: the connection will usually be held. The first bus north from Glasgow is at 10:00 arriving for 15:00, the last bus south from Mallaig is around 15:30 for 22:00. Scottish Citylink and Shiel Buses also run between Inverness and Fort William taking two hours, 4-6 a day in summer.
Between Fort William and Mallaig, Shiel Bus 500 takes 90 mins, adult return £8. In summer it runs four times a day Monday-Friday, but only once on Saturday and Sunday. Sit on the right for views of Glenfinnan Viaduct. Bus 501 also runs three times a day between Mallaig and Arisaig.
The bus stop in Mallaig varies. A couple of buses connect with the ferry to Armadale in Skye, and run direct to the ferry terminal. The others stop outside the Bank (near the railway station) before wandering off to the housing estate at Mallaigvaig.