IFS open-data packing change, 2026-10-20

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.

Hi, the announcement for bits per value reduction on the fields had already been posted last month over here:

To learn more details about bits-per-value reduction:

Thank You.

Hi,

Thanks for that. I didn’t find that page before. Nevertheless, hopefully someone from the ECMWF will reply to my concerns described in What it does downstream. The page justifies the reduction only in terms of accuracy, but there are other issues caused by this reduction in precision.

Thanks.