Appendix B — Pack Format Version Table
Every data pack carries a number that tells Minecraft which versions of the game it was
built for. That number is the pack format. This appendix explains how the pack format
works, how to declare it in your pack.mcmeta, and, most importantly, how to look up the
right number for whatever version of Minecraft you are running.
What the pack format is
The pack format (sometimes called the pack version) is a number used in pack.mcmeta
to describe which Java versions a data pack (or resource pack) is compatible with. Each
release of Minecraft declares the pack formats it supports.
Its job is compatibility checking. When you load a pack, Minecraft compares the pack’s format number against the numbers the running game supports. If a pack’s format is higher than the game supports, the pack shows up as “incompatible” in the pack list. This is what stops a pack written for a newer version from loading into an older game and causing crashes or missing content. If the number does not match what the game expects, Minecraft displays a warning in the pack list.
Data packs and resource packs share the same numbering system but apply it differently. Data packs cover gameplay logic: structures, recipes, tags, loot tables, and functions. Resource packs cover textures, models, block states, sounds, and text. The numbers are not interchangeable between the two: a data pack format of 88 and a resource pack format of 88 mean different things. This appendix is about data pack formats.
How to declare it: min_format and max_format
The way a pack states its format changed partway through the modern release line, so there are two styles you may see. Knowing both lets you read any pack you come across.
The modern style (since snapshot 25w31a)
Since 25w31a, packs declare a range using two fields instead of a single number:
min_format— the minimum version the pack supports.max_format— the maximum version the pack supports.
Each of these can be written as a single integer or as a list of two integers
[major, minor], where the first number is the major (pack) version and the second is a minor
version. A single integer is interpreted as that major version: 82, [82], and [82, 0]
all mean the same thing. For max_format, a single integer is interpreted as any minor
version of that major.
A modern data pack for Minecraft 26.2 looks like this:
{
"pack": {
"description": "Example datapack for Minecraft 26.2",
"min_format": 107,
"max_format": 107
}
}
Setting min_format and max_format to the same number, as above, means “this pack targets
exactly this one major version.”
The legacy style: pack_format and supported_formats
Before 25w31a, a pack declared its version with a single pack_format integer:
{
"pack": {
"description": "Example datapack for Minecraft 1.21",
"pack_format": 48
}
}
You will still see pack_format in older packs and tutorials. There was also an older
multi-version field, supported_formats, which listed the major versions a pack supported.
It accepted a single integer (42), a list ([42, 45]), or an inclusive range object
({ "min_inclusive": 42, "max_inclusive": 45 }).
Both pack_format and supported_formats are now backwards-compatibility fields only.
They exist so a pack can also support old versions of the game. The rule the format spec states
is precise:
- These deprecated fields must be present if the pack supports old versions (data pack format below 82).
- They must be absent if the pack does not support old versions.
In other words: if you are writing a pack only for current Minecraft, do not add
pack_format or supported_formats: use min_format/max_format alone. Add the legacy
fields only when you are deliberately shipping one pack that also works on pre-82 versions.
The same
min_format/max_format(or legacyformats) mechanism also appears on each entry in a pack’s overlays, which let one pack ship different contents for different version ranges. Overlays are an advanced topic; the version-declaration rules there are the same ones described above.
Finding the pack-format number for your version
This is the part that actually matters when you sit down to write a pack: you look the number up from the game itself rather than memorizing it. There are two built-in ways to read the pack format of the version you are running:
- The
/versioncommand — run it in-game (it needs commands allowed). - The
F3 + Vdebug hotkey.
Either one reports the pack format the running game supports. Whatever number it gives you is
the number to put in your pack.mcmeta.
One concrete worked value
As a worked example you can check against, the data pack format for Minecraft 26.2
is 107. The modern pack.mcmeta shown earlier uses it:
"min_format": 107, "max_format": 107.
Looking up any other version’s number. Format numbers change with almost every release, so there’s no point memorizing a full table, and the printed one would be out of date by the time you read it. To get the exact number for your version, read it off the game itself: run
/versionor pressF3 + V. For the complete history of every format number and the version it maps to, the Minecraft Wiki’s Pack format page keeps the full table current.
Quick reference
| Field | Style | Value form | When to use |
|---|---|---|---|
min_format | modern (25w31a+) | int or [major, minor] | Always, on current packs |
max_format | modern (25w31a+) | int or [major, minor] | Always, on current packs |
pack_format | legacy | single int | Back-compat only; omit on new-only packs |
supported_formats | legacy | int, [a, b], or {min_inclusive, max_inclusive} | Back-compat only; omit on new-only packs |
- A concrete data pack format to check against: 107 (Minecraft 26.2).
- To read your version’s number:
/versionorF3 + V. - For the full number → version table: look it up live on the Minecraft Wiki’s Pack format page.