Porthmadog lies on the A487, the Fishguard to Bangor trunk road.
The A498 runs north from Porthmadog to Beddgelert, giving access to Snowdonia.
The A497 runs west through the southern Llŷn Peninsula to Criccieth and Pwllheli.
In 2008 the Welsh Assembly Government published plans for the A487 Porthmadog, Minffordd and Tremadog Bypass, which would reduce the amount of through traffic in the town of Porthmadog.
The completed bypass was officially opened on 17 October 2011.

The town has three railway stations.
Porthmadog is on the Cambrian Coast Line between Pwllheli and Machynlleth.
Trains operated by Transport for Wales run through to Shrewsbury, Wolverhampton and Birmingham.

Porthmadog Harbour at the southern end of the Stryd Fawr has been the terminus of the Ffestiniog Railway from Blaenau Ffestiniog since passenger services started in 1865.
Since 2011 it is also the southern terminus of the rebuilt Welsh Highland Railway from Caernarfon.

The Welsh Highland Heritage Railway has its main station and visitor centre near the northern end of Stryd Fawr on the former Cambrian Railways sidings opposite to the main line station.
Trains run to Pen-y-Mount.

Buses are run by Arriva Buses Wales, Gwynfor Coaches, Lloyds Coaches and Caelloi Motors, to Aberystwyth, Bangor, Beddgelert, Blaenau Ffestiniog, Caernarfon, Criccieth, Dolgellau, Machynlleth, Morfa Bychan, Penrhyndeudraeth, Pen-y-Pass, Portmeirion, Pwllheli, Rhyd and Tremadog.
Porthmadog lies on the A487, the Fishguard to Bangor trunk road. The A498 runs north from Porthmadog to Beddgelert, giving access to Snowdonia. The A497 runs west through the southern Llŷn Peninsula to Criccieth and Pwllheli. In 2008 the Welsh Assembly Government published plans for the A487 Porthmadog, Minffordd and Tremadog Bypass, which would reduce the amount of through traffic in the town of Porthmadog. The completed bypass was officially opened on 17 October 2011.
The town has three railway stations. Porthmadog is on the Cambrian Coast Line between Pwllheli and Machynlleth. Trains operated by Transport for Wales run through to Shrewsbury, Wolverhampton and Birmingham.
Porthmadog Harbour at the southern end of the Stryd Fawr has been the terminus of the Ffestiniog Railway from Blaenau Ffestiniog since passenger services started in 1865. Since 2011 it is also the southern terminus of the rebuilt Welsh Highland Railway from Caernarfon.
The Welsh Highland Heritage Railway has its main station and visitor centre near the northern end of Stryd Fawr on the former Cambrian Railways sidings opposite to the main line station. Trains run to Pen-y-Mount.
Buses are run by Arriva Buses Wales, Gwynfor Coaches, Lloyds Coaches and Caelloi Motors, to Aberystwyth, Bangor, Beddgelert, Blaenau Ffestiniog, Caernarfon, Criccieth, Dolgellau, Machynlleth, Morfa Bychan, Penrhyndeudraeth, Pen-y-Pass, Portmeirion, Pwllheli, Rhyd and Tremadog.
Porthmadog