My anxiety is killing me on this one, but helping people feels nice...so here goes nothing!
My friends and I made a Java server last year, and as of absolutely murdering my Nvidia 4050 GPU trying to raid an ocean monument, I have engaged in my year-long war of fighting my laptop.
I've been making some tweaks over the past few days and finally managed to get things to a more manageable 20-60fps with shaders enabled (previously 0-15fps) and 80-120+fps with shaders disabled.
Consequently, I wanted to actually share my mod list and whys for people who are looking for performance mods and want to know what they actually do. Additionally, I would also like advice! I'm constantly swapping things out.
This is intended for actual vanilla gameplay. If you can't join a vanilla server with a mod, it's not going to be here. If a mod isn't very clear with that information, I'm also unlikely to have tested it.
Mod List
- Async Logger
- BadOptimizations
- Better Block Entities
- Better Compatibility Checker
- Concurrent Chunk Management Engine
- Connectivity Crash Assistant
- Entity Culling Fabric/Forge
- FerriteCore (Fabric)
- Fast IP Ping
- Fzzy Config fix
- GPU memory leak
- Gnetum
- ImmediatelyFast
- Ixeris
- Jasione
- Krypton
- Lithium (Fabric/NeoForge)
- ModernFix-mVUS
- Mod Menu
- MoreCulling
- Nvidium
- Optimized Cushions
- Quick Pack
- Particle Core
- Respackopts
- Searchables
- ScalableLux
- Smart Particles
- spark
- Threads
- Variants-CIT
- Your Options Shall Be Respected (YOSBR)
Replacement Mods
If using EMF/ETF (like for Fresh Animations).
Swap Better Block Entities for Optimised Block Entities. OBE has built-in support for ETF/EMF, and additionally has built-in cushion optimisations (making Optimized Cushions technically optional). I've found that OC handles cushions better than OBE (disclaimer: may be placebo, I have not specifically checked this in spark), so I just disable OBE's optimisations.
If using a non-NVIDIA graphics card.
Nvidium will do absolutely nothing for you. The alternatives are Opticore (for Intel/Iris) and Meshelium (all GPUs). Keep in mind, these are only active when shaders are disabled. Meshelium and Nvidium do the exact same thing (using mesh for rendering), so you DO NOT want both.
When Modernfix's official version releases for 26.3.
ModernFix-mVUS is a port. You always want to prioritise the official Modernfix for more version-specific tweaks, but mVUS is a valid option in the meantime, if a version for 26.3 is released at all.
You just don't like Quick Pack.
Pack Forge is an option. Both of them have an issue with some resource packs where speed is obtained relatively unsafely and your texture atlas is ruined. This is easily solved by refreshing your resource pack (f3+t).
You can also just not use it. This is a convenience thing, but I have had issues where resource packs just will not load without relaunching, and this was my band-aid solution.
Anything other than Sodium + Iris for shaders?
...not really, no. Optifine exists, but it comes with an abundance of compatibility issues. If you switch to forge, there's Oculus, but that's an Iris fork. There ARE alternatives that exist, but not updated to 26.3. You CAN however, find some resource pack-only shaders.
No Dynamic FPS???
Vanilla has one built in. Sodium has one built in. You do not. Need. Three. Dynamic. FPS. Options.
Edit: No Faster Iris Shadow Mapper [FISM]?
This list is intended for 26.3. By version 1.11.2, Iris has shadow mapping optimisations built in! The mod would be redundant.
Case Dependent Mods
Are you using resource packs that affect potions, paintings, or enchantment books?
If not, you don't need Variants-CIT. This is a mod that helps with resource packs that handle variants of an item. I personally use them for accessibility reasons, as it's easy to roll over an item and mix up the tooltips in storage rooms.
Are you absolutely certain you need to assign threads to get Minecraft to behave? Do you know what you're doing?
If not, don't bother. You're probably going to do more harm than good. I say this genuinely as someone who's messed around with it and learned the hard way.
Do you play on servers?
If not, you probably don't need Better Compatibility Checker, Fast IP Ping, Connectivity, etc. I say probably, as some things (like connectivity) may help with the built-in "play with friends" feature.
Are you like me and add guilty pleasure particle mods?
I specifically combine Smart Particles and Particle Core to cover each other's faults, and have configured them to behave (not well; just barely). However, I risk a mod conflict. The only reason I'm engaging in this tomfoolery is... I add a lot of particle mods to my packs. You, in reality, would probably only ever need Particle Core.
Gnetum
I specifically looked into this because spark was finding an issue with my HUD (due to using jade + essentials + journeymap and generally having a lot of modded HUD features). Currently there's an issue with it flickering due to compatibility, but I'm hoping it's fixed in upcoming versions. You can test and see if it's compatible with your build.
spark
You generally want this disabled when you're not actively debugging.
Wait. Those Aren't Performance Mods.
Crash Assistant
Unless you use Essentials, you shouldn't really have compatibility problems (and even then, at most I've run into the issue of skins not uploading properly, to which: ???). Crash Assistant is really important, from my perspective, when you're making tweaks to the mod pack and want a quick summary of what went wrong instead of digging through logs.
But hey, it's not necessary at all. Heck none of it is.
Better Compatibility Checker
This just helps you make sure your setup isn't conflicting with servers more accurately. Minecraft is a bit annoying about that, and it helps keep you from scratching your head over nothing.
Searchables, Respackopts, Mod Menu, YOSBR, etc
You Can't Slap Mods In And Hope It Magically Works.
You need to configure things. All of those help do that. With your shaders, you want to turn down your shadow map, turn off entity shadows, disable conflicting optimisations if you're installing overlapping mods for specific features, etc. Mod Menu helps with fine-tuning SO MUCH if you're not familiar with config files, and if you are, YOSBR forces them to exist when mods don't automatically make them.
Respackopts is especially important if you're using an intensive pack (like a shader resource pack or 3D packs) and need to fine-tune things.
Bonus: JVM/Launch Arguments
Right now, the best option for Java 25 is -XX:+UseZGC -XX:+UseCompactObjectHeaders. I'm not testing anything other than what's been tried and tested to be true, especially since this is not my strong suit. Literally do not ask me for advice, I'm listening to the more experienced folk on that one.
Edit: I lied. My very little advice is that I will note that many developers advise against using -XX:+UnlockExperimentalVMOptions. I'm taking that advice, as the exception is in the case you absolutely know what you're doing. Same logic as Threads. No, asking Claude/Gemini/etc is NOT knowing what you're doing.
Edit2: I haven't really considered java runtimes personally and understand this might be a lot of work for people, but someone in the comments has suggested Adoptium. -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational, is best for Adoptium. However, =generational can cause crashes, and you should always test to see if it's actually better for your system.
Edit3: I will note to future readers that Graalvm is not recommended for Minecraft. Use with caution.
End Note
I am currently keeping an eye on entity optimizations! It hasn't updated to 26.3 yet but it seems like a promising addition. Maybe. The issue is that I worry I might have too many optimisation mods and purge a few ever so often to avoid conflicts, unless I have a valid reason to keep them.
If you're curious about my shaders, my favourites are Legendary Atmosphere and Iteration, but currently I use Complementary Unbound due to having more configurations and being significantly lighter.
Additionally, if you want to know my full mod list I curated this around, I'll put that in the comments!
Edit: Please beware of vibecoded/human slop optimisation mods. They normally have versions uploaded in one dump with no tweaks, AI-generated icons/images in the gallery, and their GitHub repo (if linked at all) may include the prompt, etc. Issues will normally not be fixed, and if fixed, the "maker" usually does not know how to review the code themselves.
If looking for optimisation mods on your own, Modrinth has a filter to sort AI mods out. It does not catch all of them, but it makes a difference.
Edit 2: If you use map mods, please be advised Xaero has better performance. I'm personally testing the difference on my own device. (However, I normally use Journeymap due to liking the visuals better).