What Is Intermediary? Minecraft Mappings Explained

Intermediary is Fabric's stable naming layer for obfuscated Minecraft code, so mods keep working across versions without breaking on renamed fields.

Mappingsby trqUpdated June 4, 2026
Key takeaways
  • Intermediary is the stable naming layer Fabric puts over Minecraft's obfuscated code.
  • It gives each obfuscated symbol a fixed name that stays the same across versions.
  • Compiled Fabric mods ship against Intermediary names, not readable ones.
  • It reduces breakage on updates but cannot save a mod from removed game code.

Intermediary is the stable naming layer Fabric puts over Minecraft's obfuscated code. Mojang ships the game with scrambled class, field, and method names that change every release. Intermediary gives each of those a fixed name that stays the same across versions, so a compiled mod keeps finding the code it patches even after the game updates underneath it.

Where Opal fits

Opal is a Fabric mod, so it relies on this mapping layer just like any other Fabric mod. You do not configure it by hand; the setup guide gets you running.

What Intermediary actually is

Intermediary is a set of mappings: a lookup table that pairs each obfuscated Minecraft symbol with a stable, machine-generated name. A class the game calls a might become class_1234 in Intermediary. The name is ugly, but it is permanent for that symbol across releases.

Mojang obfuscates the game on every build. Names like field_5678 would otherwise shift release to release, which is why a mod compiled against raw obfuscated names breaks the moment the game updates. Intermediary freezes those names so the mapping, not the mod, absorbs the churn.

Why Fabric mods need it

Mods are distributed compiled against Intermediary names, not the readable names a developer writes against. That one decision is why a Fabric mod can keep running on a new game build without a recompile in many cases.

When the game launches, Fabric loads the Intermediary mapping for that version and remaps the obfuscated game classes to the stable names the mod expects. The mod and the game meet in the middle on a name set neither of them ships raw.

Intermediary vs developer mappings

Developers do not read or write class_1234. They work against a human-readable mapping like Yarn or Mojmap, which give symbols descriptive names. At build time those readable names are compiled down to Intermediary for distribution.

LayerExample nameWho uses itStable across versions
Obfuscateda, field_5678Nobody by handNo
Intermediaryclass_1234Shipped mod binariesYes
Yarn / MojmapMinecraftClientDevelopers at build timeReadable, version-tracked

The split lets developers code against friendly names while the thing that actually ships stays version-stable. Readable mappings can be swapped out; Intermediary is the common floor everyone agrees on.

How it fits a mod's lifecycle

  • A developer writes code against a readable mapping such as Yarn or Mojmap.
  • The build compiles those names down to Intermediary names.
  • The mod ships as a jar that references Intermediary symbols.
  • At launch, Fabric remaps the running game from its obfuscated names into Intermediary so the mod and the game line up.

This is why mappings are a quiet but load-bearing part of Fabric modding: they are the contract that keeps mods pointing at the right code after every update.

FAQ