La commune se situe sur l'ancienne route nationale D 786 de Saint-Malo (102 km à l'est) et Saint-Brieuc (26 km au sud-est) à Paimpol (18 km au nord-ouest), Lannion et Morlaix. Saint-Quay-Portrieux est à 9 km au sud-est, Guingamp à 23 km au sud-ouest, Rennes à 128 km au sud-est.
Le bourg de Plouha est à 3 km de la mer. Les falaises, situées sur la façade ouest de la baie de Saint-Brieuc, culminent à la pointe de Plouha à 104 mètres du niveau de la mer, ce qui en fait les plus hautes des côtes bretonnes1. Les falaises sont bordées par le sentier des douaniers.
Plusieurs plages permettent des activités balnéaires : la plage de Bréhec, la plage Bonaparte, l'anse de Porz Moguer.