Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 legacy formats) 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:

  1. The /version command — run it in-game (it needs commands allowed).
  2. The F3 + V debug 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 /version or press F3 + 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

FieldStyleValue formWhen to use
min_formatmodern (25w31a+)int or [major, minor]Always, on current packs
max_formatmodern (25w31a+)int or [major, minor]Always, on current packs
pack_formatlegacysingle intBack-compat only; omit on new-only packs
supported_formatslegacyint, [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: /version or F3 + V.
  • For the full number → version table: look it up live on the Minecraft Wiki’s Pack format page.