Open-source project
MinecraftForge/MinecraftForge avatar
MinecraftForge/MinecraftForge

MinecraftForge: the modding API behind most Minecraft mods, and how to install it

Modifications to the Minecraft base files to assist in compatibility between mods. New Discord: https://discord.minecraftforge.net/

7,801 stars2,810 forksJavaNOASSERTION

At a glance

What is it?
MinecraftForge patches the Minecraft base files to give mods a shared API, so mods written separately can load together. This covers what it does, how the installer works, which Java version each Minecraft release needs, and where it stops being the right tool.
Who is it for?
Adopt MinecraftForge if you want to run a set of mods that were built against the Forge API, or if you are writing a mod and need the loader, the transformers and the deobfuscated development workspace that the Forge documentation describes. Do not adopt it if the mods you want ship only for a different loader, or if you want a vanilla client with no modified base files.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What problem MinecraftForge solves, and who it is for

Two mods that both edit the same Minecraft class will conflict. Vanilla Minecraft has no loader, no shared registry and no stable API surface, so without a layer in between, each mod would ship its own edited copy of the base files and the last one installed would win. The repository's own description states the purpose plainly: modifications to the Minecraft base files to assist in compatibility between mods. That is the whole pitch. Forge is the layer that owns the patched base files, and mods are written against it rather than against Minecraft directly.

The audience is two groups. The first is players who want a modded client or server and need a loader that many mods target. The README calls Forge a free, open-source modding API all of your favourite mods use, and the support table lists all versions as supported, with a tiered support policy linked from the forum. The second group is mod authors. Forge ships an mdk directory and a Getting Started guide in its documentation, plus a separate ForgeDev guide for people who want to inspect Forge itself, submit pull requests or set up a workspace. If you only want to play, the player path is the installer. If you want to write or patch mods, the author path is the workspace.

How the loader and its transformers actually fit together

The repository layout tells you most of the architecture. fmlloader is the loader that starts before Minecraft does, fmlearlydisplay handles the early window that appears while the game is still loading, fmlcore holds the core loader classes, and forge-transformers holds the class transformers that rewrite Minecraft bytecode at load time. The patches directory holds the patches applied to the Minecraft base files, and minecraft.versions.toml plus gradle.properties pin which Minecraft version the tree builds against. The language directories (javafmllanguage, lowcodelanguage, mclanguage) are the mod language providers, which is why Forge can load mods written in Java as well as simpler formats.

The data flow is: the launcher starts the Forge profile, fmlloader runs before the game, the transformers apply the patches from the patches directory to the vanilla classes, mods are discovered and their declared dependencies are ordered, then Minecraft starts. That ordering is the compatibility mechanism. A mod does not need to know which other mods are present, only which API versions it needs. The cost is that Forge is coupled to a specific Minecraft version: the default branch here is 26.2, and a build for one Minecraft release will not load on another. The README's Java table reinforces that coupling, since the required Java version is tied to the Minecraft version rather than chosen freely.

Installing Forge and creating your first modded profile

The README does not describe a command line install. It says to go to the Forge website and select the Minecraft version you want Forge for from the list, then download the installer for the Recommended Build or the Latest build. The README notes that Latest builds may have newer features but may be more unstable as a result. The installer attempts to install Forge into your vanilla launcher environment, where you then create a new profile using that version and play.

So the first real use is: pick the Minecraft version, download the installer, run it, then open the launcher and select the new profile. If you prefer to launch the installer by hand rather than by double-clicking, the README points Windows users who have trouble launching JAR files to Jarfix. The installer itself is a Java archive, so the runtime you need is the one matched to your Minecraft version:

bash
# Java required by the Minecraft version you are installing Forge for
# 26.1+            -> Java 25
# 1.20.6 - 1.21.11 -> Java 21
# 1.18 - 1.20.4    -> Java 17
# 1.17.1           -> Java 16
# 1.16.5 and below -> Java 8

After the installer finishes, the launcher should list a Forge profile for that version. Create it, start the game once with no mods to confirm the loader itself works, and only then add mods. For mod authors, the entry point is different: the README links the Getting Started section of the Forge documentation, and the repository ships an mdk directory as the starting workspace. Building Forge itself from this tree uses the Gradle wrapper at the repository root:

bash
./gradlew build

On Windows the equivalent is gradlew.bat. The README does not document what the build produces or how long it takes, so treat the wrapper as the documented entry point rather than a promise about output.

Where Forge is the wrong tool

Version coupling is the hard limit. Forge is built per Minecraft version, and the required Java version follows the Minecraft version, so a machine set up for one release is not automatically set up for another. If your mods are pinned to an older Minecraft version, you are pinned to that version's Forge build and that version's Java runtime, and the README's table is the only guidance it gives on which runtime that is.

