Is a sargassum seaweed mat drifting toward my beaches?
Draw a rectangle to pick your area of interest, then see what NASA data covers it (live, here in your browser) or download a ready-to-run notebook with your AOI pre-filled. The notebook runs in any Python environment — it needs a free Earthdata Login to fetch the data.
-65, 10 → -50, 18 (Tropical Atlantic sargassum belt (toward the Caribbean))Each year a vast belt of *Sargassum* — free-floating brown seaweed — drifts across the tropical Atlantic and washes onto Caribbean and Gulf beaches, where it piles up, rots, and drives tourists away. You can't see the seaweed itself in a standard ocean-colour product, but you *can* see the elevated [chlorophyll-a](/glossary/chlorophyll/) signature of biologically rich water in the belt, which is a useful first-look proxy for "is there a lot of floating algae out there right now?" **Verified locally.** Over the tropical-Atlantic sargassum belt (10–18 °N, 65–50 °W), the MODIS-Aqua `chlor_a` field read a **median of 0.136 mg/m³** — about **2.7× higher** than a clear open-ocean patch to the north (0.051 mg/m³), with the top 10% of belt pixels above 0.38 mg/m³. That elevated band is the kind of productive water sargassum rides in on. The honest caveat: real sargassum mapping uses the **Floating Algae Index (FAI / AFAI)** computed from L2 reflectance — not chlorophyll — because chlorophyll alone can't tell floating mats from plankton-rich water.
Is a sargassum seaweed mat drifting toward my beaches?
Each year a vast belt of Sargassum — free-floating brown seaweed — drifts across the tropical Atlantic and washes onto Caribbean and Gulf beaches, where it piles up, rots, and drives tourists away. You can’t see the seaweed itself in a standard ocean-colour product, but you can see the elevated chlorophyll-a signature of biologically rich water in the belt, which is a useful first-look proxy for “is there a lot of floating algae out there right now?”
Verified locally. Over the tropical-Atlantic sargassum belt (10–18 °N, 65–50 °W), the
MODIS-Aqua chlor_a field read a median of 0.136 mg/m³ — about 2.7× higher than a clear
open-ocean patch to the north (0.051 mg/m³), with the top 10% of belt pixels above 0.38 mg/m³.
That elevated band is the kind of productive water sargassum rides in on. The honest caveat: real
sargassum mapping uses the Floating Algae Index (FAI / AFAI) computed from L2 reflectance — not
chlorophyll — because chlorophyll alone can’t tell floating mats from plankton-rich water.
What you can answer
- Where the water is biologically “loaded” right now, and every month back to 2002 — MODIS-Aqua
chlor_a(mg/m³), a coarse proxy for productive, algae-friendly water - How the belt compares to open ocean — contrast belt median chlorophyll against a clearer reference patch to see how anomalous a given month is
- The seasonal march of the belt — step month-by-month to watch productivity build through spring and peak in summer, the classic sargassum season
- Roughly which way conditions favour drift — pair with MUR SST fronts and currents context to reason about whether enriched water is trending toward your coast
- A better detection upgrade path — switch to PACE OCI hyperspectral products for sharper floating-algae discrimination than MODIS allows
What you can NOT answer with these datasets alone
- Whether a sargassum mat will actually land on your beach, or when — chlorophyll shows water condition, not the position or trajectory of a physical mat; landfall needs drift modelling
- Floating seaweed vs. plankton bloom —
chlor_acan’t separate them; that’s exactly what the FAI / AFAI reflectance indices are for - Mat thickness or tonnage — ocean colour gives no biomass weight; beach impact depends on how much actually piles up
- Day-to-day or nearshore detail — L3m here is a coarse composite (9 km); shallow, cloudy, or turbid coastal water is unreliable, and clouds leave gaps
- Health or clean-up specifics — rotting sargassum releases hydrogen sulfide; that risk needs on-the-ground air monitoring, not satellite colour
Code template (Python, cloud-direct)
Verified locally.
MODISA_L3m_CHL, variablechlor_a, is a gridded NetCDF you can open lazily with xarray. Notelatruns north → south. The collection returns composite granules (e.g. a full-mission cumulative file); subset to your belt bounding box before reducing. For true sargassum, move to FAI / AFAI from L2 reflectance rather than chlorophyll.
import os, re, earthaccess, xarray as xr, numpy as np
# load Earthdata creds from .env without `source` (passwords can break the shell)
for line in open(".env"):
m = re.match(r'\s*(?:export\s+)?([A-Z0-9_]+)\s*=\s*(.*)\s*$', line)
if m: os.environ.setdefault(m.group(1), m.group(2).strip().strip('"').strip("'"))
earthaccess.login(strategy="environment") # free Earthdata Login
W, S, E, N = -65, 10, -50, 18 # tropical-Atlantic sargassum belt
g = earthaccess.search_data(short_name="MODISA_L3m_CHL",
temporal=("2023-06-01", "2023-07-01"),
bounding_box=(W, S, E, N))
ds = xr.open_dataset(earthaccess.open(g[:1])[0])
chl, lat, lon = ds["chlor_a"], ds["lat"], ds["lon"]
belt = chl.where((lat >= S) & (lat <= N) & (lon >= W) & (lon <= E)).values
belt = belt[np.isfinite(belt)]
print("belt chlor_a median:", round(float(np.median(belt)), 3), "mg/m3")
# compare to a clearer open-ocean patch to the north
ow, os_, oe, on = -50, 25, -35, 33
ref = chl.where((lat >= os_) & (lat <= on) & (lon >= ow) & (lon <= oe)).values
ref = ref[np.isfinite(ref)]
print("open-ocean median:", round(float(np.median(ref)), 3),
"mg/m3 -> ratio:", round(float(np.median(belt) / np.median(ref)), 2), "x")Make it yours → Set your belt and reference boxes, the months of interest, and switch from MODIS chlorophyll to PACE OCI for sharper floating-algae detection.
The robust trend (Theil–Sen + Mann–Kendall) at the heart of this question — runnable on synthetic data, right here. The full earthaccess code template further down does it on real NASA data (needs an Earthdata login).