Sodium, Lithium and FPS: which performance mod goes where?
FPS and TPS are two different things. FPS (frames per second) is how smoothly your PC draws the game; TPS (ticks per second) is how often the server works out the world each second, with 20 as the maximum. Sodium and Iris are client-side mods: they raise your FPS and do literally nothing for the server. Lithium, Canary, FerriteCore and ModernFix belong on the server side and push tick time and memory use down, with FerriteCore saving 30 to 40 percent RAM. Fabulously Optimized bundles the client side into a Fabric pack with well over 12 million downloads on Modrinth.
What is the difference between FPS and TPS?
A Minecraft server works out the world twenty times per second. In each tick it updates mobs, grows crops, processes redstone and machines and sends the result to everyone online. If it manages that within 50 milliseconds, TPS stays at 20 and the in-game clock keeps time. If a tick takes longer, TPS drops and the world runs in slow motion: furnaces burn more slowly, mobs move in jerks.
FPS happens on your PC. Your client receives the state of the world and draws as many frames per second of it as it can. That is your graphics card and processor doing the work, with render distance, graphics settings and shaders as the biggest costs. The server does not even know what frame rate you are getting.
The sting is in that separation. At 5 TPS you can still be getting 200 FPS on your own screen: you are drawing a barely changing world two hundred times a second. The other way round, a server can sit perfectly on 20 TPS while a player on an old laptop gets 15 FPS. Which is exactly why "it's lagging" is such a useless bug report.
Why do players complaining about lag often describe the wrong problem?
Three different problems all go by the name lag: low FPS, low TPS and high ping. They feel different and you fix them in three different places.
| What the player notices | What it is | Where you fix it |
|---|---|---|
| The picture stutters when looking around or entering new terrain | Low FPS | On the client: Sodium, a lower render distance, fewer shaders |
| Broken blocks come back, mobs jump ahead, chests open slowly | Low TPS | On the server: Lithium or Canary, fewer entities, clearing out chunk loaders |
| Everything is smooth but responds late, and you get pulled back after a jump | High ping | Network: a server location closer to your players |
The test takes thirty seconds. Press F3: your FPS is in the top right. Then ask for the TPS with /tps or let the spark profiler watch along. If the server sits at 20 TPS while someone is complaining, the cause is their PC or their connection and no server setting will change that. If TPS drops to 12, no client mod will help. Our article on optimising your Minecraft server covers how to bring that tick time down step by step.
What is inside Fabulously Optimized?
Fabulously Optimized is a Fabric modpack with well over 12 million downloads on Modrinth, aimed purely at performance. It adds no blocks, items, mobs or dimensions: you play ordinary vanilla Minecraft, just more smoothly. Unlike a content pack such as All the Mods 10, nothing changes about what you can do.
Its core is Sodium, which largely replaces Minecraft's rendering engine: it builds chunks more efficiently and draws fewer things you would never have seen anyway. On top of that, Iris loads shader packs, so you can run shaders without falling back to the old renderer. The rest of the pack tackles the client's loading times and memory use.
Lithium is in there too, and that confuses people. Lithium optimises server logic, not your picture. In singleplayer that server runs inside your own client, so there you certainly do notice it. If you play on an external server, the Lithium in your client pack does nothing for that server: it needs to run its own copy.
You do not need to coordinate anything with your server admin, because the server cannot tell that you are running Sodium. Do note that this is a Fabric pack: if you play on a Forge or NeoForge modpack you cannot use Fabulously Optimized and will need separate mods for your loader instead. The difference between those loaders is covered in our explanation of modpacks and how to install them.
Which mod belongs on which side?
| Mod | Side | What it does | Loader |
|---|---|---|---|
| Sodium | Client | Replaces the rendering engine, higher FPS | Fabric |
| Iris | Client | Loads shader packs on top of Sodium | Fabric |
| Lithium | Server (and singleplayer) | Optimises tick logic without changing game behaviour | Fabric |
| Canary | Server | Tick optimisation for NeoForge packs | NeoForge |
| FerriteCore | Server (and client) | 30-40 percent lower RAM use | NeoForge |
| ModernFix | Server and client | Shorter loading times and less memory on big packs | NeoForge |
The loader column names the loader you will most often meet the mod on; many of these mods now have versions for several loaders. So always check on the project page whether there is a build for your exact Minecraft version and loader. With a mod that does not match, your server simply will not start.
Which server-side mods really help your TPS?
Lithium is the clearest example of what a performance mod should be: it rewrites vanilla logic such as mob AI, block updates and pathfinding so there is less work per tick, without the game behaving any differently. Lithium is a Fabric mod; if you run NeoForge, Canary is the equivalent choice. They do the same job and you do not run them side by side.
FerriteCore goes after memory rather than processing time. Big packs register enormous amounts of blockstate and model data with a lot of duplication in it; FerriteCore merges that and saves 30 to 40 percent RAM. On All the Mods 10, with 400 to 500 mods on NeoForge and Minecraft 1.21.1, that is the difference between being cramped and having room to breathe. ModernFix mainly targets the startup phase.
What these mods will not do is make up for a plan that is too small. ATM10 needs 10 GB minimum, 12 GB for a small group and 14 to 16 GB with five players or more. If you run plugins rather than mods, Lithium and Canary are not on the table and your gains come from your server software instead: Paper carries hundreds of performance patches on top of Spigot and is the default choice for most servers.
How do you install this on both sides?
On the client side, for yourself:
- Install a launcher that handles Modrinth packs, or add the Fabric loader to the launcher you already use.
- Pick the Fabulously Optimized version that matches the Minecraft version you play on.
- Start the game without changing anything else and note your FPS with F3.
- Only then switch on shaders through Iris and raise your render distance step by step.
- If a mod you had added yourself stops working, take that one out first.
On the server side, for everyone:
- Check which loader and Minecraft version your server runs; that determines which builds you need.
- Measure first: have spark record a profile at normal busy times, so you can compare afterwards.
- Download the build for exactly your version and loader for each mod and drop them into the
modsfolder. - Restart and read the log. A missing dependency or wrong version shows up there immediately.
- Measure again. If TPS is unchanged, your problem was somewhere else.
When do performance mods not help?
If the problem is ping, no mod changes a thing; distance to the server is physics. A Dutch group of players wants the server in the Netherlands, which is why we run our own hardware in the Previder PDC2 data centre in Hengelo alongside locations in Frankfurt, Warsaw and North America. With Minecraft hosting at MC-Node you choose that location yourself.
If a single mod, farm or chunk is eating your tick time, Lithium or Canary only move the problem around. Find the cause with spark first and fix it; that halves your tick time more often than an optimisation mod ever will. The same goes for not enough RAM: the 30 to 40 percent FerriteCore saves gives you breathing space, but it will not turn an 8 GB plan into a 14 GB one.
On the client side Sodium delivers a solid gain on most machines, but on a PC that barely copes with the version at all you are only shuffling margins; a lower render distance and shaders off do more there. Bedrock players coming in through Geyser get nothing at all from Sodium, because they run a different client.
Frequently asked questions
Does Sodium raise my server's TPS? No. Sodium is a client-side rendering mod and only touches your own FPS. The server renders nothing and cannot tell that you are running it. For TPS you need server-side mods such as Lithium on Fabric or Canary on NeoForge.
Can I install Fabulously Optimized on my server? No, that is a client pack you add to your launcher; on the server it does nothing useful. You install the server-side equivalents separately in the mods folder, in the build that matches your Minecraft version and loader.
What counts as a good TPS? 20 is both the maximum and the norm; there is no higher. Around 18 to 20 players notice nothing. Below 15 it becomes visible in mob behaviour and machines, and below 10 everything feels like treacle.
Do Lithium and Canary work on a Paper server? No. Paper runs plugins, not mods, so you cannot load Lithium or Canary there. Your gains sit in the server software itself: Paper has hundreds of performance patches on top of Spigot, and Purpur is a Paper fork with extra options that stays fully plugin-compatible.
How much memory does FerriteCore save? 30 to 40 percent, especially on big packs with a lot of blocks and models. On All the Mods 10 with NeoForge and Minecraft 1.21.1 that is noticeable, but it does not lower the floor: the pack still wants 10 GB minimum and 14 to 16 GB with five players or more.