Article
kcal and kJ: how to read the energy of a food correctly
On a label as in the FSVO database, energy appears twice: in kilojoules and in kilocalories. One quantity, two units, one fixed conversion factor. Here is what each number measures, where it comes from, and why 2,000 kcal is not your personal requirement.

Two units for one quantity
The energy in a food is a physical quantity, and it is reported in two units. The kilojoule (kJ) is the official unit of the international system, and labelling rules put it first. The kilocalorie (kcal) is the everyday unit, the one ordinary conversation simply calls a “calorie”. The prefix “kilo” means a thousand: one kilocalorie equals 1,000 calories in the strict physical sense.
Moving between the two units uses a fixed factor: 1 kcal = 4.184 kJ. The other way round, 1 kJ is about 0.239 kcal. Nothing about the food itself changes: only the reading scale does, much as with centimetres and inches. That is why the FSVO database, and every page on this site, shows both numbers side by side, always per 100 g.
Why kcal × 4.184 does not exactly match the kJ shown
Try the conversion on four foods from the database: the two columns do not line up digit for digit.
| Food | kcal / 100 g | kJ / 100 g (database) | kcal × 4.184 |
|---|---|---|---|
| Olive oil | 900 | 3,700 | 3,766 |
| Butter, salted | 732 | 3,010 | 3,063 |
| Apple, fresh | 52 | 222 | 218 |
| Cucumber, raw | 12 | 49 | 50 |
The gap is not a mistake: in the official source the kcal figure and the kJ figure are each calculated and then rounded on their own. Across these four examples the observed ratio runs from about 4.08 to 4.27. So the reading rule is simple: compare kcal with kcal and kJ with kJ, rather than rebuilding one unit from the other. The food comparison tool puts two entries side by side in both units, and the handling of rounding is set out in the site methodology.
Where a food’s energy comes from
Three groups of components carry the energy: fat, carbohydrates (starch and sugars) and protein. Water and minerals contribute none. Gram for gram, fat is the most energy-dense of the three, and that is what gives the ranking its shape.
Olive oil is fat and almost nothing else (100 g per 100 g) and shows 900 kcal (3,700 kJ). Salted butter, at 80.7 g of fat, comes down to 732 kcal (3,010 kJ). At the other end, raw cucumber holds 96.3 g of water per 100 g and shows only 12 kcal (49 kJ); fresh apple, with 85.4 g of water, 52 kcal (222 kJ). To read one of the three components food by food, the protein ranking orders contents from highest to lowest.
The extremes of the database: 900 kcal and 0 kcal
Across the 1,216 generic foods in the database, the energy summit is a plateau rather than a peak: cocoa butter, peanut oil, olive oil, safflower oil, hempseed oil and rapeseed oil all show 900 kcal per 100 g. They all sit in the same family, “Fats and oils”: once the fat content approaches 100 g, the figure reaches its ceiling.
At the bottom of the scale, several foods sit at 0 kcal: drinking water (Swiss average) and the table salts (iodised, iodised and fluoridated, Himalayan, fleur de sel). They contain no fat, no carbohydrates and no protein. Between those two bounds lie the 19 families of the database: the full food list walks through them, and the nutrient rankings sort them component by component.
“2,000 kcal”: a labelling benchmark, not a requirement
When a Swiss label shows “% of reference values”, the energy line refers to 8,400 kJ / 2,000 kcal a day: the nutrient reference value for a typical adult, set in annex 10 of the Swiss food information ordinance. The conversion factor and its rounding are visible right there: 2,000 × 4.184 = 8,368 kJ, published as 8,400.
That figure is a common denominator, not a personal target: it takes no account of age, height, weight or activity level. This site uses it to work out the “% NRV” of a portion, so that any two pages stay comparable with each other. For an order of magnitude that matches your own situation, the needs calculator applies a formula it displays in full, with the calculation run in your browser.
