Perpignan ligt in het centrum van de Roussillon, een oude provincie georganiseerd rond een landbouwvlakte. De stad ligt op ongeveer 15 km van de Middellandse Zee en op ongeveer 60 km van de Pyreneeën.
| Perpignan en zijn buurgemeenten |
|  |
De stad heeft een oppervlakte van 68,07 km2 en ligt op een gemiddelde hoogte van 52 m (171 ft); in het stadhuis is de hoogte 40 m (130 ft).
Perpignan ligt in de vallei van de rivier de Têt, in de vlakte van de Roussillon die in het zuiden wordt begrensd door de Pyreneeën, in het westen door de streek van de Corbières en in het oosten door de Middellandse Zee. De oude stad ligt aan de rechterkant van de rivier de Têt, waar het riviertje La Basse in de Têt uitmondt.
Het is de meest zuidelijke van de grote steden van Europees Frankrijk (Frans: France métropolitaine).
De steden Pia en Cabestany maken nu deel uit van Perpignan, terwijl Bompas, Saleilles, Canohès, Toulouges, Le Soler, Baho, Saint-Estève en Rivesaltes allemaal dicht bij de stadsgrenzen liggen. De dichtstbijzijnde steden zijn Narbonne in het noorden (65 km), Montpellier in het noordoosten (150 km), Barcelona in het zuiden (190 km) en Toulouse in het noordwesten (200 km). De afstand tot Parijs bedraagt 850 km.
Klimaat
Het klimaat van Perpignan is een warm mediterraan klimaat (Köppen-klimaatclassificatie Cfa), met zachte winters en droge zomers en warm.
De gemiddelde jaartemperatuur in Perpignan is 15,6 °C (60,0 °F). De warmste maand is gemiddeld juli, met een gemiddelde temperatuur van 23,9 °C (75,0 °F). De gemiddeld koelste maand is januari, met een gemiddelde temperatuur van 8,3 °C (47,0 °F).
De gemiddelde hoeveelheid neerslag over het jaar in Perpignan is 584,0 mm (23,0 in). De maand met de meeste neerslag gemiddeld is oktober met 78,7 mm (3,1 in) neerslag. De maand met de minste gemiddelde neerslag is juli met gemiddeld 20,3 mm (0,8 in).
| Klimaatgegevens voor Perpignan, Pyrénées-Orientales, Frankrijk |
| Maand | Jan | Feb | Mar | Apr | Mei | Jun | Juli | Aug. | Sep | Okt | Nov. | Dec | Jaar |
| Daggemiddelde °C (°F) | 8 (46) | 8 (46) | 11 (52) | 13 (55) | 16 (61) | 20 (68) | 23 (73) | 23 (73) | 20 (68) | 16 (61) | 11 (52) | 9 (48) | 15 (59) |
| Gemiddelde neerslag mm (inches) | 50 (2.0) | 40 (1.6) | 50 (2.0) | 40 (1.6) | 50 (2.0) | 30 (1.2) | 20 (0.8) | 20 (0.8) | 50 (2.0) | 70 (2.8) | 50 (2.0) | 50 (2.0) | 520 (20.8) |
| Bron: Weatherbase.com [1] |