!lag™
💬 Is !lag any good? I want to hear from you! Join the !lag Discord server and tell me what you think: what works, what doesn't, and what you want next. Every bit of feedback shapes the next update.
20,000 downloads, thank you! 🎉
!lag™ is a lightweight optimization mod that makes Minecraft run smoother and makes it easier to tune. It only runs on your client: it never changes gameplay and works on any server.
Why !lag
- More frames and steadier frame times, with no change to how the game plays
- Every graphics and performance option in one place, so there's no menu digging
- Sensible defaults that already work, plus full control if you like to tweak
- Light enough to leave on all the time, even on low-end PCs and laptops
Features
- Video + !lag screen: the vanilla video settings and every !lag option on one screen
- Search and tabs: search matches option names and descriptions, hover for tooltips, or browse the Performance, Safety, Visuals, Distance and FPS tabs
- Adaptive render distance: lowers your render distance when FPS drops and puts your own setting back once things settle
- Smart culling: skips entities and block entities you can't see, including mobs behind you, with adjustable distance and frustum culling
- Particle budget: caps how many particles spawn each tick so explosions and farms don't tank your FPS
- Quick presets: switch between Potato, Balanced and Quality in one click
- FPS HUD: current FPS, 1% low and an optional rolling average, with an optional frame-time graph, adjustable scale and any corner placement
- Background FPS caps: separate limits for menus, overlays, an unfocused or minimized window, AFK and deep AFK, so your PC stays cool when you're not playing
- Smooth zoom: hold
Vto zoom and scroll to change how far - Optional fullbright: see clearly in caves without torches
- Visual toggles: weather effects, entity shadows and leaf quality
- !lag loading screen: a clean custom startup screen
Tuning options
You can adjust all of these in game:
- Entity and block entity cull distance
- Visibility cache interval and async worker count
- Particle budget per tick
- Adaptive render distance limits and cooldown
- Weather, shadows and leaf mode
- FPS HUD scale
- Every background FPS cap
Mega updates ⚡
Most !lag updates are small and steady, with a couple of real improvements each time. A mega update is different: it's a huge release that bundles many new features, FPS wins and fixes at once. Mega updates drop at big milestones and carry -mega in their version number.
The first one, 3.2.0-mega, celebrates 20,000 downloads 🎉 and comes with quick presets, a bigger FPS HUD, smarter culling and an in-game 20K thank-you screen.
Versions
- Fabric: Minecraft 1.21 through 26.3. Pick the file that matches your game version.
- !lag legacy: a Forge build for Minecraft 1.8.9, for PvP and classic players.
- Java: Java 21 for 1.21.x, Java 25 for 26.x, and Java 8 for 1.8.9.
- Side: client only. Servers don't need it.
Found a bug?
Join the Discord (linked on the right) or open a report. Include your Minecraft version, loader version, other mods and what happened, and it'll get fixed fast.
Support
!lag is free and MIT licensed. If it helped your game, you can buy me a coffee on Ko-fi. ☕
All Versions
+ Add Version- FPS HUD: 1% low now uses the slowest frame in the last second instead of sorting the whole frame history on each HUD refresh, so it does less CPU work when 1% low is on.
- Settings: the Performance tab adds Terrain LOD queue threshold, Adaptive low frames and Adaptive high frames (these were config-only).
### Tested
- 72 unit tests; mixin targets verified against Minecraft 26.3.
- Headless client on software Vulkan: the mod loads with no mixin errors and the !lag settings screen opens.
### Not tested
- Real GPU, Sodium/Iris, multiplayer, single-player world load.
### Optimized UI
- Settings **search** updates the row list without tearing down tabs, buttons, or the search field each keystroke.
- FPS HUD** does less per-frame work: reused graph buffers, cached sparkline width, fewer box-size recalculations.
- Performance** tab now includes sliders for **entity extract throttle distance** and **particle extract cull distance** (were config-only before).
- Dropped the duplicate **Entity shadows** toggle from Visuals (still on Quality).
### More FPS & wiring
- Startup timer** is a real toggle: after load, a short **Boot time** toast appears at the top (off = no toast).
- Fullbright** saves and restores your gamma when you turn it off.
- Menu memory cleanup** also clears the entity render-state extract cache when it runs a cleanup pass.
### Compatibility
- Client-side only; no gameplay logic changes.
- Does **not** include the experimental render-performance or fog/cloud changes that are still in testing.
### Testing (honest)
- Verified:** Gradle build on Java 25; 69 unit tests pass; mixin config integrity checks; client launch on **software Vulkan only (llvmpipe)**: the mod loads, no mixins failed to apply, and the !lag settings screen opens.
- Not tested:** joining a world (no in-world gameplay or FPS benchmark), any real GPU, Sodium or Iris compatibility, and multiplayer. Please report any issues on Discord or GitHub.
Tell me what you think on the [!lag Discord](https://discord.gg/ERsVCsUMd5)!
### Community
- One-time **20K thank-you screen** on the title menu (smooth Inter, centered layout at GUI scales 2–4; reopen anytime from Credits).
- Join the !lag Discord** button on the thank-you screen and in Credits (vanilla link confirmation).
### Settings & UI
- Quick presets** on the General tab: Potato, Balanced, and Quality profiles in one click.
- Search** matches keywords and descriptions, not just row titles.
- Tooltips** on hover for rows that include help text.
### FPS HUD
- Corner placement** (top/bottom, left/right).
- Optional **frame-time sparkline** graph.
- Optional **rolling average** FPS alongside the existing 1% low.
### Performance
- Behind-camera entity skip** reduces extract work for mobs clearly behind you (bosses and large entities stay exempt).
- Adaptive render distance (smoother)**
- Steps down using about the last second of frame times, aligned with the live FPS HUD
- Steps back up only after the longer rolling average recovers, so brief spikes do not yo-yo your distances
- Visibility cache (bounded)**
- Caps entity and block-entity visibility caches per refresh bucket so huge farms cannot grow unbounded maps
- Menu memory cleanup also clears these caches when it triggers a GC
There are no gameplay logic changes — client rendering and settings only.
- Tested:** 43 unit tests; Minecraft 26.3 Fabric client on software rendering (Xvfb): mod load, mixin hooks, settings screen, visibility-cache smoke line. Not tested on a real GPU, with Sodium/Iris, in multiplayer, or with a full single-player world session.
## !lag legacy 3.1.0 (Minecraft 1.8.9, Forge)
First 1.8.9 Forge build of !lag. In-game it is called **!lag legacy**. Client-side only, for Forge 11.15.1.2318 (Java 8). It has no extra dependencies.
- Features**
- FPS HUD: a small box in the top right that updates 4 times a second. It hides with F1 or F3, and its scale is adjustable.
- Entity distance culling (default 64 blocks). Players, the Ender Dragon, the Wither, lightning and anything you ride are never culled.
- Name tag culling for mobs (default 48 blocks). Player name tags are always kept.
- Tile entity culling for chests, signs, skulls, banners and similar blocks (default 64 blocks). Beacons and end portals are exempt.
- Particle distance culling: particles farther than 32 blocks are skipped.
- Menu FPS cap (default 60) and unfocused-window FPS cap (default 30). Set either to 0 to keep vanilla behavior.
- Smooth zoom: hold C, and scroll while zoomed to change the strength. Your strength is remembered.
- Settings screen: press Right Shift, or open Mods → !lag legacy → Config. Settings save when you close the screen.
- Config file: config/notlag-legacy.json
- Not included:** features that rely on the modern renderer in the 26.3 version, such as adaptive render distance, chunk compile budgets, render caches and shader-compatibility mode.
- Tested:** The build and 16 unit tests pass. On a real Forge 1.8.9 client (software rendering), the game reached the title screen and loaded a singleplayer world. All mixins applied with no errors. The settings screen, FPS HUD and zoom all work.
- Not yet tested:** real graphics cards, how much FPS the culling actually saves, OptiFine or other mods, and multiplayer servers. Please report any issues.
- Safer adaptive render distance**
- No longer rewrites options.txt on every step, so your chosen render/simulation distance is never overwritten.
- Your own distances come back when you leave the world, turn the feature off, or close the game.
- Moving the Render/Simulation Distance slider while it's active becomes the new baseline.
- 3-second cooldown after each step, so the chunk-reload hitch can't cause another drop right away.
- New sliders in the Performance tab: Adaptive target FPS, min render distance, min simulation distance.
- Live FPS HUD with 1% low**
- The HUD number now reacts within about half a second instead of updating once per second.
- Shows the 1% low next to it (e.g.
60 FPS | 1% 42). Turn it off with "FPS HUD 1% low" in Visuals. - The frame-time tracking behind it is lighter (no per-frame loop or allocation).
Adaptive render distance is still off by default. No gameplay changes.
Tested: 40 unit tests, all mixin targets verified against 26.3, and a real 26.3 client (software rendering) loaded a world with no mixin errors; adaptive mode stepped down and restored the original distance correctly. Not tested on a real GPU, with Sodium/Iris, or in multiplayer.
- One-time config fix: if your saved notlag.json still has the old 48-block block-entity cull default, it upgrades to 64 on load (custom distances stay as you set them).
- Adds configVersion in notlag.json for future migrations.
- No mixin or gameplay changes; same behavior as 3.1.0 unless you were stuck on the legacy 48 default.
Tested in the real Minecraft 26.3 client (Fabric, software-rendered test machine) before release: reached the world, all 18 mixins active with no mixin errors, the !lag settings screen opens, and signs, name tags, dropped items and the FPS HUD render normally up close.
- Faster, lighter UI**
- Settings screen keeps its filtered row list and slider labels cached, so it only rebuilds them when you change tab, search or a value. Settings are saved when you press Apply or Done or close the screen, not on every slider step.
- FPS HUD caches its text per FPS value, updates 4 times a second instead of every frame, and hides itself when the HUD is hidden (F1) or the debug screen is open. The box now resizes properly for 3- and 4-digit FPS.
- New optional culling (all on by default, adjustable in the Distance tab, listed in Diagnostics, turned off by "Shader compatible")**
- Sign text is not drawn beyond 48 blocks.
- Name tags of non-player mobs are hidden beyond 48 blocks (players always keep theirs).
- Item frames, paintings and armor stands are not rendered beyond 64 blocks; dropped items beyond 48 blocks.
- Entity shadows are skipped beyond 32 blocks.
- Block entities well behind the camera skip render-state work (beacons, end gateways, banners, conduits and structure blocks are never skipped).
- Fixes and wiring**
- Adaptive render distance now only steps down after consecutive slow frames; frames near the target no longer add up to a drop.
- The "Update checker" toggle now works: one quick background check against Modrinth per session, shown at the top of the settings screen. Turn it off in General if you don't want it.
- Zoom strength changed with the mouse wheel while zooming is now remembered.
- Honest note:** in our software-rendered test setup, average FPS with 3.1.0 was about the same as 3.0.0 (within run-to-run noise). The new culling mainly helps in scenes with many signs, named mobs, item frames, dropped items or shadows, which we did not benchmark separately. Not tested: real GPUs, Sodium/Iris together with 3.1.0, multiplayer servers.
Tested in the real game (title screen, world load, all 17 mixins active, settings screen, benchmark, long-distance teleport) before release.
- Chunk compile budget** (default on): caps section recompiles scheduled per frame to smooth CPU spikes when many sections rebuild.
- Terrain LOD compile defer** (default on): skips re-meshing distant sections that already have a mesh while the compile queue is busy.
- Entity extract throttle** and **subpixel entity cull** (default on): less CPU spent on far or tiny entities.
- Block entity extract skip**, **particle fast extract**, **fog buffer cache** and **lightmap extract cache** (default on): skip redundant work when nothing changed.
- Adaptive render distance** (default off): lowers render/simulation distance when FPS stays below a target.
- 30 second benchmark:**
/notlag benchmarkor Performance tab > Run 30s benchmark reports average FPS and 1% low from real frame times. - Diagnostics tab** lists which optimizations are active.
- Honest note:** in our software-rendered test machine we did not measure a clear FPS gain over 2.2.0, so treat these as CPU-load savers in busy scenes rather than a big FPS boost.
- Weather effects toggle:** turning it off now really skips the client rain/snow rendering.
- Particle cull distance** (default 0 = off): skips spawning new particles far from the player.
- Pause menu FPS cap** (default 30) plus no new particles while the game is paused.
- Shader compatible toggle:** when off, aggressive distance/extra culling and fullbright tweaks are disabled for shader-pack safety.
- Mixin diagnostics:** one-time
[notlag] hook active: ...log lines for every hook, so you can verify the mod is working. - UI:** settings scrolling no longer rebuilds tabs and search, faster ON/OFF toggles and search; the FPS HUD hides while a screen is open and updates its text less often.
- Beacons, end gateways and banners no longer disappear at 48 blocks. The block entity cull distance default is now 64, and those three block types are exempt from distance culling.
- The ender dragon and other boss/large entities are no longer culled at distance.
- The menu FPS cap now applies only on the title screen and menus without a world, not to the inventory or chat while you are in a world.
- The settings screen now saves when you click Done.
Tested in a real Minecraft 26.3 client (Fabric): the game loads with no mixin errors, the settings screen opens, and the fixes above were checked in a creative world. Note: if you already have a saved config from 2.1.0, your block entity cull distance stays at 48 until you change it in the Distance tab.
- Settings now do real work:** entity and block-entity distance culling, visibility cache, FPS caps (menu, overlay, unfocused, minimized, AFK, deep AFK), menu-idle memory cleanup, zoom strength and the crash helper are wired to actual behavior. Settings are saved to
config/notlag.json. - Faster UI:** settings screen labels are cached, and the FPS HUD only updates its text when needed.
- Safer mixins:** all mixins are optional, so if one doesn't match it switches that feature off instead of crashing.
- Testing:** passed the build, unit tests and a headless load check (the mod loads with no mixin errors). The title screen, settings UI and in-world behavior have **not** been tested in a real client yet, so this is marked beta. Please report any issues.
- Fabric Loader >=0.19.5, Fabric API 0.162.0+26.3
- Java 25
- SDL3 keyboard input updates for zoom keybind
- Gradle wrapper / toolchain updates
Build verified with
./gradlew build on Java 25. Please report any in-game mixin issues.!lag beta-1 is the first polished public build for Minecraft 1.21.4 on Fabric.### Added
- Combined vanilla video settings and
!lagcontrols into one workflow - Searchable tabbed settings UI
- Smooth zoom with adjustable zoom strength
- Safe client-side culling and particle tuning options
- Custom
!lagstartup loading screen - Updated icon and release metadata
### Notes
- Client-side only
- Built for Fabric on Minecraft 1.21.4