Hi,
It would be nice to get some clarification on this, because I couldn’t see any notification of this significant change in the data packing.
From the 2026-10-20 06z cycle — the first cycle published at 0.1° — the IFS open data packs most fields with fewer bits per value, in the 0.25° files and the new 0.1° files alike; 2 m temperature went from 12 bits (0.031 K step) to 9 bits (0.25 K step). The last cycle with the old packing is 2026-10-20 00z.
Per-field change
40 of the 52 fields published on both dates lost precision, by 1 to 7 bits per value; 12 are unchanged and 7 are new. The 0.1° files, which start with the same cycle, carry exactly the same bits per value as the new 0.25° files in every field.
| Field | Name | Level | Units | Bits per value, before → after | Quantisation step, before → after |
|---|---|---|---|---|---|
100u |
100 metre U wind component | surface | m s⁻¹ | 16 → 11 | 0.00195 → 0.0312 |
100v |
100 metre V wind component | surface | m s⁻¹ | 16 → 11 | 0.00391 → 0.0312 |
10fg |
Maximum 10 metre wind gust since previous post-processing | surface | m s⁻¹ | 16 → 10 | 0.000977 → 0.0625 (6 h) |
10fg3 |
Maximum 10 metre wind gust in the last 3 hours | surface | m s⁻¹ | 16 → 10 | 0.00195 → 0.0625 |
10u |
10 metre U wind component | surface | m s⁻¹ | 12 → 11 | 0.0312 → 0.0312 |
10v |
10 metre V wind component | surface | m s⁻¹ | 12 → 11 | 0.0312 → 0.0312 |
2d |
2 metre dewpoint temperature | surface | K | 12 → 9 | 0.0312 → 0.25 |
2t |
2 metre temperature | surface | K | 12 → 9 | 0.0312 → 0.25 |
asn |
Snow albedo | surface | 0–1 | 8 (unchanged) | 0.00195 → 0.00195 |
cp |
Convective precipitation | surface | m | new → 12 | new → 0.000122 |
ewss |
Time-integrated eastward turbulent surface stress | surface | N m⁻² s | 12 (unchanged) | 2,048 → 2,048 |
hcc |
High cloud cover | surface | 0–1 | new → 7 | new → 0.0156 |
lcc |
Low cloud cover | surface | 0–1 | new → 7 | new → 0.0156 |
lsm |
Land-sea mask | surface | 0–1 | 8 (unchanged) | 0.00781 → 0.00781 |
mcc |
Medium cloud cover | surface | 0–1 | new → 7 | new → 0.0156 |
mn2t3 |
Minimum temperature at 2 metres in the last 3 hours | surface | K | 12 → 9 | 0.0312 → 0.25 |
msl |
Mean sea level pressure | surface | Pa | 12 (unchanged) | 4 → 4 |
mucape |
Most-unstable CAPE | surface | J kg⁻¹ | 16 → 10 | 0.125 → 16 |
mx2t3 |
Maximum temperature at 2 metres in the last 3 hours | surface | K | 12 → 9 | 0.0312 → 0.25 |
nsss |
Time-integrated northward turbulent surface stress | surface | N m⁻² s | 12 (unchanged) | 2,048 → 2,048 |
ptype |
Precipitation type | surface | (Code table 4.201) | 16 (unchanged) | 0.000244 → 0.000244 |
ro |
Runoff | surface | m | 12 → 11 | 0.000122 → 0.000244 |
rsn |
Snow density | surface | kg m⁻³ | 16 → 9 | 0.00781 → 1 |
sd |
Snow depth | surface | m of water equivalent | 16 → 9 | 0.000244 → 0.0312 |
sdor |
Standard deviation of sub-gridscale orography | surface | m | 16 (unchanged) | 0.0312 → 0.0312 (0 h) |
sf |
Snowfall | surface | m of water equivalent | 16 → 11 | 7.63×10⁻⁶ → 0.000244 |
sithick |
Sea ice thickness | surface | m | 16 → 10 | 0.000122 → 0.00781 |
skt |
Skin temperature | surface | K | 12 → 9 | 0.0312 → 0.25 |
slor |
Slope of sub-gridscale orography | surface | Numeric | 16 (unchanged) | 3.81×10⁻⁶ → 3.81×10⁻⁶ (0 h) |
sp |
Surface pressure | surface | Pa | 12 (unchanged) | 16 → 16 |
ssr |
Surface net short-wave (solar) radiation | surface | J m⁻² | 16 → 10 | 4,096 → 262,144 |
ssrd |
Surface short-wave (solar) radiation downwards | surface | J m⁻² | 16 → 10 | 4,096 → 262,144 |
str |
Surface net long-wave (thermal) radiation | surface | J m⁻² | 16 → 10 | 2,048 → 131,072 |
strd |
Surface long-wave (thermal) radiation downwards | surface | J m⁻² | 16 → 10 | 4,096 → 262,144 |
sve |
Eastward surface sea water velocity | surface | m s⁻¹ | 16 → 11 | 6.1×10⁻⁵ → 0.00195 |
svn |
Northward surface sea water velocity | surface | m s⁻¹ | 16 → 11 | 0.000122 → 0.00391 |
tcc |
Total cloud cover | surface | 0–1 | 8 → 7 | 0.00781 → 0.0156 |
tciw |
Total column cloud ice water | surface | kg m⁻² | new → 12 | new → 0.000488 |
tclw |
Total column cloud liquid water | surface | kg m⁻² | new → 12 | new → 0.000488 |
tcrw |
Total column rain water | surface | kg m⁻² | new → 12 | new → 0.00195 |
tcw |
Total column water | surface | kg m⁻² | 12 → 9 | 0.0312 → 0.25 |
tcwv |
Total column vertically-integrated water vapour | surface | kg m⁻² | 12 → 9 | 0.0312 → 0.25 |
tp |
Total precipitation | surface | m | 16 → 12 | 7.63×10⁻⁶ → 0.000244 |
tprate |
Total precipitation rate | surface | kg m⁻² s⁻¹ | 16 → 12 | 2.38×10⁻⁷ → 3.81×10⁻⁶ |
ttr |
Top net long-wave (thermal) radiation | surface | J m⁻² | 16 → 10 | 2,048 → 131,072 |
z |
Geopotential | surface | m² s⁻² | 16 (unchanged) | 1 → 1 (0 h) |
zos |
Sea surface height | surface | m | 16 → 10 | 6.1×10⁻⁵ → 0.00391 |
sot |
Soil temperature | soil, layers 1–4 | K | 12 → 9 | 0.0312 → 0.25 |
vsw |
Volumetric soil moisture | soil, layers 1–4 | m³ m⁻³ | 12 → 9 | 0.000244 → 0.00195 |
d |
Divergence | pressure, 14 levels | s⁻¹ | 16 → 12 | 1.49×10⁻⁸–5.96×10⁻⁸ → 4.77×10⁻⁷ |
gh |
Geopotential height | pressure, 14 levels | gpm | 12 (unchanged) | 0.25–1 → 0.25–1 |
q |
Specific humidity | pressure, 14 levels | kg kg⁻¹ | 12 → 9 | 4.66×10⁻¹⁰–7.63×10⁻⁶ → 3.73×10⁻⁹–6.1×10⁻⁵ |
r |
Relative humidity | pressure, 14 levels | % | 8 → 7 | 0.0625–1 → 0.125–2 |
t |
Temperature | pressure, 14 levels | K | 12 → 9 | 0.0156–0.0312 → 0.125–0.25 |
u |
U component of wind | pressure, 14 levels | m s⁻¹ | 12 → 11 | 0.0312–0.0625 → 0.0312–0.0625 |
v |
V component of wind | pressure, 14 levels | m s⁻¹ | 12 → 11 | 0.0312–0.0625 → 0.0312–0.0625 |
vo |
Vorticity (relative) | pressure, 14 levels | s⁻¹ | 16 → 12 | 1.49×10⁻⁸–1.19×10⁻⁷ → 2.38×10⁻⁷–9.54×10⁻⁷ |
w |
Vertical velocity | pressure, 14 levels | Pa s⁻¹ | 16 → 12 | 7.63×10⁻⁶–0.000488 → 6.1×10⁻⁵–0.00781 |
z |
Geopotential | pressure, 14 levels | m² s⁻² | 16 (unchanged) | 0.25–0.5 → 0.125–0.5 |
Before = 0.25°, 2026-10-15 12z; after = 0.25° and 0.1°, 2026-10-30 12z. Steps are at 144 h unless marked, and depend on each message’s value range, so a field whose bits fell can keep its step on a given day (10u here). Pressure-level rows give the range over the 14 levels. A whole 0.25° step file shrank from 139–147 MB to 97–103 MB.
What it does downstream
The change matters most where values are differenced or are small: a 3-hourly amount taken from two accumulations now carries one packing step of noise, and shallow snow is rounded to 0 or 31 mm of water equivalent.
| Quantity | Step before (10-15) | Step after (10-30) | Seen on 2026-10-30 12z |
|---|---|---|---|
tp, 3-hourly increment |
0.0038 mm at 6 h, 0.0076 mm at 144 h | 0.061 mm at 6 h, 0.244 mm at 144 h | 15–16 % of cells in a 140–195°E, 55–14°S box hold exactly one step at 72 and 144 h (0.1°) |
ssrd, 3-hourly mean flux |
0.047 W m⁻² at 6 h, 0.38 W m⁻² at 144 h | 3.03 W m⁻² at 6 h, 24.3 W m⁻² at 144 h | Night-time values down to −3.03 W m⁻² (0.1°, the same box) |
sd, snow water equivalent |
0.24 mm | 31.25 mm | Every non-zero cell is a multiple of 31.25 mm; the smallest is 31.25 mm |
2t, skt, sot |
0.031 K | 0.25 K | — |
The sd step follows from 9 bits spread over a global range of 0–10 m (the cap over the ice sheets), so it will be the same on every cycle.
Files and method
Every message of these whole files was read with ecCodes 2.48.2 (Python bindings): bitsPerValue, binaryScaleFactor (E) and decimalScaleFactor (D), with the quantisation step taken as 2^E × 10^−D. All messages are grid_ccsds before and after. Messages packed with 0 bits (constant fields, such as accumulations at 0 h) are left out.
- Before, 0.25°:
https://storage.googleapis.com/ecmwf-open-data/20261015/12z/ifs/0p25/oper/20261015120000-{0,6,144}h-oper-fc.grib2 - After, 0.25°: the same path for
20261030 - After, 0.1°:
https://storage.googleapis.com/ecmwf-open-data/20261030/12z/ifs/0p1/oper/20261030120000-{0,6,144}h-oper-fc-{pl,sfc}.grib2
The date of the change comes from 2t at 0 h in every 0.25° cycle from 2026-10-15 00z to 2026-10-20 18z. It is packed in 12 bits through 2026-10-20 00z and in 9 bits from 2026-10-20 06z.
Thanks.