Fully client-side mod that automatically scales your view distance up or down in real-time based on your current frame rate. It keeps your game running smoothly in heavy areas and lets you see further when performance allows it.
Client-side only (no server installation required). Fully compatible with singleplayer and multiplayer.
Dependencies: Fabric & NeoForge require Architectury API (and Fabric API on Fabric). Forge requires no additional dependencies.
Free to use in any modpack — public or private, no permission needed.
What it does
- Smart Scaling — automatically increases or decreases render distance to stay within your desired FPS range.
- One-Click Presets — apply a tuned Quality, Balanced, or Performance profile from the main config card (or
/drd preset). Presets only change performance settings and keep your toggles. - Optional On-Screen HUD — a compact overlay showing your current render distance and FPS, color-coded by status (grey = off, red = below your min FPS, green = above your max FPS, yellow = in range). Automatically hidden while the F3 debug screen is open.
- Configurable Limits — you set the minimum and maximum chunks — it will never drop below or rise above the limits you define.
- Anti-Oscillation Cooldowns — smart cooldown timers so your screen doesn't constantly flicker between distances.
- Rebindable Keybinds — open the settings (default
F8), toggle the mod on/off, or toggle the HUD — all rebindable in Options → Controls under Dynamic Render Distance. - In-Game UI & Commands — configure everything from the settings card or chat commands.
Configuration
Press F8 in-game (rebindable) or use /drd open to open the settings menu.
The main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom), Show HUD, Advanced..., and Reset / Done / Cancel. The old dense list of every setting now lives under Advanced settings (including Show Messages). Preset and Reset update the open card in place; values still save only on Done (Cancel / Esc discard). Picking a preset shows an action-bar hint: Selected %s preset — press Done to save.
Available settings (defaults in parentheses):
- Enabled (ON) — toggle the mod entirely.
- Show Messages (ON) — action-bar notification when render distance changes (Advanced).
- Show HUD (OFF) — top-left overlay with current render distance and FPS.
- Min FPS (
45) / Max FPS (75) — thresholds that lower or raise render distance. - Min RD (
6) / Max RD (32) — allowed render distance range in chunks. - Decrease Step (
2) / Increase Step (1) — chunks removed or added per adjustment. - Check Interval (
5.0s) — how often to check the average FPS. - Cooldown (
10.0s) — wait after a change before adjusting again.
How it works: the mod samples FPS every second and keeps an average window. On each check interval it lowers render distance if average FPS is below Min FPS, raises it if above Max FPS, then applies a cooldown. By default it decreases faster than it increases, so laggy areas stabilize first. Each adjustment is a single step — Minecraft rebuilds chunks on every render-distance change, so gradual steps would only flicker more.
Keybinds (Options → Controls → Dynamic Render Distance):
- Open config — default
F8. - Toggle the mod on/off — unbound by default.
- Toggle the HUD — unbound by default.
Commands (/dynamicrenderdistance or /drd):
/drd status— current stats./drd preset performance— apply a preset.- Setting subcommands (
enabled,showHud,minFps, …) print the stored value with no argument; pass a value to set it (e.g./drd minFps 60,/drd showHud true,/drd cooldown 15).
Details
- Client-side only — safe on any vanilla or modded server.
- All settings are stored locally in
config/dynamicrenderdistance.json(fields unchanged; modpacks can ship a preconfigured file). - Fully translated into 10 languages; UI strings can be overridden via a resource pack under
assets/dynamicrenderdistance/lang/. - No builds for Minecraft 26.1 / 26.1.1 / 26.1.2 — stay on a previous release for those, or move to 26.2.
Feedback
Please report any bugs, errors, or feature suggestions on Discord: https://discord.gg/HTkn94BXmA
More mods by Nikrecs: PerformanceHUD · AutoMuteOnAfk
My other mods that I recommend.
How to Install DynamicRenderDistance (Mod)
DynamicRenderDistance by Nikrecs is verified for Fabric, Forge, Neoforge across Minecraft versions 1.19.2, 1.20.1, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2 (latest release: 1.3.0, file size: 115 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.19.2, 1.20.1, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2) and platform (Fabric, Forge, Neoforge).
- Make sure you have the compatible loader or environment installed for Fabric, Forge, Neoforge.
- Move the downloaded DynamicRenderDistance file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.2.0
|
5mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.1.0
|
6mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 | |||
|
R
1.0.0
|
7mo ago | 1 |
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.
- Config UI**
- Main screen is a single card: Enabled, live status, FPS/chunk rule, Mode (Quality / Balanced / Performance + Custom ring), Show HUD, Advanced..., Reset / Done / Cancel
- The old dense scrollable list of every setting is now Advanced settings (Show Messages lives there)
- Preset / Reset update the open card in place; values still save only on Done (Cancel / Esc discard)
- Action-bar hint when picking a preset: Selected %s preset — press Done to save
- Fixes**
- 1.21.1: status, mode, and card frame no longer look washed out under the menu blur
- 1.21.11 / 26.2: key binds use the Dynamic Render Distance category (defaults unchanged: F8 / unbound / unbound)
- Japanese, Russian, and Chinese locales are readable UTF-8 again
- Commands**
- Setting subcommands (
enabled,showHud,minFps, …) print the stored value when typed with no argument; passing a value still sets it
- Loaders / versions**
- Added: Fabric 1.19.2, Forge 1.21.1, Forge 1.21.11
- Dropped: 26.1 / 26.1.1 / 26.1.2 (Fabric & NeoForge). 26.2 remains
- Architectury API is now required on Fabric and NeoForge (Forge jars do not use it)
- Fabric API is declared on every Fabric jar
Client-only. Config path and JSON fields are unchanged.
If you're still on 26.1.x, stay on the previous build — or move to 26.2.