Measure First: Reading the F3 Screen
Learn to read the debug screen before touching settings: F3 shows FPS top-right; 'E: x/x' is entity count — anything over ~200 means too many on-screen entities, which is your real bottleneck, not graphics settings; and 'mem: xx%' above 85% means you need more RAM allocated. Look at data first — don't tune blind.
Video Settings: Cost Per Setting
Settings differ wildly in FPS cost. Tune in this order (best value first):
| Setting | FPS Cost | Low-End Value | Notes |
|---|---|---|---|
| Simulation distance | Very high | 8-10 | The biggest single lever — pricier than render distance |
| Render distance | High | 8-12 | Each +2 chunks costs ~10-15% FPS |
| Particles | Medium | Minimal | Instant win around explosions/campfires |
| Clouds | Low | Off | No perceptible loss |
| Smooth lighting | Low | Off | Slight look change, worth it |
| Entity distance | Medium | 75% | Big wins near farms and villager halls |
| Mipmap levels | Very low | 0-1 | Only affects distant sharpness |
JVM Memory Arguments
The stock launcher under-allocates RAM. On 8GB+ machines: Installations → latest release → JVM arguments, change -Xmx2G to -Xmx4G (4GB is the sweet spot; 8GB+ actually worsens GC pauses). Keep -XX:+UseG1GC (default since 1.18) and the official flags — the 'ultra-optimized argument strings' floating around are mostly outdated. Don't paste blindly.
Fake Optimizations to Skip
Three widespread but useless 'optimizations': 1) entity-cleanup micro-mods mean nothing to vanilla players; 2) turning off V-Sync on a low-end rig adds tearing and input lag — leave it on for 60Hz screens; 3) 'minimum everything' beats nothing but is worse than dropping simulation distance by 2 — the first sacrifices looks, the second gains real frames. If it's still not enough after all this, add Sodium (see our OptiFine vs Sodium comparison).