Why am I lagging?
Lag in a modpack like this can come from a bunch of different places, and it's not always your PC's fault. Here's a rundown of the most common causes, roughly in order of "most likely to be your problem" — start at the top.
Your game might be using the wrong GPU
If you have a laptop or desktop with a dedicated graphics card (an NVIDIA GeForce/RTX/GTX or an AMD Radeon RX card) and integrated graphics built into your processor (Intel UHD, AMD Radeon Graphics), Windows sometimes picks the wrong one for Minecraft without telling you. It'll quietly run the game on your weak built-in graphics chip instead of your actual graphics card, and you'll get bad frame rates even though your PC is way more powerful than that.
⏺ simulated live readout — this is what a broken setup looks like in Task Manager
That's the broken setup above — your good GPU sitting there doing nothing while your PC tries to run a heavily modded game on the weakest chip in it. This is genuinely one of the most common causes of "why is my game running like garbage when my PC should be able to handle this," and most people never think to check it because nothing tells you it's happening — the game just runs badly and you assume your PC isn't good enough.
If you're on a laptop, some usage on the integrated graphics is normal and expected even after fixing this (the screen itself is wired through it) — what matters is whether your dedicated GPU is actually doing the heavy lifting once you're in a loaded world.
Prefer to do it by hand, or the tool didn't catch your launcher? manual step-by-step guide▶
- Right click the Start button → Device Manager
- Expand "Display adapters"
- If you only see one entry like "Intel UHD Graphics" or "AMD Radeon Graphics," you don't have a dedicated GPU — none of this applies to you, your PC is doing the best it can already.
- If you see two entries (one Intel/AMD integrated, one NVIDIA GeForce/RTX/GTX or AMD Radeon RX), you've got a dedicated GPU and the rest of this guide is for you.
If none of the below match what you've got, search your whole drive for "javaw.exe" in File Explorer and use whichever one is newest / matches your launcher's folder.
- Open Settings → System → Display → Graphics (or search "Graphics settings" in the start menu)
- Click "Browse" and add: javaw.exe (from above) and your launcher's main exe (CurseForge.exe, PrismLauncher.exe, ModrinthApp.exe, ATLauncher.exe, TLauncher.exe, minecraft.exe — whatever you use)
- Click each one once added, hit Options, and set it to "High performance"
This is the important one — Windows Graphics Settings alone doesn't always get respected, especially on laptops.
- Right click the desktop → NVIDIA Control Panel (if missing, your drivers are probably outdated — see Step 5 below)
- Manage 3D Settings → Program Settings tab
- Click "Add" and browse to the same exes from Step 1 (javaw.exe and your launcher exe)
- For each one, set "Preferred graphics processor for this program" to "High-performance NVIDIA processor"
- Apply
- Open AMD Software (Adrenalin)
- Go to the Gaming tab
- Add the game/exe manually if it's not listed
- Set Graphics Profile to "High Performance"
- There's also a "Switchable Graphics" section under System → Display or in laptop-specific settings, depending on your version — check there too if Gaming tab doesn't have it.
There's usually no physical switch between the two GPUs (Optimus on Nvidia laptops, AMD Smart Shift/Switchable Graphics on AMD). The integrated GPU is always connected to the screen, so you'll always see some usage on it even when the game renders on the dedicated card — that part is normal. What's not normal is the dedicated GPU sitting near 0% the whole time you're in a loaded world.
Some laptops (MSI, Asus, Lenovo, etc) also have their own control center app (MSI Center, Armoury Crate, Lenovo Vantage) with a hybrid graphics / GPU mode setting buried in there — look for "Hybrid," "Optimus," "Discrete GPU only," or "MUX Switch."
Outdated or half-broken drivers can ignore every setting above. Grab the latest driver straight from the source rather than trusting Windows Update: NVIDIA — nvidia.com/drivers (or GeForce Experience / the NVIDIA app) · AMD — amd.com/support
Still having issues? A clean reinstall with DDU (Display Driver Uninstaller) run in Safe Mode, followed by a fresh driver install, fixes a surprising number of "my dedicated GPU won't kick in" problems caused by leftover driver conflicts.
Open Task Manager → Performance tab, click your dedicated GPU, and watch the usage while actually walking around in a loaded world (not just the loading screen). It should be doing the heavy lifting now, not your integrated graphics. You can also press F3 in game and check the bottom right corner — some versions show which GPU is rendering, though Task Manager is more reliable.
Restart your launcher completely after making any of these changes — half the time it doesn't take effect until you fully close and reopen it. A full PC restart fixes it if closing the launcher alone doesn't.
- Double check you actually edited the right javaw.exe — modpacks can have more than one Java install on the same PC and it's easy to set the wrong one.
- Try setting both the Windows Graphics setting and the NVIDIA/AMD control panel setting at the same time — don't rely on just one.
- Some prebuilt desktops have the monitor cable plugged into the motherboard instead of the dedicated GPU, which forces everything through integrated graphics no matter what software you set. Check which port your monitor cable is in and move it to the GPU's port if needed.
You don't have enough RAM allocated
Modpacks need more RAM than vanilla Minecraft, sometimes a lot more depending on how many mods are loaded. If your launcher is only giving the game 3-4GB, you'll get stuttering, freezing, and crashes once you've been playing a while, especially after generating a lot of world or fighting a bunch of mobs at once.
Check your launcher's instance settings for a memory/RAM allocation slider and make sure it's set high enough for this modpack (check the modpack page or ask in the Discord for the recommended amount). Don't go overboard either — allocating way more than you need can actually make things worse because of how Java's garbage collector behaves with huge heaps. That's exactly what the flags below are for.
Add these JVM performance flags
On top of fixing the GPU mismatch and giving the game enough RAM, you can directly tune how Java manages that memory. Minecraft (and every mod loaded with it) runs inside the Java Virtual Machine, and the JVM periodically pauses the entire game to clean up unused memory — this is called garbage collection (GC). On a lightly modded game you never notice it. On a 335-mod pack, the default garbage collector can freeze the game for a noticeable chunk of a second at a time, which feels like random stutters, freezes, or rubber-banding that have nothing to do with your GPU or render distance.
These flags switch Java over to G1GC (a garbage collector built for low, predictable pause times) and tune it specifically for Minecraft's memory pattern, plus raise two mod-loader network timeouts so a big modpack doesn't get disconnected while it's still loading data on login. They're the same flags used by Aikar's and most modern modpack-performance guides — safe, well-tested, and used on millions of modded instances.
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dfml.readTimeout=90 -Dfml.loginTimeout=90
What do these actually do? flag-by-flag breakdown▶
-XX:+UseG1GC— turns on G1 ("Garbage First"), a collector designed to clean memory in small, regional chunks instead of pausing everything at once.-XX:+ParallelRefProcEnabled— lets G1 process references (the bookkeeping behind weak/soft references mods use a lot of) across multiple CPU threads instead of one, shortening pauses.-XX:MaxGCPauseMillis=200— tells G1 to aim for pauses no longer than 200ms. It's a target, not a hard guarantee, but it steers G1's internal tuning toward short, frequent pauses instead of rare, long freezes.-XX:+UnlockExperimentalVMOptions— required flag that unlocks the experimental G1 tuning options used below (G1NewSizePercent, G1MixedGCCountTarget, etc).-XX:+DisableExplicitGC— ignoresSystem.gc()calls some mods make manually. Manual GC calls force a full, expensive collection at a random time — this stops mods from triggering one over your head.
G1 splits memory into regions and these flags shape how it sizes and recycles them. Minecraft allocates and discards huge numbers of short-lived objects every tick (block updates, entity ticks, packets) — these settings keep the "young generation" big enough to absorb that churn without constantly triggering collections.
-XX:G1NewSizePercent=30/-XX:G1MaxNewSizePercent=40— keeps 30-40% of the heap reserved as "young generation" space for those short-lived objects, instead of G1's much smaller default.-XX:G1HeapRegionSize=16M— sets a larger region size, better suited to a heap in the multi-GB range than G1's auto-picked default.-XX:G1ReservePercent=20— keeps 20% of the heap held back as a safety buffer so G1 doesn't have to fall back to a slow full GC if it runs low on space.-XX:G1HeapWastePercent=5/-XX:G1MixedGCCountTarget=4/-XX:G1MixedGCLiveThresholdPercent=90— control how aggressively G1 reclaims mostly-empty regions during "mixed" collections, spreading the work over more, smaller collections instead of one big one.-XX:InitiatingHeapOccupancyPercent=15— starts a collection cycle earlier (at 15% heap usage instead of the default 45%), trading slightly more frequent small collections for avoiding sudden large ones.-XX:G1RSetUpdatingPauseTimePercent=5— caps how much of each pause is spent on remembered-set bookkeeping, leaving more of the pause budget for actually freeing memory.
-XX:SurvivorRatio=32— shrinks the survivor space ratio, which suits Minecraft's mix of mostly very short-lived objects with a smaller set that sticks around.-XX:+PerfDisableSharedMem— stops the JVM writing performance-monitoring data to disk continuously, which removes a small but constant source of disk I/O (helps more on slower drives — see cause #7).-XX:MaxTenuringThreshold=1— promotes surviving objects to old generation faster instead of copying them between survivor spaces repeatedly, which is cheaper for Minecraft's allocation pattern.
-Dfml.readTimeout=90/-Dfml.loginTimeout=90— Forge/NeoForge (FML) properties that raise how long the client waits while exchanging mod/registry data with the server during login, from the short default to 90 seconds. A pack this size can take a while to sync on first join or after an update — without this, slower connections or PCs can get kicked with a "timed out" disconnect before they even finish loading in.
-Xmx/-Xms memory allocation flags — add them alongside your existing memory settings, don't replace them.How to add JVM arguments in your launcher per-launcher instructions▶
Copy the flags above with the button, then paste them into the JVM/Java Arguments field for this instance — append them after anything already there (like your -Xmx memory setting), don't delete what's already in the box.
Render distance & graphics settings too high
Modded Minecraft has to generate, light, and render a lot more per chunk than vanilla does. A render distance that felt fine in vanilla can bring a heavily modded game to its knees.
Try dropping render distance down (8-10 chunks is a reasonable starting point for a modpack) and see how much that helps before touching anything else. Simulation distance does the same thing for game logic/mob behavior — lower that too if things feel laggy specifically when lots of entities are around.
Shaders and resource packs
Shaders look great and tank performance, especially on modded Minecraft which is already pushing your PC harder than vanilla. If you're running a shader pack, try turning it off entirely to see how much of your lag goes away — that'll tell you if it's actually the problem.
High resolution resource packs (anything above the modpack's default texture size) can do the same thing, especially with a lot of VRAM-hungry mods already loaded.
Background apps eating your resources
Discord screen share/overlay, OBS, browsers with a bunch of tabs open, RGB lighting software, antivirus doing a scan, and game capture overlays can all eat CPU, RAM, or GPU in the background while you play. Close anything you don't need open.
Discord's overlay specifically is known to cause stutter in some modded setups — worth disabling under Discord Settings → Activity Overlay if you're having issues.
Your drive is slow
If the modpack is installed on a traditional spinning hard drive instead of an SSD, you'll get noticeable stutter whenever new chunks are loading or saving, since modded worlds read/write a lot more data than vanilla.
Moving your instance to an SSD (even a cheap one) makes a bigger difference than most people expect.
Outdated drivers
Old GPU drivers can cause stutter, crashes, or your dedicated GPU not being used properly at all (see cause #1 above). Update straight from NVIDIA or AMD's website rather than just relying on Windows Update to keep them current.
It's not you, it's the server
Sometimes lag isn't your PC at all. If everyone online is lagging at the same time, or you're rubber-banding/teleporting around but your own FPS counter looks fine, that's server-side lag, not client-side. That can be caused by too many entities/redstone/chunks loaded on the server, the server itself being under-resourced, or just internet issues. There's nothing you personally can fix on your end for that one besides letting whoever runs the server know what you're seeing — drop a message in the Discord.
Quick checklist
most impactful first- Check Task Manager for the GPU mismatch issue described above
- Make sure RAM allocation matches what the modpack recommends
- Add the universal JVM performance flags to your launcher's Java arguments
- Lower render distance and simulation distance
- Turn off shaders/heavy resource packs temporarily to test
- Close background apps, especially Discord overlay
- Update your GPU drivers
- If it's only happening with other people online too, it's probably the server, not you