Skip to content
OpenWaterAtlas

The best time to dive, month by month, for every dive region

"Best time to visit" advice is usually one person's memory of one trip — and it's almost always pitched at whole countries, which is the wrong grain: the Pacific and Caribbean coasts of Mexico don't share a season. So this scores every month from 5 years of daily wind, rain and temperature across 1,277 dive sites, grouped into 98 dive regions (by nearest travel hub) in 23 countries. Darker = the calmer, drier, warmer weeks each region's own conditions favour. Built from our open dataset — reproducible, not a guess.

Indonesia: 6 months apart
Sorong peaks in November, but Jakarta in May — a single "best month" for the country would hide that.
🇪🇨 Isla Baltra
is the most year-round region here — the flattest swing between its calmest and roughest months.
🇺🇸 Monterey
has the sharpest season — its best months stand out most, so timing matters there.
Dive region JFMAMJJASOND Best months
🇮🇩 Indonesia
Sorong 65 FairLowFairGoodLowLowLowLowLowPeakPeakFair October, November
Mataram (Pujut, Lombok Tengah) 42 LowLowLowPeakPeakGoodGoodGoodGoodGoodGoodLow April, May
Manado 34 LowLowLowLowGoodGoodGoodPeakPeakPeakLowLow August, September, October
Luwok 32 LowLowLowFairLowLowLowFairPeakPeakGoodLow September, October
Kuta, Badung 31 LowLowGoodPeakGoodGoodGoodGoodGoodPeakPeakFair April, October, November
Bima 28 LowLowLowGoodGoodGoodGoodGoodGoodPeakPeakLow October, November
Jakarta 20 LowLowLowGoodPeakGoodGoodPeakGoodPeakLowLow May, August, September, October
Banda Aceh 3 LowGoodGoodPeakGoodGoodLowGoodGoodLowLowLow April
🇪🇬 Egypt
Hurghada 86 LowLowLowGoodFairFairPeakGoodGoodPeakPeakGood July, November
Berenice Troglodytica 57 LowLowLowLowLowLowPeakFairLowLowGoodLow July
Sharm El Sheikh 41 GoodGoodGoodGoodGoodFairGoodGoodGoodPeakGoodGood October
Marsa Alam 31 FairFairLowFairFairFairPeakGoodFairPeakGoodGood July, October
Saint Catherine 21 GoodGoodGoodGoodGoodGoodPeakGoodGoodGoodPeakGood July, November
🇲🇻 Maldives
Malé 94 GoodGoodPeakPeakLowGoodLowLowLowLowLowLow March, April
Maamigili 40 GoodGoodPeakPeakLowGoodLowLowLowLowLowLow March, April
Gan 8 GoodGoodPeakGoodLowGoodLowGoodGoodLowLowLow March, June
Noonu Atoll 8 GoodGoodPeakPeakLowGoodLowLowLowLowLowLow March, April
🇵🇭 Philippines
Coron 18 GoodGoodGoodPeakGoodFairLowLowLowLowGoodGood April
Mamburao 17 GoodGoodGoodPeakPeakFairLowLowLowFairGoodGood April, May
Ormoc City 14 LowLowGoodGoodPeakPeakLowGoodLowLowFairLow May, June
Dumaguete City 11 GoodGoodGoodPeakGoodFairLowGoodFairLowLowLow April
Cabatuan 10 GoodGoodGoodPeakGoodLowLowLowLowLowLowLow April
Panglao 7 LowLowGoodPeakGoodFairLowFairFairLowLowLow April
Surigao City 4 LowLowFairGoodGoodPeakLowLowFairFairLowLow June
Davao 3 LowLowGoodPeakLowLowLowLowFairGoodFairLow April
Mambajao 3 LowLowLowGoodGoodPeakFairPeakGoodFairLowLow May, June, August, September
🇫🇷 France
Hyères, Var 13 LowLowLowLowLowGoodGoodPeakGoodLowLowLow August
Cannes 10 LowLowLowLowGoodGoodGoodPeakGoodLowLowLow July, August
Papeete 8 LowFairPeakGoodGoodLowGoodLowLowLowLowLow March
Biarritz 5 LowLowLowLowLowGoodPeakPeakGoodLowLowLow July, August
Bordeaux 5 LowLowLowLowLowGoodPeakPeakGoodLowLowLow July, August
Le Castellet, Var 5 LowLowLowLowLowGoodGoodPeakGoodLowLowLow August
Pointe-à-Pitre 5 GoodGoodGoodPeakGoodGoodGoodGoodPeakFairGoodGood September
Grand-Bourg 4 FairFairFairPeakPeakLowLowGoodPeakFairFairFair April, May, September
Perpignan/Rivesaltes 4 LowLowLowLowGoodPeakGoodPeakGoodGoodLowLow June, August
Brest 3 LowLowLowFairFairPeakGoodPeakFairLowLowLow June, August
Hondarribia 3 LowLowLowLowLowGoodPeakPeakLowLowLowLow July, August
Montpellier/Méditerranée 3 LowLowLowLowGoodGoodGoodPeakGoodLowLowLow August
🇹🇭 Thailand
Na Thon (Ko Samui Island) 20 GoodGoodGoodPeakLowLowLowLowLowLowLowLow April
Phuket 15 GoodGoodGoodPeakLowLowLowLowLowLowLowGood April
Langkawi 9 LowGoodGoodPeakGoodGoodGoodLowLowLowLowLow April
Ranong 8 GoodGoodGoodPeakLowLowLowLowLowLowLowLow April
Laem Ngop 7 GoodGoodGoodPeakFairLowLowLowLowLowGoodGood April
Krabi 6 GoodGoodGoodPeakFairLowLowLowLowLowLowGood April
🇺🇸 United States
Pensacola 11 LowFairLowGoodFairFairPeakFairGoodFairLowFair July
Monterey 10 LowLowLowLowFairGoodGoodPeakPeakGoodLowLow July, August, September
Kahului 8 GoodGoodGoodGoodGoodGoodGoodGoodGoodPeakGoodGood October
Burlington 6 FairLowLowLowFairGoodGoodGoodPeakLowLowLow September
Gainesville 6 FairGoodGoodGoodGoodGoodGoodFairGoodPeakGoodGood October
San Jose 5 LowLowLowLowLowGoodPeakPeakPeakGoodLowLow July, August, September
Hagåtña 4 GoodGoodGoodGoodPeakPeakFairFairFairLowGoodGood May, June
Hilo 4 GoodLowLowLowLowGoodLowLowPeakPeakLowLow September, October
Panama City Beach 3 LowLowLowGoodGoodLowLowLowFairPeakFairLow October
San Juan 3 PeakGoodGoodGoodPeakGoodGoodGoodGoodPeakGoodPeak January, May, October, December
🇭🇷 Croatia
Rijeka(Omišalj) 29 LowLowLowLowLowPeakGoodGoodLowLowLowLow June
Pula 11 LowLowLowLowLowPeakGoodGoodLowLowLowLow June, July
Zadar 10 LowLowLowLowLowPeakGoodGoodGoodLowLowLow June
Split 5 LowLowLowLowLowPeakGoodGoodGoodFairLowLow June
Sečovlje 3 LowFairLowFairLowPeakGoodGoodLowLowLowFair June
🇦🇺 Australia
Cairns 11 LowLowLowLowLowLowLowLowLowGoodPeakFair November
Williamtown 9 GoodGoodGoodGoodFairFairFairGoodGoodGoodGoodPeak December
Sydney (Mascot) 8 LowGoodLowPeakGoodGoodFairFairFairGoodGoodGood April
Geelong/Melbourne 7 FairGoodPeakGoodGoodLowLowLowLowLowLowLow March
Grafton 5 GoodGoodLowLowLowPeakLowFairLowLowFairGood June
Perth 4 FairGoodGoodPeakGoodLowLowLowFairFairGoodFair April
Gold Coast 3 GoodLowLowGoodLowPeakFairFairGoodGoodLowGood June
🇮🇹 Italy
Genova (GE) 20 LowLowLowLowLowPeakPeakPeakLowLowLowLow June, July, August
Alghero 6 LowLowLowFairGoodPeakPeakPeakGoodGoodLowLow June, July, August
Rome 6 LowLowLowLowGoodPeakGoodPeakGoodLowLowLow June, August
Reggio Calabria 4 LowLowLowLowGoodPeakPeakGoodGoodGoodLowLow June, July, August
Campo nell'Elba (LI) 3 LowLowLowLowFairGoodPeakGoodGoodLowLowLow July
Grosseto (GR) 3 LowLowLowLowFairGoodGoodPeakGoodLowLowLow August
Olbia (SS) 3 LowLowLowLowGoodPeakPeakPeakGoodGoodLowLow June, July, August
🇬🇧 United Kingdom
Brighton, East Sussex 25 LowLowLowFairFairPeakGoodPeakLowLowLowLow June, July, August
Kirkwall, Orkney Islands 10 LowLowLowFairFairFairGoodFairLowLowLowLow May, July
🇲🇽 Mexico
Cozumel 24 GoodGoodGoodGoodGoodLowGoodGoodPeakGoodGoodGood September
Cancún 5 LowLowLowFairGoodLowPeakPeakGoodGoodGoodLow July, August
San José del Cabo 3 GoodGoodGoodGoodPeakGoodGoodGoodGoodGoodGoodPeak May, December
🇵🇹 Portugal
Lisbon 17 LowLowLowLowLowLowGoodGoodPeakLowLowLow September
Porto 6 LowLowLowLowLowGoodGoodPeakGoodLowLowLow August
Portimão 5 LowLowLowFairFairFairFairFairPeakGoodFairLow September
Cascais 4 LowLowLowLowLowLowGoodGoodPeakFairLowLow September
🇲🇹 Malta
Valletta 31 LowLowLowLowLowGoodPeakPeakGoodGoodLowLow June, July, August
🇨🇴 Colombia
San Andrés 17 LowLowGoodPeakGoodLowLowFairPeakGoodLowLow September
🇨🇾 Cyprus
Paphos 6 LowLowLowGoodGoodGoodPeakGoodGoodGoodGoodLow July
Lefkoniko (Geçitkale) 5 LowLowLowGoodGoodGoodGoodGoodPeakPeakGoodLow September, October
Larnaca 3 LowLowLowGoodGoodGoodGoodGoodGoodPeakPeakLow October, November
🇪🇨 Ecuador
Isla Baltra 7 PeakPeakGoodGoodGoodGoodGoodGoodGoodGoodGoodGood January, February
Salinas/La Libertad 4 GoodFairGoodPeakGoodGoodGoodGoodGoodGoodGoodGood April
🇨🇻 Cape Verde
Espargos 6 LowLowLowLowLowGoodPeakGoodGoodGoodGoodLow July
São Pedro 3 GoodLowGoodGoodLowLowPeakGoodGoodGoodGoodGood July
🇲🇦 Morocco
Rabat 5 LowLowLowLowGoodGoodPeakPeakGoodGoodFairLow July, August
Essaouira 3 FairGoodGoodGoodGoodGoodGoodPeakPeakPeakPeakGood August, September, October, November
🇦🇷 Argentina
Mar del Plata 4 GoodLowLowLowFairFairFairFairFairFairLowLow May
La Plata 3 GoodGoodGoodFairFairFairFairLowLowLowGoodGood June
🇹🇿 Tanzania
Zanzibar 4 GoodGoodGoodLowGoodGoodGoodGoodGoodGoodGoodPeak December
🇲🇺 Mauritius
Plaine Magnien 3 LowGoodGoodPeakGoodLowLowLowLowGoodPeakGood April, November
🇹🇷 Turkey
Bodrum 3 LowLowLowFairGoodGoodGoodPeakGoodPeakLowLow August, October