The second limit is the mod set itself. Forge provides compatibility between mods, but only for mods written against Forge. A mod that targets a different loader will not load here, and the README does not claim otherwise. If the specific mods you want are not published for Forge, the loader is not the variable you should be changing.

The third limit is support scope. The README links a tiered support policy on the forum, which implies not every version is supported the same way, and the recommended versus latest distinction exists precisely because latest builds may be less stable. The README also does not document rollback or uninstall steps. If an install goes wrong, the documented recovery path is the support forum or the Discord server, not a documented revert command. Treat the installer as something you run on a profile you are willing to recreate.

How Forge differs from a loader that keeps vanilla files untouched

The honest comparison is with loaders that take a different approach to the same problem. Forge's approach is to modify the Minecraft base files, as its description says, using the transformers in forge-transformers and the patches in patches. That gives mods deep access to game internals and is why the API has historically supported mods that change core behaviour.

The trade-off is that a Forge installation is not a vanilla installation. The base files are patched, the launcher profile points at the patched version, and the game you run is the patched one. A loader that instead injects at runtime and leaves the base files alone has a different failure profile: fewer things to break at install time, and less reach into the parts of the game that Forge mods routinely touch. Neither approach is strictly better. If your mod list depends on deep changes to base behaviour, the patching approach is what makes those mods possible. If your mod list is small and you want the smallest possible deviation from vanilla, the patching approach is more than you need. The README does not compare Forge to other loaders, so the decision has to come from what your mods actually declare.

Maintenance, licensing and the cost of keeping up

The repository is not archived, and the last push was on 2026-09-19. The default branch is 26.2, which matches the version prefix used in the README's stable and latest badges, so the branch you land on corresponds to the current Minecraft line rather than a legacy one. The README's support table lists all versions as supported and links a tiered support policy, which is the closest thing to a maintenance commitment the project publishes.

The upgrade cost is real and it is not optional. Because Forge is built per Minecraft version and the required Java version tracks the Minecraft version, a Minecraft upgrade means a new Forge build, a new Java runtime on the machines that run it, and a check that every mod in your list has a build for the new version. The README does not describe a migration path between Minecraft versions, and it does not describe rollback, so plan the upgrade as a new profile rather than an in-place change.

On licensing: the repository carries a LICENSE.txt and a LICENSE-header.txt at the top level, but the license is reported as NOASSERTION, meaning no standard license was detected. The README says Forge is free to use and modify and will always remain free to use and modify, and it asks for Patreon support to cover running costs. That statement is about cost, not about the terms of redistribution. If you intend to redistribute Forge or bundle it, read LICENSE.txt yourself; nothing in the README substitutes for it. Contributors are asked to sign a Contributor License Agreement, and the README notes you need a valid email address on your GitHub account to do so.

Editorial conclusion

Adopt MinecraftForge if you want to run a set of mods that were built against the Forge API, or if you are writing a mod and need the loader, the transformers and the deobfuscated development workspace that the Forge documentation describes. Do not adopt it if the mods you want ship only for a different loader, or if you want a vanilla client with no modified base files. Before installing anything, verify that the Forge build matches your exact Minecraft version, that your Java runtime matches the row for that version in the required-Java table, and that every mod you plan to load declares the same Minecraft version. The installer is the only supported path described in the README, and it installs into your vanilla launcher environment, so the profile you create there is what you should check first if the game refuses to start.

Frequently asked questions

What is MinecraftForge?

It is a free, open-source modding API that modifies the Minecraft base files to assist in compatibility between mods, so that mods written against it can load together. It is written in Java and is distributed through the Forge website.

Is Minecraft Forge free to use?

Yes. The README states that Forge is and will always remain free to use and modify, and it asks for Patreon support only to cover the cost of running the project. Note that the repository's license is reported as NOASSERTION, so read LICENSE.txt for the actual terms.

How do I install Minecraft Forge?

Go to the Forge website, select the Minecraft version you want Forge for, and download the installer for either the Recommended Build or the Latest build. The installer attempts to install Forge into your vanilla launcher environment, where you then create a new profile using that version.

How do I use the Minecraft Forge installer?

Run the downloaded installer for your chosen Minecraft version, then open the launcher and create a new profile using that version. The README notes that Latest builds may have newer features but may be more unstable than Recommended builds.

How do I use Minecraft Forge mods?

Install Forge for the Minecraft version your mods target, create the Forge profile in the launcher, and add mods that were built against the Forge API. The README does not document a mod folder path or a mod-loading command, so the mod's own instructions are the source for placement.

Is Minecraft Forge still safe?

The README's only guidance is to download from the Forge website and to use the Recommended Build or the Latest build it lists there. It does not discuss safety checks or third-party mirrors, so treat the official download page as the source.

Official sources

  1. Issues
  2. MinecraftForge/MinecraftForge on GitHub
  3. Project website
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/minecraftforge-minecraftforge.svg)](https://hysenlabs.com/projects/minecraftforge-minecraftforge)