Menu

Guidefor modders3 min read

Resource pack format numbers and which Minecraft versions they cover

pack_format is the one field that decides whether your pack loads. What it means, why it keeps changing, and how to support several versions from one file.

The field that decides everything

Every resource pack has a pack.mcmeta at its root:

{
  "pack": {
    "pack_format": 46,
    "description": "My pack"
  }
}

pack_format tells the game which layout your pack uses. It is not a version of your pack and it is not something you choose freely: it is a number the game defines, and using the wrong one makes Minecraft warn the player that your pack was made for something else.

Why it changes

The number increments whenever the layout the game expects changes. Historically that has meant:

  • a folder being renamed, such as the move from blocks/ to block/
  • a file format changing, such as how sounds or fonts are declared
  • a new required field appearing in a JSON file
  • textures moving to a different path

None of these are cosmetic. A pack built for an older format has files where the newer game does not look, which is why it loads with pieces missing rather than failing cleanly.

The result is that the number moves often and does not track Minecraft's own version numbers at all. There is no formula. It is a lookup.

Getting the right number

The reliable source is the version you are targeting, not a table on the internet, because tables go stale within weeks of a release.

Two ways that always work:

Look inside the client jar. Open the jar for the version you are targeting and read its own pack.mcmeta. That is the number the game is using, by definition.

Make the game tell you. Set a deliberately absurd pack_format, load the pack, and the warning names the format the game expected.

The second takes about a minute and is what most pack authors actually do.

Supporting several versions from one pack

Newer Minecraft versions read supported_formats, which declares a range:

{
  "pack": {
    "pack_format": 46,
    "supported_formats": { "min_inclusive": 42, "max_inclusive": 46 },
    "description": "My pack"
  }
}

Set both fields. Versions that understand supported_formats use it and load without a warning across the whole range. Versions that do not simply ignore it and read pack_format, so nothing breaks.

The catch: declaring a range is a claim that your pack works across it. If a texture path changed inside that range, half the range gets a broken pack and no warning, which is worse than the warning would have been. Test the ends of the range before claiming it.

When one file cannot cover it

Sometimes a layout change is too large to bridge. Two options:

Overlays. Newer formats support declaring directories that apply only to particular format ranges, so one download can carry version-specific files. The right answer when the differences are small.

Separate downloads. One pack per format range, clearly labelled. Less elegant and more honest, and it is what large packs generally end up doing.

Either way, put the supported Minecraft versions in your release metadata rather than only in the description. That metadata is what catalogues read, including this one: the resource pack catalogue filters on the exact versions each release declares, so a pack that lists them properly is a pack people can find.

Data packs are a separate sequence

A data pack also has pack.mcmeta with a pack_format, and its numbers are a different sequence from resource packs. Resource pack format 46 and data pack format 46 have nothing to do with each other and correspond to different Minecraft versions.

This catches people constantly, especially when a project ships both. Keep two numbers and check each against its own kind. Data pack pack.mcmeta covers that side.

A checklist before release

  • pack.mcmeta is at the root of the zip, not inside a folder. Zipping the folder rather than its contents is the single most common packaging mistake.
  • pack_format matches the newest version you target.
  • supported_formats covers the range you have actually tested.
  • The pack loads with no warning on the newest version and with no missing textures on the oldest.
  • The release metadata lists every Minecraft version you support, so catalogues and search can find it.

Frequently asked

What happens if pack_format is wrong?

The game warns that the pack was made for a different version and asks whether to load it anyway. It usually still loads, and anything whose file layout changed between the two formats will be missing or wrong.

Can one pack support several Minecraft versions?

Yes, with supported_formats, which declares a range instead of a single number. Older versions ignore the field and read pack_format, so set both.

Why does the number change so often?

It increments whenever the layout the game expects changes: a folder rename, a file format change, a new required field. It is a compatibility marker, not a version of your pack.

Do data packs use the same numbering?

Same field name, separate sequence. A resource pack format and a data pack format with the same number are unrelated, which catches people out constantly.

Referenced on this site

Last reviewed 2026-07-27. Version data on this site updates automatically; this guide is reviewed by hand when the ecosystem changes.