LearnAll blog articles

EUDR

EUDR GeoJSON file size limit: the 25,000,000-byte ceiling

The EUDR size limit that bites is on the assembled declaration, not your upload: 25,000,000 bytes of geolocation, plus commodity and producer ceilings.

Hundreds of small farm plots traced as boundaries and gathered along a single route toward a European port

The size ceiling worth planning around isn’t on the GeoJSON file you upload. It’s on the finished declaration: the geolocation data in an assembled EUDR declaration is capped at 25,000,000 bytes, and the same declaration is separately capped at 100 commodities, 1,000 producers per commodity and 10,000 producers per declaration.

That distinction is the whole problem. Every source file you started from can be a comfortable size, pass every format check, and still overflow the statement they get assembled into. The number that decides your fate is the one at the end of the process, and most people only measure the one at the beginning.

These figures come from the European Commission’s technical materials for the EUDR Information System — the EUDR GeoJSON File Description v1.5 and the May 2026 Operator API Reference v1.0 (API V3), both published through the EUDR Information System page. The underlying geolocation duty itself sits in Regulation (EU) 2023/1115 (EUDR).

What exactly is capped?

Six documented ceilings apply to an assembled declaration, not to any single file:

Ceiling Limit Where it comes from
Geolocation data in the assembled declaration 25,000,000 bytes EUDR GeoJSON File Description v1.5
Commodities per declaration 100 Operator API Reference v1.0 (API V3)
Producers per commodity 1,000 Operator API Reference v1.0 (API V3)
Producers per declaration 10,000 Operator API Reference v1.0 (API V3)
Scientific-name and common-name pairs per commodity 500 Operator API Reference v1.0 (API V3)
Grouping references 2,000 Operator API Reference v1.0 (API V3)
Swipe to see all four ceilings →
Four ceilings on one assembled EUDR declaration: 25,000,000 decimal bytes of geolocation data, 100 commodities per declaration, 1,000 producers per commodity, and 10,000 producers per declaration
Every figure here is cited above. Staying under them is a format result, not acceptance and not a compliance verdict.

If a bundling job is going to fail, it usually fails on the byte ceiling or on producer counts, and it fails at assembly time — after everything upstream looked fine.

Is 25,000,000 bytes the same as “25 MB” on my computer?

Not necessarily, and the gap is big enough to matter. The ceiling is a plain decimal count: twenty-five million bytes. Some file managers report sizes in units of 1,048,576 bytes while still writing the letters “MB” on screen. A file those tools call 24.5 MB is about 25.7 million bytes — already over.

So measure the byte count, not the rounded label. On macOS or Linux, wc -c yourfile.geojson gives you the number the ceiling is actually talking about. In a spreadsheet or a file listing, look for the raw byte figure rather than the friendly one.

Two more things about that number. It covers the geolocation data in the assembled declaration, so it is not a promise about the total size of everything else you send. And it is a ceiling, not a target — there is no benefit to filling it.

What actually consumes the budget?

Almost all of it is coordinates, and the two biggest drivers are both consequences of rules you cannot opt out of.

Polygons, because the law requires them above four hectares. Article 2(28) of Regulation (EU) 2023/1115 (EUDR) defines geolocation as latitude and longitude with at least six decimal digits, and for plots over four hectares used to produce a relevant commodity other than cattle, it requires polygons with enough points to describe each plot’s perimeter. A single point is one coordinate pair. A traced boundary can be hundreds. That is a difference of two orders of magnitude per production place, and it is not optional for a large plot.

Producer counts, because smallholder supply chains are made of many small parties. Ten thousand producers in one declaration is a generous ceiling until you are consolidating a cooperative’s membership, at which point it becomes the wall you meet first — often at the same time as the byte ceiling.

Then the quieter drivers, which are the ones you can safely do something about:

  • Coordinate digits past the sixth. Article 2(28) sets six decimal digits as the floor. The current API V3 contract truncates coordinates to six decimals under business rule GEO-CORD-10, so digits seven through fourteen are bytes you pay for and the Information System discards. A twelve-decimal export can be a third larger than the same geometry at six with nothing lost.
  • Pretty-printing. Indentation and line breaks are real bytes. They help a human read a file and they help nobody else.
  • Repeated properties. Every feature carries its own property block. Consistency is good; verbose duplication is just weight.

