Travelling from Perth to Inverness by train
The fastest trains from Perth to Inverness take around 2 hours, covering a distance of approximately 130 kilometres. There are frequent services on the rail route between Perth and Inverness.
Direct trains run between Perth and Inverness.
We usually find around 16 direct trains on the route from Perth to Inverness every weekday.
Trains usually run with a similar frequency on weekends. The duration is normally about 2 hours, whatever time you make the journey.
On weekdays the earliest direct train to Inverness is usually scheduled to depart Perth around 05:08 and the last train is around 21:01. This is the same at the weekend.
Route map is indicative only and may differ from the optimal route. Actual routes will be displayed when searching.
When to book Perth to Inverness train tickets?
The earlier you book the better, and the cheapest tickets we've found for trains from Perth to Inverness are £8.70.
Trains departing 30 days in advance will cost around £11, and when booking 7 days in advance the price is usually the same. Booking on the day of travel may be more expensive.
Trains in the UK usually open for booking around 3 months in advance. If booking is not yet open for your dates then you can set a booking alert to receive an email on the day that the cheapest tickets are released for your journey from Perth to Inverness by train.
Which trains operate between Perth and Inverness?
More than one type of train operates on the route from Perth to Inverness, so you’ll be travelling with one or more of the following rail operators:
- East Coast
You can check which train you’ll be travelling on by looking for the train name in search results.
Other journeys to Inverness View all journeys to Inverness
- From Glasgow from £5.00
- From Forres from £8.90
- From Dundee from £14.30
- From Newark North Gate from £50.50
- From Chesterfield from £67.80
- From Birmingham from £22.00
- From Manchester from £33.50
- Reading to Bournemouth trains
- London to Brussels trains
- Florence to Verona trains
- Paris to Milan trains
- Glasgow to Coventry trains
- Brussels to Amsterdam trains
- Amsterdam to London trains
- Bordeaux to Marseille trains
- Milan to Florence trains
- Darlington to Birmingham trains
- Milan to Pisa trains
- London to Geneva trains
- London to Munich trains
- Barcelona to Bilbao-Abando trains
- London to Florence trains
- Leeds to Stevenage trains
- Lyon to Barcelona trains
- Milan to Trieste Centrale trains
- London to Nice trains
- London to Bruges trains
- Brussels to London trains
- Madrid to Barcelona trains
- Bilbao-Abando to Madrid trains
- Madrid to Seville trains
- Brussels to Cologne trains
- Zurich to Milan trains
- Munich to Venice trains
- Madrid to Bilbao-Abando trains
- Riomaggiore to Rome trains
- Venice to Verona trains
- London to Amsterdam trains
- Verona to Milan trains
- London to Stuttgart trains
- Milan to Bergamo trains
- Paris to Prague trains
- Milan to Rome trains
- London to Antwerpen trains
- Reading to Bath Spa trains
- Paris to Toulouse trains
- London to Salzburg trains
- Middlesbrough to Edinburgh (Waverley, city centre) trains
- Plymouth to Birmingham trains
- Naples to Palermo Centrale trains
- London to Rotterdam trains
- Brussels to Rotterdam trains
- Paris to Zurich trains
- Geneva to Milan trains
- Ipswich to Norwich trains
- Pisa to Bologna trains
- Grantham to York trains
- Brussels to Vienna trains
- Munich to Salzburg trains
- London to Copenhagen trains
- London to Bordeaux trains
- Berlin to Warsaw trains
- Birmingham to High Wycombe trains
- Milan to Bari S. Spirito trains
- Brussels to Berlin trains
- Paris to Amsterdam trains
- London to Verona trains