Developed by the European Commissions Joint Research Centre (JRC), this dataset maps forest cover change in tropical moist forests (TMF) using 43 years of Landsate time series. At 30m resolution, depicting TMF extent, disturbances (deforestation and degradation), and post-deforestation recovery (regrowth).
A cloud-native republication of the JRC Tropical Moist Forest (TMF) v1.2025
products — the canonical pan-tropical (30 m) forest-state and forest-change
record, mapping moist-forest disturbance and recovery from 1990 to 2025.
ℹ️ The pixel values are identical to the JRC source. The only modification
is the file packaging: JRC ships tiled GeoTIFFs that lack internal overviews
(so they aren't valid COGs) over a click-through download CGI. We re-encode
each tile as a valid Cloud-Optimized GeoTIFF (overviews + correct IFD order,
ZSTD compression) and host it for anonymous, range-read access. See
Provenance & modifications.
Products
6 product families → 41 layers (5 single-image products + AnnualChange, which
JRC publishes as 36 separate yearly datasets, 1990–2025). Across ~86 published
tropical-land tiles that's ≈ 3,500 COGs.
Tile-first layout — every product for a 10°×10° tile sits in one folder:
TILE_ID is the JRC NW-corner label, e.g. N0_E20, S10_W60, N20_W110.
Product
Pixel meaning
Type
DeforestationYear
Calendar year of first deforestation, discrete 1982–2025 (0/NoData = never)
uint16
DegradationYear
Calendar year of first degradation, discrete 1982–2025 (0/NoData = never)
uint16
TransitionMap_MainClasses
9 main transition classes (state at end of 2025)
uint8
TransitionMap_Subtypes
39 transition sub-type classes (state at end of 2025)
uint8
UndisturbedDegradedForest
1 undisturbed / 2 degraded / 3 other (simplified TM main classes)
uint8
AnnualChange_<YYYY>
Per-year TMF status, 1990–2025 (6 classes)
uint8
Class tables are also carried in each per-product STAC index (STAC
classification extension) and as the COG's embedded colour table where JRC
publishes one. The legends below are reproduced from the JRC TMF v1 Data Users
Guide (values + RGB are authoritative).
Class legend & symbology
TransitionMap_MainClasses — uint8
Value
Label
RGB
10
Undisturbed tropical moist forest
0,80,0
20
Degraded tropical moist forest
100,135,35
30
Tropical moist forest regrowth
210,250,60
41
Deforested land — converted to tree plantations
255,200,148
42
Deforested land — converted to water
0,200,150
43
Deforested land — converted to other land cover
255,230,100
50
Ongoing deforestation/degradation (2023–2025)
250,140,10
60
Permanent and seasonal water
0,70,160
70
Other land cover (incl. afforestation)
255,255,255
AnnualChange_<YYYY> — uint8, identical legend for every year 1990–2025
Value
Label
RGB
1
Undisturbed tropical moist forest
0,90,0
2
Degraded tropical moist forest
100,155,35
3
Deforested land
255,135,15
4
Tropical moist forest regrowth
210,250,60
5
Permanent and seasonal water
0,140,190
6
Other land cover
255,255,255
UndisturbedDegradedForest — uint8
Value
Label
RGB
1
Undisturbed tropical moist forest
0,90,0
2
Degraded tropical moist forest
100,155,35
3
Other land cover
255,255,255
DeforestationYear / DegradationYear — uint16, discrete years 1982–2025
rendered as a colour ramp (40,146,199)→(80,8,0); 0/NoData = never
deforested/degraded.
TransitionMap_Subtypes — uint8, 39 discrete classes (click to expand)
Value
Label
RGB
10
Undisturbed tropical moist forest
0,80,0
11
Bamboo-dominated forest
10,100,10
12
Undisturbed mangrove
10,90,60
21
Degraded forest, short-duration (started before 2016)
Degraded forest, 2/3 periods (last started before 2016)
100,160,40
26
Degraded forest, 2/3 periods (last started 2016–2024)
120,170,40
Scope — what's included
These 6 products are the complete set JRC distributes for download per the v1
Data Users Guide. The TMF dataset also defines several layers that are only
available in Google Earth Engine (not via the tile download endpoint), so they
are not mirrored here: Deforestation-after-degradation year, Duration,
Number of annual disruption observations, Intensity, Areas of deforestation
after degradation/regrowth, and the metadata layers StartMonitoringPeriod and
ValidObs.
Deferred: 10 m Hybrid Transition Map (beta)
JRC also publishes a Hybrid Transition Map at 10 m for 1990–2022,
combining the updated 2022 Landsat (30 m) TMF map with Sentinel-2 disturbance
detections for 2022 (sharper degraded-forest delineation and finer linear
features such as logging roads), plus a companion map of the detection source
per pixel. It is distributed via FTP/GEE.
This product is intentionally not mirrored here because:
It is a beta. JRC plans an enhanced beta (back-processing the 2016–2021
Sentinel-2 archive) and then a final version delivered with an accuracy
assessment — i.e. the values will change.
For EUDR / compliance use, the basis should be the stable, canonical 30 m
products above (notably AnnualChange and DeforestationYear), not a
preview that will be revised.
It is a different resolution (10 m) and temporal extent (1990–2022),
so it does not belong in this 30 m v1_2025 layout; it would warrant its own
clearly-labelled beta release.
We intend to revisit it once JRC ships the non-beta version.
For analysis you can skip GDAL entirely. We publish a virtual
icechunk datacube beside the COGs at
epoch/jrc-tmf/v1_2025/icechunk/ — byte-range references into the same COGs, no
pixel data copied. Reads go through zarr + obstore over HTTP range requests
(typically faster than the GDAL path, and installs without GDAL).
It opens as an xarray DataTree with one group per published tile. (Per-tile,
not one global array: the 10° tiles are 512-blocked but their pixel dimensions
aren't 512-multiples and differ tile-to-tile, so they can't be losslessly
stitched into a single Zarr array — but every tile is a clean cube, and
AnnualChange's 36 years stack into a real (time, lat, lon) axis.)
Discover tiles for an AOI in the STAC parquet (above), open those groups, and —
if you want a single stitched array — xr.combine_by_coords them at read time
(works fine on decoded data, still GDAL-free):
Provenance & modifications
Source: JRC TMF v1.2025 (https://forobs.jrc.ec.europa.eu/TMF/data),
downloaded per-tile from the JRC download.py distribution CGI.
Modifications (packaging only): each tile is re-encoded from a non-COG
tiled GeoTIFF into a valid COG — internal overviews added (nearest-neighbour,
since every product is categorical/discrete), IFD order corrected, ZSTD
compression. No resampling, reprojection, or value change. South-up tiles,
if any, are flipped to north-up (georeferencing adjusted; values unchanged).
License: Copernicus / JRC open data. Cite Vancutsem et al. 2021
(https://doi.org/10.1126/sciadv.abe1603); state the source and that the files
were re-packaged by Epoch, with no implication of EU endorsement.
31
Old forest regrowth (disturbed before 2006)
185,200,60
32
Young forest regrowth (disturbed 2006–2015)
200,230,60
33
Very young forest regrowth (disturbed 2016–2022)
210,250,60
41
Deforestation started before 2015
255,240,160
42
Deforestation started 2015–2022
255,150,8
51
Deforestation started 2023
250,60,10
52
Deforestation started 2024
170,80,10
53
Deforestation started 2025
140,100,30
54
Degradation started 2025
140,120,60
61
Degraded mangrove (started before 2016)
40,100,50
62
Mangrove recently degraded (2016–2024)
80,150,0
63
Mangrove regrowing (≥10 yr, 2016–2025)
200,230,60
64
Mangrove regrowing (≥3 yr, 2023–2025)
210,250,60
65
Mangrove deforested (started before 2015)
255,230,110
66
Mangrove deforested (started 2016–2022)
255,60,10
67
Mangrove recently disturbed (2023–2025)
155,105,70
71
Permanent water
0,50,150
72
Seasonal water
0,150,200
73
Deforestation to permanent water
0,160,150
74
Deforestation to seasonal water
0,210,210
81
Old plantation
51,99,51
82
Plantation regrowing (disturbed before 2016)
98,161,80
83
Plantation regrowing (disturbed 2016–2022)
188,209,105
84
Conversion to plantation (deforestation before 2015)
255,228,148
85
Conversion to plantation (deforestation 2016–2022)
250,180,150
86
Recent conversion to plantation (2023–2025)
204,163,163
91
Other land cover without afforestation
255,255,255
92
Young afforestation (3–9 yr regrowth)
237,255,215
93
Old afforestation (10–20 yr regrowth)
224,250,157
94
Water converted recently into forest regrowth (≥3 yr)
214,250,188
1stac/<Product>_stac.parquet # geoparquet STAC index per product (discovery)
2v1_2025/<TILE_ID>/DeforestationYear.tif
3v1_2025/<TILE_ID>/DegradationYear.tif
4v1_2025/<TILE_ID>/TransitionMap_MainClasses.tif
5v1_2025/<TILE_ID>/TransitionMap_Subtypes.tif
6v1_2025/<TILE_ID>/UndisturbedDegradedForest.tif
7v1_2025/<TILE_ID>/AnnualChange_<YYYY>.tif # one per year, 1990–2025
8icechunk/v1_2025/ # virtual datacube over the COGs (see Access)
1stac/<Product>_stac.parquet # geoparquet STAC index per product (discovery)
2v1_2025/<TILE_ID>/DeforestationYear.tif
3v1_2025/<TILE_ID>/DegradationYear.tif
4v1_2025/<TILE_ID>/TransitionMap_MainClasses.tif
5v1_2025/<TILE_ID>/TransitionMap_Subtypes.tif
6v1_2025/<TILE_ID>/UndisturbedDegradedForest.tif
7v1_2025/<TILE_ID>/AnnualChange_<YYYY>.tif # one per year, 1990–2025
8icechunk/v1_2025/ # virtual datacube over the COGs (see Access)