EUDR Forest Check

How it works

Does a land plot comply with the EU Deforestation Regulation? That means one question: was it deforested after 31 Dec 2020, up to the year the commodity was produced?

We answer it by intersecting two authoritative open datasets, read straight from the cloud, a few kilobytes per check, no satellite pipeline to run.

🕐 When was it lost?

Hansen / UMD Global Forest Change. Per-pixel year of forest loss, 2001-2024, ~30 m. One internally consistent product, no noisy year-to-year classifier diffing.

🌲 Was it forest in 2020?

JRC Global Forest Cover 2020, the map the European Commission built specifically to define "forest at the cutoff" for this regulation. ~10 m.

1The hard part: two maps, two grids

Hansen pixels are ~30 m; JRC pixels are ~10 m, so JRC is about 3x finer, and roughly 9 JRC pixels sit under every Hansen pixel. You can't just overlay arrays of different resolution and compare them. So the real work is aligning them onto one grid before you can ask "lost and was-forest" of any pixel.

2The merge, step by step

lost after 2020 forest in 2020 deforestation (both)
  1. Hansen sets the master grid. Reading the loss window gives us its exact pixel footprint (an affine transform + shape). Everything else must conform to it.
  2. JRC is resampled onto that grid as it's read. GDAL collapses the ~9 fine JRC pixels under each Hansen cell into a single fraction, the share of that cell that was forest in 2020.
  3. Threshold to a decision. Fraction ≥ 50% → the cell counts as forest at the cutoff. Now both maps are the same shape, same footprint.
  4. One logical AND. A pixel is deforestation only if it was lost in the window and inside your plot and forest in 2020. Valid only because step 2 put everything on one grid.

3Why the baseline matters

Hansen flags any forest loss, including on land that was already cropland or plantation in 2020, which EUDR doesn't care about. The JRC baseline removes it. On the Rondônia demo plot:

670.6
ha, Hansen loss alone
434.8
ha, loss inside 2020 forest

The ~35% removed wasn't forest at the cutoff. One map tells us when it was lost; the other, whether it was forest to begin with.

4What this is, and isn't

← Try it on a real plot