Eco-score transport - en

From Open Food Facts wiki
Jump to navigation Jump to search


In January 2021 the eco-score has been launched. The eco-score is a label that indicates the environmental impact of a product. It is based on the lifecycle of ingredients in a product and their relative impact. This impact has been assessed for the agricultural methods used in France.

Although the eco-score is based on France, OFF would like to extend the eco-score to other countries. This involves adding the country specific aspects for:

In this document the logistic aspects are investigated.


The eco-score calculation adds a correction to the base Agribalyse data in order to correct for additional transport. This should correction should favor products, which are produced near to the consumer.

There are two transport corrections that can be taken into account:

  • ingredient transport - transport of individual ingredients to the production location. Is this already accounted for in Agribalyse? Can it be finetuned?
  • product transport - the impact of transport between production location and consumption location.


Before diving into all kind of modelling, we must ask ourselves whether it is worthwhile. We might add all kind of complexities, which have no influence on the end result.

The base Agribalyse data probably have an error of 10% or more, as it is the result of averaging and combining all kinds of data. So if we correct for a transportation impact, it is of no use to add details better than that 10%. We will evaluate this when we start the calculations.

Transport modes

Pour les pays européens, le score est pondéré en fonction du mode de transport utilisé entre le pays d'origine et la France.
Pour les pays en dehors de l'Europe, le mix modal considéré est 100% maritime.

Goods can be transported via road, rail or waterways. The transport modes are described in Eurostat report (2009).

The goods we are interested in (related to food) fall in the following NST/R categories (table 4.6, p66):

  • 0/1 - cereals;
  • 0/2 - potatoes, other fresh/frozen fruits and vegetables;
  • 1/6 - foodstuffs and animal fodder;
  • 1/7 - oil seeds and oleaginous fruits and fats;

We assume that Agribalyse takes care of the environmental impact in producing consumer ready products. This implies we are not interested in the transport of bulk raw products.

NST/R category 1/6 will be the most important category. For this category the most important transport mode is the route (table 4.7 (p67), figure 4.35 (p80)). The rail option is only used for 1% of the transport (I assume this will be the animal fodder part).

What should be the road cutoff distance? This is the distance above which by sea is more advantageous (economically). Eurostat (figure 4.12, p62) gives an average of 200 km for food products. Interestingly, food products prefer the road for longer distances (figure 4.25, p72). It is clear that road is a less used option when going further away (figure 4.13 (p63)).

Cutoff distance

A cutoff distance of 2000km will be used for the moment. However more input on this number is needed. It might be interesting to see for each country, how many extra-country producers there are. And how far thos extra-country producers are away.

Boat type

Various types of boats can be used to do the transportation. The eco-score document list three types and corresponding environmental impact. We implement this as follows:

  • Atlantic - we use this boat type for anything that has to pass over the Atlantic ocean. So this is used for the Americas and west-coast of Africa. An exception is Iceland, Faroer Islands, Ireland and United Kingdom from Europe;
  • Suez - this is used for any destination/origin that has to use the Suez canal;
  • Mediterranean - this is used for any inter Europe transport (Mediterranean, Baltic, North Sea);

It might be that for some destinations the Atlantic and Suez boats are too large. We need more information on some destinations.

Transport routes

La distance entre le pays d'origine et le pays de destination est calculée à partir du centre géographique du pays de départ et celui de la France.
Pour chaque itinéraire ferroviaire ou maritime, 2 trajets en camion sont pris en compte : l'un dans le pays d'origine entre son centre géographique et son lieu d'embarquement le plus proche, l'autre en France entre son lieu de débarquement le plus proche et le centre de la France

We should look at the environmental impact for transporting goods between the production location and the consumption location. If both locations are known we can use the road distance between the two locations to get a good indication.

If these locations are not known, we need to use an estimation based on the information that we do have. The more unformation we have, the better the estimate will be.

No info

