The first field of a model, ir_version,
is the version of the format: the IR, ONNX’s intermediate representation. It is
separate from the versions of the operator sets in opset_import, which
change far more often. The dates are those in onnx.proto’s Version enum;
the releases are from ONNX’s Versioning.md.
The versions
| IR | Published | What it added | First ONNX release with it |
|---|---|---|---|
| 1 | 10 Oct 2017 | The first version. | – |
| 2 | 30 Oct 2017 | AttributeProto.type. | – |
| 3 | 3 Nov 2017 | OperatorSetIdProto, opset_import and NodeProto.domain. | 1.0 (opset 1) |
| 4 | 22 Jan 2019 | Initialisers need not be graph inputs; BFLOAT16. | 1.4.1 (opset 9) |
| 5 | 18 Mar 2019 | TensorAnnotation and quantization_annotation. | 1.5.0 (opset 10) |
| 6 | 19 Sep 2019 | SparseTensorProto and sparse initialisers. | 1.6.0 (opset 11) |
| 7 | 8 May 2020 | TrainingInfoProto; several operator sets in functions. | 1.7.0 (opset 12) |
| 8 | 30 Jul 2021 | TypeProto.SparseTensor and TypeProto.Optional; model-local functions. | 1.10.0 (opset 15) |
| 9 | 5 May 2023 | Attributes on FunctionProto; FLOAT8E4M3FN, FLOAT8E4M3FNUZ, FLOAT8E5M2 and FLOAT8E5M2FNUZ. | 1.14.0 (opset 19) |
| 10 | 25 Mar 2024 | UINT4 and INT4; function overloads; metadata_props on many messages. | 1.16.0 (opset 21) |
| 11 | 12 May 2025 | FLOAT4E2M1; multi-device configuration. | 1.18.0 (opset 23) |
| 12 | 26 Aug 2025 | FLOAT8E8M0. | 1.19.0 (opset 24) |
| 13 | 6 Nov 2025 | UINT2 and INT2. | 1.20.0 (opset 25) |
| 14 | “TBD” in onnx.proto | FLOAT6E2M3 and FLOAT6E3M2; TypeProto.Opaque outside ONNX-ML. | 1.23.0 (opset 28) |
The explorer shows the publication date beside a model’s IR version, and accepts IR versions from 1 to 64, so that a model of a newer version than 14 is not turned down for its number alone.
ONNX releases in between
Other releases kept the IR version of the one before and raised the default operator set: 1.1 (IR 3, opset 5), 1.2 (opset 7), 1.3 (opset 8), 1.8 (IR 7, opset 13), 1.9 (opset 14), 1.11 (IR 8, opset 16), 1.12 (opset 17), 1.13 (opset 18), 1.15 (IR 9, opset 20), 1.17 (IR 10, opset 22), 1.21 (IR 13, opset 26) and 1.22 (opset 27).
Why every version is one format
Each IR version has only added messages, fields and data types. A file of an older version reads correctly under a newer schema, and the fields of a newer one are skipped by older readers as unknown fields. Versioning.md: “Breaking changes to the format or semantics of the ONNX specification require an increment of the version.” So far no increment has broken the encoding of existing fields, and this site treats every IR version as the one format.