Rating vs. each region's own year, plus fixed comfort thresholds: Peak Good Fair Low "Low" = that region's off-season, not "bad diving". Number after a region = dive sites in it. Hover a cell for the underlying wind / rain / temperature.

How the regions and the score are built

A country is too coarse a unit — Mexico spans the Pacific and the Caribbean, the US spans Florida, California and Hawaii. We don't hold administrative regions, so each dive site is snapped to its nearest airport hub (within 150 km) and regions are named by that hub city — Cozumel, Cabo, Kona, Key West — which is how you'd fly there anyway. Sites more than 150 km from any hub (remote liveaboard reefs like Socorro) are left out.

For each site we hold a 5-year daily climatology — median wind, mean rain and mean air temperature per day — from Open-Meteo / ERA5. We average those to a monthly value per region, then score each month on three things a diver feels:

  • Calm — lower wind means better visibility, easier boat access and less surge.
  • Dry — less rain means less runoff killing viz, and fewer blown-out days.
  • Warm — warmer air tracks warmer water (weighted at half, since divers tolerate warmth far better than cold).

Each factor is z-normalised within the region and combined. Every month is then rated Peak / Good / Fair / Low by how far it sits from that region's own best month — so the rating answers "which months are best for this region", not a global ranking, and a genuinely year-round region never drops to "Low". A relative score alone over-reacts where conditions barely change, so we also apply fixed diver thresholds (rain above ~3 mm/day, wind above ~13 kn, air below ~25°C): a month that is comfortable in absolute terms is rated at least Good, and a month that is rough in absolute terms is capped at Fair. A region needs at least 3 sites with climatology to appear (98 qualify today).

Caveats, stated plainly. This is a climate-conditions signal, not a marine-life calendar — a manta or whale-shark season can peak outside the calmest weeks. Water temperature is inferred from air, not measured per month. Regions are approximated by airport proximity, not surveyed dive-operator boundaries. And climate is the long-run average; any single year varies. Every input is in the open dataset, so you can re-derive or re-weight this yourself.

Data: OpenWaterAtlas open dataset (DOI 10.5281/zenodo.20668393), built on Open-Meteo / ERA5. CC-BY 4.0 — reuse with attribution and a link back.

View →