Trimming digits and whitespace changes no vertex and moves no boundary. You can check what a file looks like after six-decimal truncation — and whether any geometry collapses when it happens — with Clearlane’s free EUDR GeoJSON validator and repair tool. It runs in your browser and the file never leaves it.

I’m over the ceiling. What are my options?

In the order you should try them.

1. Cut the digits and the whitespace. Free, reversible, and it changes nothing about what you are declaring. Do this before considering anything below.

2. Split the work across more than one declaration. If you have more production places than a single statement can carry, they belong in more than one statement. This is the honest answer, and usually the right one.

Be careful about what grouping does here, because it’s the thing most often misread as a workaround. The amended Information System rules let a user group declarations, but the eligible set is narrow: declarations previously submitted by that same Information System user, or submitted for the same operator by its authorised representative. Grouping is not a general way to fold supplier-provided upstream references into a new filing. Holding a supplier’s reference number does not make it groupable.

3. Reduce vertex counts — with your eyes open. Simplifying a boundary means moving it. The result is a different claim about where the plot is, and only you can decide whether the simplified shape is still an accurate description of the perimeter. A tool can do the arithmetic; it cannot take responsibility for the answer. Clearlane records meaning-preserving repairs — the ones where no vertex moves — separately from anything that changes a shape, precisely so the difference stays visible.

What not to do: downgrade a polygon to a point. It is the most tempting way to shed bytes and the one that turns a size problem into a false statement. A Point feature with no Area property is not read as “size unknown” — the EUDR system treats it as four hectares. So swapping a 40-hectare polygon for a point does not say “we didn’t measure it”. It says the plot is four hectares, which is not true. The four-hectare threshold is a rule about the plot, not a budget lever; Clearlane’s guide to the EUDR four hectare rule covers the point-versus-polygon boundary in detail.

Does hitting the limit mean my file is wrong?

No — and this is worth separating clearly, because the two failures need different responses.

A validation error means the file breaks a stated format rule: a ring that doesn’t close, a coordinate pair the wrong way round, a missing production country. There is a correct fix for each one, and the EUDR GeoJSON validation error guide walks through them.

A size or count ceiling means the file is fine and there is simply too much of it for one declaration. Nothing is broken. The response is structural — split the work, or trim what is genuinely surplus — not corrective.

Treating the second as though it were the first is how people end up deleting plots or flattening geometry to make a number go down. That fixes the wrong problem.

When should I be checking this?

Before assembly, not after. The whole difficulty of this ceiling is that it is invisible until the last step, so the useful habit is to estimate it early: take your per-plot byte cost, multiply by the number of production places heading into one declaration, and find out in week one whether you are building something that fits.

It is also worth knowing that submission is not a single moment you can watch for a size error. Under Commission Implementing Regulation (EU) 2026/1565, the Information System makes the declaration’s UUID available first and releases the reference and verification numbers only after automated risk profiling concludes. You want data problems found well before you are in that lifecycle, not during it.

What staying under the ceiling doesn’t prove

A declaration that fits is a declaration that fits. That’s all it is.

It doesn’t mean the EUDR Information System has accepted anything, and it is not a legal or compliance verdict. It doesn’t show the goods are deforestation-free or that they were produced in accordance with the relevant legislation of the country of production. It doesn’t complete your risk assessment or any mitigation that assessment calls for.

The operator stays responsible for the full due diligence assessment and for the statement submitted to the authority.

Check the file before it becomes a declaration

If you have a file in front of you, run it through the free EUDR GeoJSON validator and repair tool — it checks structure, coordinates, geometry and production-country data against the same cited rule profile, simulates the six-decimal truncation so you can see what survives it, plots the results on a map, and hands back a repaired file. No account, no upload; the file stays in your browser.

Clearlane prepares and validates the data. It does not file to the EUDR Information System or any registry on your behalf.

This article is educational guidance, not legal advice or a compliance verdict.