Travel Information
Compare train, bus, and flight for Barcelona to Porto
Omio recommends booking the flight as it is the most popular option from Barcelona to Porto among Omio's users. If you are prioritising price, take the train, with an average ticket price of €17 For those with little time, consider booking a flight, which has an average total journey time of 5h 21m. If you are seeking to minimise your carbon footprint, the bus is your best option, with estimated CO2 emissions of 0.9 - 2.2kg. Average ticket prices depend on the travel mode: a train costs an average of €17, while a flight costs an average of €277.
Distance: 559 miles (900 km)
Compare flight with
Most popular Flight | Bus | Train | Driving |
|---|---|---|---|
€277 Average price | €63 Average price | €17 Average price Cheapest | €177 Average price (fuel + tolls) |
5h 21m Average total duration Fastest 3h 21m Onboard + 2h 0m Additional time* | 18h 58m Average total duration 18h 28m Onboard + 30m Additional time* | 9h 59m Average total duration 9h 29m Onboard + 30m Additional time* | 11h 22m Average total duration (door-to-door) |
2.7 - 5.4kg CO2 emissions | 0.9 - 2.2kg CO2 emissions Lowest | - CO2 emissions | - CO2 emissions |
![]() Most popular airline | ![]() Most popular bus company | ![]() Most popular train company | Your own car or car rental |
Direct Options | Direct Options | Direct Options | Direct Options |
Additional time: Average total travel duration to departure point, security checks and transfers.
This is compared to other travel options from Barcelona to Porto:
A train is €46 less than a bus for this route with tickets for a bus from Barcelona to Porto costing on average €63.
A train is €260 less than a flight for this route with tickets for a flight from Barcelona to Porto costing on average €277.
Other travel options to Porto take longer:
Train takes on average 9h 59m.
Bus takes on average 18h 58m.
You'll arrive about 8h 1m sooner (3h 21m by flight vs 11h 22m by car). Tickets start at around €277 compared to roughly €177 in fuel and tolls — a bit more, but you get time back and avoid a long drive.
Driving makes more sense if you're travelling as a group, want flexibility on timing, or plan to stop en route.
Travel optionsfrom Barcelona to Porto
How to get from Barcelona to Porto by train, bus or flight.
Our recommendation
The best way to travel from Barcelona to Porto is by taking a bus because it’s the best combination of price and speed.
Normal · Normal11:30 PM18h24Barcelona, Estació d'Autobusos Nord4:54 PMPorto, Terminal Intermodal de Campanhã€341One-way1 transfer
Cheapest
Normal · Normal11:30 PM18h24Barcelona, Estació d'Autobusos Nord4:54 PMPorto, Terminal Intermodal de Campanhã€341One-way1 transfer
Fastest
VY84808:25 PM1h55Barcelona El Prat Airport9:20 PMPorto Airport€2501One-way0 transfers
Other options
06070+
04515+
004227:05 AM13h30Barcelona Sants7:35 PMPorto - Campanhã€1631One-way2 transfers
06060+
04515+
004225:45 AM14h50Barcelona Sants7:35 PMPorto - Campanhã€1711One-way2 transfers
Normal · Normal9:30 AM21h44Barcelona, Estació d'Autobusos Nord6:14 AMPorto, Terminal Intermodal de Campanhã€401One-way1 transfer
06070+
Normal7:05 AM17h09Barcelona Sants11:14 PMPorto, Terminal Intermodal de Campanhã€871One-way1 transfer
06070+
Normal7:05 AM17h09Barcelona Sants11:14 PMPorto, Terminal Intermodal de Campanhã€871One-way1 transfer
VY84767:00 AM2h00Barcelona El Prat Airport8:00 AMPorto Airport€1071One-way0 transfers
FR 458512:00 PM2h00Barcelona El Prat Airport1:00 PMPorto Airport€1151One-way0 transfers
FR 45879:05 PM2h00Barcelona El Prat Airport10:05 PMPorto Airport€1331One-way0 transfers
Find all the dates and times for this journey by train, bus, flight, and ferry .
Compare prices and tickets Prices for trains, buses and flights
Compare train, bus, and flight prices over the next three weeks. See the best deals at a glance, find the lowest fares, and choose the option that fits your budget.
Oct 16
Oct 17
Oct 18
Oct 19
Oct 20
Oct 21
Oct 22
Oct 23
Oct 24
Oct 25
Oct 26
Oct 27
Oct 28
Oct 29
Oct 30
Oct 31
Nov 01
Nov 02
Nov 03
Nov 04
Nov 05
How to get from Barcelona to Porto
The Best Way According to our Users
More than 1,000 travel companies trust us to sell their tickets all in one place.
FAQs: Travel from Barcelona to Porto
Travel to Porto easily. Whether you want fast, cheap or something entirely different, our travel experts have collected everything you need to know so you can find the best option from Barcelona to Porto.

This is compared to other travel options from Barcelona to Porto:
A train is €46 less than a bus for this route with tickets for a bus from Barcelona to Porto costing on average €63.
A train is €260 less than a flight for this route with tickets for a flight from Barcelona to Porto costing on average €277.
Other travel options to Porto take longer:
Train takes on average 9h 59m.
Bus takes on average 18h 58m.
- Around 48 flights per day.
- Around 7 buses per day.
- Around 2 trains per day.
However, we recommend checking specific travel dates for your route between Barcelona and Porto as scheduled services by train, bus, and flight can vary by season or day of the week.
- Flights mostly depart from Barcelona El Prat Airport and arrive in Porto Airport.
- Trains mostly depart from Barcelona Sants and arrive in Porto - Campanhã.
- Buses mostly depart from Barcelona, Estació d'Autobusos Nord and arrive in Porto, Terminal Intermodal de Campanhã.
- Travel with Alsa, BlaBlaCar Bus, FlixBus to go to Porto by bus.
- Travel with AVE to go to Porto by train.
- Travel with Ryanair, Vueling, TAP Portugal, Iberia, Air Europa, azores airlines, Swiss, BA Euroflyer, Brussels Airlines, Avion Express Malta, Norwegian Air Shuttle, Air Baltic, Helvetic Airways, Lot Polish Airlines, British Airways, Edelweiss Air, CitizenPlane, Eurowings, Air France, Austrian Airlines, Lufthansa, Royal Air Maroc to go to Porto by flight.
- 0 direct buses per day with BlaBlaCar Bus.
- 9 direct flights per day with Ryanair, Vueling, CitizenPlane.
Travelling from Barcelona to Porto: related information
Here are some other resources that might have the information you need

