All Mods Resource Packs Data Packs Shaders Modpacks Plugins
DynamicRenderDistance

DynamicRenderDistance

by Nikrecs • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

CurseForge

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:

  1. 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).
  2. Make sure you have the compatible loader or environment installed for Fabric, Forge, Neoforge.
  3. Move the downloaded DynamicRenderDistance file into your Minecraft .minecraft/mods folder and launch the game.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.1.2
Neoforge
2mo ago 1
26.1.2
Fabric
2mo ago 1
26.3
Neoforge
2mo ago 1
26.3
Fabric
2mo ago 1
26.2
Neoforge
2mo ago 1
1.21.11
Neoforge
2mo ago 1
1.21.1
Neoforge
2mo ago 1
1.21.11
Forge
2mo ago 1
1.21.1
Forge
2mo ago 1
1.20.1
Forge
2mo ago 1
1.19.2
Forge
2mo ago 1
26.2
Fabric
2mo ago 1
1.21.11
Fabric
2mo ago 1
1.21.1
Fabric
2mo ago 1
1.20.1
Fabric
2mo ago 1
1.19.2
Fabric
2mo ago 1
26.2
Neoforge
5mo ago 1
26.2
Fabric
5mo ago 1
26.1.2
Neoforge
5mo ago 1
26.1.1
Neoforge
5mo ago 1
26.1
Neoforge
5mo ago 1
1.21.11
Neoforge
5mo ago 1
1.21.1
Neoforge
5mo ago 1
1.20.1
Forge
5mo ago 1
1.19.2
Forge
5mo ago 1
26.1.2
Fabric
5mo ago 1
26.1.1
Fabric
5mo ago 1
26.1
Fabric
5mo ago 1
1.21.11
Fabric
5mo ago 1
1.21.1
Fabric
5mo ago 1
1.20.1
Fabric
5mo ago 1
26.1.2
Neoforge
6mo ago 1
26.1.1
Neoforge
6mo ago 1
26.1
Neoforge
6mo ago 1
1.21.11
Neoforge
6mo ago 1
1.21.1
Neoforge
6mo ago 1
1.20.1
Forge
6mo ago 1
1.19.2
Forge
6mo ago 1
26.1.2
Fabric
6mo ago 1
26.1.1
Fabric
6mo ago 1
26.1
Fabric
6mo ago 1
1.21.11
Fabric
6mo ago 1
1.21.1
Fabric
6mo ago 1
1.20.1
Fabric
6mo ago 1
26.1.2
Neoforge
7mo ago 1
26.1.2
Fabric
7mo ago 1
26.1.1
Neoforge
7mo ago 1
26.1
Neoforge
7mo ago 1
1.21.11
Neoforge
7mo ago 1
1.21.1
Neoforge
7mo ago 1
1.20.1
Neoforge
7mo ago 1
1.19.2
Forge
7mo ago 1
26.1.1
Fabric
7mo ago 1
26.1
Fabric
7mo ago 1
1.21.11
Fabric
7mo ago 1
1.21.1
Fabric
7mo ago 1
1.20.1
Fabric
7mo ago 1
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
### 1.3.0

  • 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.
[1.2.0] 1.2.0 by Nikrecs on Jun 18, 2026
Download
First release on 26.2 neoforge
[1.2.0] 1.2.0 by Nikrecs on Jun 18, 2026
Download
First release on 26.2 fabric
[1.2.0] 1.2.0 by Nikrecs on May 27, 2026
Download
Added scroll support so the settings list fits on small screens / low GUI scales.
DynamicRenderDistance Icon
Download DynamicRenderDistance
Select game version
Select platform