Without any additional info, there is not much to estimate. We know that it will be on average half the circumference of the world and probably much less. And this will also imply that the product is transported by sea and/or air. And assume that the product is transported to the Centroid of the country.

Purchase country

If we know the country where the product was bought, we can make two assumptions:

  • product is also produced in the country;
  • product will be consumed in the purchase country;

We can then take an average transportation route of half the size of the country. This will also imply a route by road.

Production country

If in addition to the purchase country, we also know the production country, we can determine the route between both countries. This might involve transport by road, air or sea. Which transport means is used will also depend on the product category.

As we do not know the exact location of production or consumption, we need to use the geographic center of a country as an approximation.

Actual Locations

If either the purchase (consumption) or production locations are known, we can perform a more detailed calculation based on the the two locations and/or geographical centers. Such a calculation will be a low estimate, as we do not take into account the actual distribution network (distribution centres, transport network, purchase places).


Le score transport est intégré au score global du produit sous la forme d'un bonus allant jusqu'à 15 points.

The CO2 impact must be translated to a score from 0 - 100. A score of 100 represents the country in question, i.e. the product did not cross a border. Any other country should be less than 100. A score of 0 represents the worst case, i.e. the largest impact. These scores must be calculated for each origin. These scores will be applied as bonus, so it is assumed that the ACV of the product is the worst case.

The steps involved are:

  • Max-impact - we need a good estimate for the maximum CO2 impact. You would expect that getting something from an island in the Pacific (20.000km away) would have the most impact, but is better than transporting something from Greece to France by truck. We set the maximum impact at the largest distance by maritime mode. This might punish road transport as well. This value will be used to normalise all other impacts. In practice this implies that only the islands in the Pacific will have a score of 0.
  • Transportation Mode impact - when we do not know the mix of transportation modes used between countries, we will assume that the worst mode has been used, i.e. the mode with the worst impact.

Non-mixed score

The formula for the score of an origin for a country is:

  scoreorigin(country) = 100 - max(impactorigin(maritime), impactorigin(road)) / maxall origin(impact(maritime))*100.


  • impactorigin(maritime) - the impact for origin for the maritime transportation mode
  • impactorigin(road) - the impact for origin for the road transportation mode
  • max(impactorigin(maritime), impactorigin(road)) - the maximum impact of the two transportation modes for the origin.
  • maxall origin(impact(maritime)) - the maximum impact of all maritime origins

Mixed logistics

If we have the transportation mix this becomes:

  scoreorigin(country) = 100 - summode=0N fractionorigin(mode) impactorigin(mode) / maxall origin(impact(maritime))*100.


  • impactorigin(mode) - the impact for origin for the transportation mode
  • fractionorigin(mode) - the fractional impact for origin for the transportation mode [percentage]
  • max(impactorigin(maritime), impactorigin(road)) - the maximum impact of the two transportation modes for the origin.
  • maxall origin(impact(maritime)) - the maximum impact of all maritime origins

Country correction

And finally we need to apply a country correction. The lifecycle data is based on France, and especially on the size of France. Any logistics impact should correct for this, i.e. subtract the impact for France and add the impact for a country.

To do this the mean transportation distance for a country will be estimated and the corresponding environmental impact. The impact for France will be subtracted and the impact for the country added. The mean transportation distance is half of the largest distance that can be travelled in a country.

