Terraria Modding on OpenMods

AdventureIndieSandbox0 Mods

tModLoader, the Workshop, and what a fork-based modding model means in practice

Read more

Articles & guides

About

More about Terraria

A 2D sandbox that became a modding platform almost by accident

Terraria shipped in 2011 as a 2D Metroidvania-meets-Minecraft built in XNA, and Re-Logic spent the next decade releasing free content updates instead of expansions. Modding wasn't part of the official plan, but a community project called tModLoader stepped in early, gradually became indistinguishable from a first-party mod API, and was eventually adopted by Re-Logic as a free official DLC on Steam. That history shapes everything about how Terraria modding works today.

Where most modding scenes are about installing a third-party loader alongside the base game, tModLoader is a fork of the game itself that ships as a separate Steam app. You don't patch base Terraria, you launch tModLoader instead, and it loads mods on top of its own runtime.

The toolchain

The Terraria modding stack is unusually flat, there's really one thing:

  • tModLoader (github.com/tModLoader/tModLoader): the loader, the mod API, and the build tooling, maintained by the tModLoader team. Installed for free on Steam by right-clicking Terraria → Properties → DLC → tick "tModLoader". After installation, tModLoader appears as a separate game in your Steam library.

That's it. No BepInEx, no Harmony, no Forge, no Fabric. tModLoader runs the show.

Mods are distributed via the tModLoader Steam Workshop, which is separate from base Terraria's workshop. Subscribe to a mod through tModLoader's workshop page (or in-game via Workshop → Browse Mods) and it lands in Documents/My Games/Terraria/tModLoader/Mods/. Enable it from the in-game Mods menu, then click Reload. New mods sometimes need a full client restart on top of that.

What you'll find on OpenMods

Terraria's modding community has historically lived almost entirely on Steam Workshop, with GitHub serving as the source-code home for the larger projects (Calamity Mod, Thorium, Magic Storage). The OpenMods catalogue is small for Terraria because most Terraria modders publish to Workshop first and only mirror to GitHub for development purposes, but if you're a Terraria mod author already publishing your source to GitHub, listing on OpenMods gives you a versioned download endpoint outside the Workshop walled garden.

The catalogue will grow as more Terraria modders adopt GitHub-first publishing. For now, check the Workshop in parallel.

Practical notes

  • Terraria version compatibility is strict. Terraria 1.4.4 was a significant API break for tModLoader, and 1.4.4+ tModLoader (the current stable) won't load 1.4-era mods. If a mod's README references "tML 1.3" or "tML legacy", treat it as a different game entirely.
  • Saves don't transfer cleanly between vanilla and tModLoader. Vanilla Terraria saves can be loaded in tModLoader, but tModLoader saves cannot be loaded in vanilla, and even the vanilla-to-tML direction can produce unexpected character state if mods alter your equipment. Back up Documents/My Games/Terraria/Players/ before installing your first content mod.
  • Multiplayer requires identical mod lists across all clients. tModLoader enforces this strictly. The host's mod set is canonical; clients without those exact mods at those exact versions will be refused. Pin mod versions in workshop subscriptions if you're running a long-term server.
  • Big content mods don't always play nicely with each other. Calamity, Thorium, and Magic Storage individually are stable, but stacking large content overhauls produces ID conflicts and balance issues that aren't anyone's fault. Read each mod's "known incompatibilities" section before mixing.

Terraria's modding scene is one of the most accessible in PC gaming, installation is two clicks, the in-game UI is friendly, and the Workshop integration removes most of the fiddling that other communities have to live with. Whether the OpenMods catalogue eventually grows to mirror that scene depends on the community.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.