The non-mix formula becomes:

    score(origin, destination) = 100 - (max(impactmaritime(origin,destination), impactroad(origin,destination)) - (impactroad(mean France) - impactroad(mean destination)) / maxall origins(impactmaritime(origin,destination)*100

The consequence of this country correction is that locally produced (in the country) products, may have a higher score than 100. It just reflects that smaller countries have an advantage over France.

As the score is normalised by the maximum impact, any country correction is not seen in the score.


The final bonus should be calculated on the origin of the product and the origin of the ingredients. From the point of the eco-score, the word local used for the country of purchase. So local might imply a large area (France) or a small area (Luxemburg). We might have various cases depending on product and ingredients:

  • local - in this case the product is produced in country of purchase. Also all the ingredients are sourced locally. This implies a score of 100 and a bonus of 15 (?).
  • partially local - the production is in the country of purchase, but one or more ingredients are imported (non-local). The score is now the sum of the weighted score fractions of each ingredient.
  • imported - the producion is in another country. The score is now equal to the score of the country. It is assumed that all ingredients come from the same country.
  • multi-sourced - the production is non-local, i.e. in another country. And the ingredients came from multiple countries. (How to calculate this? Can we view the other countries a percentages?)

The formula presented in the eco-score document needs to be adapted to take the multi-sourced case into account.

scorefinal(purchase, production, origin) = score(purchase, production) Σingredient=1N score(ingredient,production) fraction(ingredient) / 100
  • scorefinal depends on the purchase location, the production location and the origin location of each ingredient;
  • score(purchase, production) depends on the production and purchase location. If both are the same this is 100, otherwise it should be lower than 100;
  • ingredient is an ingredient in the product. So the sum iterates over all ingredients comprised in a product;
  • score(ingredient, production) is the score for getting the ingredient to the production location. If both are the same country this will be 100;
  • fraction(ingredient) is the fraction of the ingredient in the product. The sum of all fractions should be 1;

Calculation method

The entire calculation method for the logistics impact is put into a spreadsheet: here. The details of each worksheet of this spreadsheet will be explained below. This spreadsheet format should allow to make changes easier and see the impact of these changes.

The spreadsheet is setup is such a way, that the environmental impact of logistics can be calculated for any territory or country in the world.

Centroid worksheet

The centroid sheet lists the centroid for each country in the world. With OSM the closest town has been identified. In order to be able to calculate distances by road through OpenStreetMap, we need identify the closest town to this centroid. (Be careful with the place name recognition in OSM, sometimes the wrong location is given.)

The centroid cities were calculated based on population and road distances (see here) or were taken from here. The countries in this list have been used as a starting point. Some centroids have been recalculated based on largest cities and population sizes.

The worksheet contains the following rows and columns.

- rows The rows represent areas for the origin or destination using a specific port of entry into that area. An area can be a country or part of the country. A part of the country can be anything that makes sense and refines the logistics impact.

All these rows should repeated on other spreadsheets both as rows and as columns.

- columns

  1. area name: the name of the country or smaller area, such as a specific island;
  2. centroid: the latitude and longitude of the (geographic) centroid;
  3. centroid name: the geographic name that corresponds to the centroid, according to Open Street Map;
  4. sea port: the name of the main container sea port (as a link to the sea ports worksheet). The sea port does not have to lie inside the area (land-locked countries);
  5. sea covered: the sea covered by the port. An area can have multiple sea ports, one for each sea covered (Pacific/Atlantic for the UAS, Atlantic/Mediterranean for France, etc.);
  6. distance: the distance (in km) between the sea port and the centroid of the area;
  7. OSM-link: the link to the directions on Open Street Map, from which the distance was taken.

Container port worksheet

For each of the area's on the Centroid-worksheet a row and a column is created in the Container port worksheet. In addition two columns that document a port have been added: one column is a link the wikipedia-page of the port and one column is a link to the port authority of the port.

Each cell that links to ports shows the maritime distance between the two ports, as calculated by Searates (black).

Ports that are not listed in Searates (or could not be found) have been taken from Shiptraffic. This requires conversion from nautical miles to kilometres (light green 1)

Some (landlocked) countries share ports. In that case the distances are linked, either between rows of the same port (light red 1) or between columns (orange).

There are many maritime routes that use the same sea passages, such as the Gibraltar straits. Instead of looking up all the routes in Searates, it is easier to look up the distances to a port on the strait and just copy the corresponding data. Only for the water basin behind the strait we need to do the lookup. The distances obtained via these strait ports have been coloured.

This can be done for:

  • Baltic sea <-> North Sea : Copenhagen port (cornflower blue)
  • Black sea <-> Mediterranean : Istanbul port (cyan)
  • Adriatic sea <-> Mediterranean / Durres port (cornflower blue)
  • Mediterranean <-> Atlantic Ocean / Algeciras (Gibraltar) (cyan)
  • Mediterranean <-> Red Sea / Damietta (purple)
  • Great Ocean <-> Atlantic Ocean / Panama (green)

For some ports there are some exceptions to the rules described above:

  • Faroer (Tórshavn) - is only supplied through Reykjavik and Helsingor (Denmark). The distances are calculated by the distance to Copenhagen plus 1870 km.
  • Svalbard (Longyearbyen) - is only supplied through Tromsø (Norway. The distances are calculated by the distance to Oslo + 1695 nautical miles.

Maritime Route matrix worksheet

This worksheet contains the links between all countries that have been listed on the first worksheet. Each cell describes the environmental impact of maritime transport between two countries. The environmental impact is calculated by the route between origin and destination centroid, via the closest seaport. From and to the seaport the road cost is used. The maritime cost depends on the route taken by the boats. We distinguish multiple routes:

Transportation mode Impact Explanation
Road 79g for transport by truck
Coasters 13g for sea transport on medium distances
Atlantic 11g for transport across the Atlantic
Via suez canal 7g for very large container transport

Road Route matrix worksheet

This worksheet contains the impact of transportation between the countries by road. Each cell contains the impact between two countries. The distances are based on the centroids of the countries, and the distances of the directions calculated by OpenStreetMap. Routes that contain a trip by sea are taken from Google Maps.

Each distance is multiplied by the environmental impact per km.

The route distances are calculated up to a distance of 2000 km. If the distance is larger than that, a route by sea is preferred (and has less impact). This is an arbitrary number for the moment.

Score matrix worksheet

The score matrix contains the (bonus) scores based on the two route worksheets. If a route is available by road and by sea, the road one is preferred and used in the calculation.

The impact is normalised in order to calculate the score.

Export matrix worksheet

This worksheet shows the scores as used by OFF and are setup such that they can easily be imported. Instead of the country names the ISO 3166-2 codes are used. Rows and columns are alphabetically sorted on these codes. Each cell contains a formula to extract the data from the Score matrix worksheet.

Adding a new country can be done by:

  • inserting a column in the right (alphabetical) location;
  • linking the header of the new column to the corresponding row header;
  • copying a formula from an existing cell to all the rows of the new column;

Update Procedure

The spreadsheet has been designed with updating in mind. Several type of updates might occur. It is described what should be done in each case.

  1. Data
  2. New origin territory

Origin territories are encoded as rows. A new territory needs to be inserted in EVERY worksheet. Start with the centroid worksheet. Find the right row where the new territory should be put underneath. The right row is the country where the territory belongs to. After this is done for all worksheets, the data can be filled in. This has been described above.

Note that if an origin territory has multiple sea ports, then a separate row for each port has to be created.

  1. New purchase territory

Purchase territories are encoded as columns.


the calculations and spreadsheet described above should be checked against the values publish by Eco-score. This can be achieved by recalculating the values for France.

The second take at the calculations can be seen in the graph below:

eco-score France check

The graph shows that the calculation roughly follows what has been presented by Eco-score. There are some small differences:

  • The eco-score seems a bit more positive, which can be due to addition of rail in the modal mix;
  • For may countries a population based centroid was used, which sometimes increases the distance (countries in the South) and sometimes decreases the distance (countries in the north);
  • No road cutoff distance was used. Above this cutoff distance transport by sea is preferred. This introduces worse values at the lower end. By adding a cutoff distance of 2000km, these values fall in line.


The calculation method used by Eco-score to assess and add the environmental impact of logistics to the base Agribalyse score is still in its infancy. Undoubtedly it will be improved and extended in the future. I list some thoughts here, where I see issues.

Base calculation method

The calculation method used for the Agribalyse normalisation and bonus/malus system makes it difficult to understand. Ideally the Agribalyse CO values and the transport malus are comparable. This is not the case at the moment. So what does a transport malus actually mean? I would prefer a method where the normalisation is done after applying all the bonus/malus. So that in effect the Agribalyse values are directly adapted by the bonus/malus application.

It is possible to use a percentage bonus/malus system, where the percentages are applied directly to the ACV-numbers. I tried to map the eco-score approach against the percentages approach. Checkout the spreadsheet (still needs more work, eco-score allows to downgrade a product with no ACV). Thus you can map a malus against a percentage, in order to get things going.

If more information is available, it is possible to apply a more detailed change to the ACV, instead of a percentage. For instance for the impact of transport. For this it is possible to calculate the impact in gram CO2. And this can directly be linked to the listed CO2 impact of the ACV. Unfortunately the CO2 can not be derived from the PEF, so really the original data should be adapted (I have seen fractions of 10-40%).


In order to extend the transport malus to other countries, I needed to know the actual calculation methods. These are not yet public. I hope everything will be be public and in the oublic domain.


The eco-score calculation should be extendable. A public procedure should be setup, which allows to do this. This procedue could be similar to what is used in open software projects.

Reversal of evidence

The current calculation method makes a lot of assumptions about labels, logistics, etc. Ideally it should not be eco-score that makes the assumptions, but the producers that provide the data. This should reduce any greewashing allegations.

Country centroids

The centroids used for countries can be improved in several ways:

  • population centroids - instead of the geographic centroids we need a center based on the population distribution, so that we can take better into account where the goods will flow (link). This is especially useful for countries we geographically unevenly distributed populations.
  • very large countries (Australia, Canada, Chili) - the geographic centroids cover an area which is just to large, we need to look at the territories within the country seperately. This is also true for France if the DOM's are taken into account;

Maritime container seaports

For each country the most appropriate container port must be identified. The following issues complicate things:

  • Some countries have multiple ports. Are different ports used for different origins?
  • Landlocked countries (Burundi, Switzerland, Bhutan): where do they get their maritime goods from and how? We need to look at each country individually;

Optimally we need a local logistics expert for each country, which can fill in the details. We can offer the hooks so that in the future better values can be easily incorporated.

Logistics modal mix

Many assumptions need to be made on the modal mix. Without any additional info we only assume road and sea. Sometimes a product gives an indication of the modal mix, by saying it has been flown in. But clearly more transparancy is needed.

Logistics environmental impact

For the environmental impact of logistics we now narrowly look at CO2. We should also look at all other effects of logistics, i.e. other pollutants, impact on space, vehicles, etc.

Intra-country logistics

The lifecycle and the eco-score corrections are based on averages for each country. It would be even better to take into account the positive effects of buying really locally produced products. This can be achieved if additional information on producer and buyer is taken into account. Instead of the average assumptions for a country, the actual distance between producer and buyer can be used. (This does not take into account the distribution chain of a large supermarket chain)

In order to achieve this we can adapt the country correction:

  1. always (also in France) subtract the mean distance (and impact) for France
  2. calculate the distance between producer and buyer. This can be based on the producer code and the purchase location. OSM might be used for this calculation.
  3. calculate the environmental impact
  4. calculate the more exact score

Bonus or malus?

Why is the score defined as a bonus? The lifecycle analysis of a product is based on the logistics impact of transport in France. A bonus would be logic if a product is sourced even more locally, i.e. in the geographic neighbourhood of the purchase location. If you use a product produced outside France it should imply a malus.

Thus a bonus of 0, should imply no distance larger than the mean distance, a larger distance would imply a malus and less distance a bonus.

Olives niçoises

The olives niçoises is a small black olive variety that comes from the region around Nice (or so they say). They are my preferred ones. What is the transport bonus for these olives. Well if you liven in France there a bonus score of 100, wherever you live in France, even if you live 1200 km away. However if you live 10km away in Monaco, the score is 62. The reason for this difference is the fact that the size of the respective countries are not taken into account. A Country correction is needed.

Impossible maritime routes

The maritime distances have been calculated with Searates. This site also shows any available shipping companies or the corresponding route. For many of the distances there is no available shipper. Probably one has to ship via another port to each the required destination. This will make the shipping distances longer. And it requires more work to find the shortest (cheapest) shipping route.

Best or worst estimate

There are two choices in calculating the transportation impact: the best estimate and the worst estimate. The best estimate uses the distances between country centroids, so that the calculation is valid for the majority of users. The worst estimate uses the longest distance between the outskirts of a country. In fact this worst calculation is now used for the calculation of the EU.

The rationale behind the worst estimate, is that we would like the producers to give more information on their supply chain (where is the factory? where are the ingredients come from?, etc), so that there is more transparency.

Individualised ecoscores

The Ecoscore is in some extent an individualised score: it depends on the location of the consumer. In the official explanation this fact is hidden, but it is based on the assumption that the consumers lives/consumes in France.


OFF could add some minor adjustments to the transport score calculation, in order to better reflect the locally produced theme. These adjustments follow the eco-score calculation approach, but add some details.

Production countries

The eco-score does not seem to take into account that the production of a product might take place in another country. Instead of looking at the origin of the ingredients, we can now assume that all the ingredients come from the production country.

Country correction

Each country should have a standard transport score, which depends on the country size. The smallest country size should have a transport score of 100. Scaling should be based on country size and normalisation size (2000km). The centroid calculations give a good indication for country sizes.

Smaller Normalisation

The normalisation is currently based on 2000km. This is very large. The consequence is that even large distances get a favourable bonus. And it is not possible to distinguish between small and slightly larger countries. A normalisation of 1000km would given better results. It would also allow to distinguish the bonus between French regions (+14) and departments (+15).

Transport malus

The current transport corrections only allow to add a bonus. However this bonus is calculated using transport distance (currently 2000km by road). This implies that some destinations might result in negative scores. These are no cutoff to a bonus of zero. The negative scores could be retained and applied.

For example this water imported from Fiji will have a malus of 67.

Support territories

The eco-score calculation is based on countries. As some countries are very big, any transport in such a country might be seen as greenwashing. Also it makes comparison between countries impossible.

Instead of using countries as smallest entity, one could use territories of a country as smallest entity. For France this would mean the Régions, for Germany the Länder, etc. If the purchase and production location fall within a single territory, the bonus score would be 100. Any transport between territories would imply a lower bonus score. This might be offered as an option to a user, who wants to be more transportation conscious.

If both the purchase and production location are not known, we could fall back to the country based eco-score. If either the purchase or the production location is unknown, we can make the assumption that the it is in the most populous territory and calculate the eco-score based on this.

This idea can be explored a bit further. The first step is that we need to know the territory of the user. Then we have the following three situations:

  1. Producer in the same territory - this will result in a score of 100 and thus a maximum bonus;
  2. Producer in another territory - the distance between the territory centroids determines the distance used in the score calculation;
  3. Producer in another country - the centroid distance between the consumer territory and the centroid of the country is added to the standard calculation;

A sample calculation with the Olives Niçoises (producer in department Alpes-Maritimes, région PACA):

  • Standard:
    • consumer in France: score = 100 (0 km);
    • consumer in Germany: score = 62 (769 km);
  • Territory:
    • consumer in région PACA: score = 100 (0 km);
    • consumer in région Hauts de France: score = 52 (966 km);
    • consumer in department Somme: score = 45 (1110 km), using Alpes-Maritimes;
    • consumer in Germany: score = 25 (722+769 km)
    • consumer in Bavaria: score = 7 (722+769+366 km)

The effect of the location of the consumer can be well seen.


It also possible to look at the various transportation distances outside the context of the ecoscore.