Skip to main content

Overview

Minecraft Web Client provides extensive configuration options for graphics, controls, audio, interface, and gameplay. Settings are automatically saved to browser local storage and persist across sessions.

Accessing Settings

1

In-Game Menu

Press Escape or open the pause menu, then click Settings
2

Browser Console

Press F12 to open developer console, then type:
options
On mobile, add #dev to the URL to enable console access.
3

Modify Settings

Change settings via console:
options.renderDistance = 8
options.fov = 90
From the README (lines 43-49):
Controls:
  Touch Controls Type: Joystick
  Auto Full Screen: On

Interface:
  Enable Minimap: Always

Controls:
  Raw Input: On (enabled by default)

Interface:
  Chat Select: On (enabled by default)

Graphics Settings

Render Distance

renderDistance: 3              // Singleplayer default
multiplayerRenderDistance: 3   // Multiplayer default
keepChunksDistance: 1          // Extra chunks to keep loaded
Higher render distance improves view range but increases memory usage and GPU load.

Field of View (FOV)

fov: 75  // Default: 75 degrees (60-110 recommended)

Lighting & Rendering

smoothLighting: true           // Smooth lighting between blocks
newVersionsLighting: false     // Use newer lighting algorithm
dayCycleAndLighting: true      // Enable day/night cycle
starfieldRendering: true       // Render stars at night
defaultSkybox: true            // Show default sky

Visual Effects

viewBobbing: true              // Camera bobbing when walking
showHand: true                 // Show player hand
renderEntities: true           // Render mobs and players
loadPlayerSkins: true          // Download and show player skins
renderEars: true               // Render deadmau5 ears

Performance

frameLimit: false              // Limit FPS (number or false)
backgroundRendering: '20fps'   // Background tab rendering
                               // 'full' | '20fps' | '5fps'
lowMemoryMode: false           // Reduce memory usage
numWorkers: 4                  // Mesher worker threads

GPU Settings

gpuPreference: 'default'       // 'default' | 'high-performance' | 'low-power'
Let browser choose GPU (integrated or dedicated)

Advanced Rendering

activeRenderer: 'threejs'                    // Rendering engine
rendererSharedOptions: {
  _experimentalSmoothChunkLoading: true,     // Smooth chunk loading
  _renderByChunks: false                     // Chunk-based rendering
}
rendererPerfDebugOverlay: false              // Show performance overlay

Controls Settings

Mouse

mouseSensX: 50                 // Horizontal sensitivity (1-100)
mouseSensY: -1                 // Vertical sensitivity (-1 = match X)
mouseRawInput: true            // Use raw pointer lock movement
preciseMouseInput: false       // More precise mouse tracking

Touch Controls

touchMovementType: 'modern'    // 'modern' (joystick) | 'classic' (split)
touchInteractionType: 'classic' // 'classic' (tap) | 'buttons'
touchButtonsSize: 40           // Button size in pixels
touchButtonsOpacity: 80        // Button opacity (0-100)
touchButtonsPosition: 12       // Distance from edge (%)
See Mobile & Touch Controls for details.

Gamepad

From src/controls.ts:119:
gamepadPollingInterval: 10     // Poll gamepad every 10ms
See Controller Support for button mappings.

Camera

defaultPerspective: 'first_person'  // 'first_person' | 'third_person_back' | 'third_person_front'

Audio Settings

volume: 50                     // Master volume (0-100)
enableMusic: true              // Enable background music
musicVolume: 25                // Music volume (0-100)
mutedSounds: []                // Array of muted sound IDs

Interface Settings

GUI

guiScale: 3                    // GUI scale (1-4)
autoFullScreen: false          // Auto-enter fullscreen on join
autoExitFullscreen: false      // Auto-exit fullscreen on disconnect

Chat

chatWidth: 320                 // Chat width in pixels
chatHeight: 180                // Chat height in pixels
chatScale: 100                 // Chat scale percentage
chatOpacity: 100               // Chat opacity when focused (0-100)
chatOpacityOpened: 100         // Chat opacity when typing (0-100)
messagesLimit: 200             // Max messages to keep
chatSelect: true               // Enable text selection in chat
chatVanillaRestrictions: true  // Enforce vanilla chat limits
chatPingExtension: true        // Show ping in chat
chatSpellCheckEnabled: false   // Spell check in chat input

Minimap

showMinimap: 'never'           // 'always' | 'singleplayer' | 'never'
minimapOptimizations: true     // Enable minimap performance opts
See Minimap for details.

HUD Elements

displayBossBars: true          // Show boss health bars
topRightTimeDisplay: 'only-fullscreen'  // 'only-fullscreen' | 'always' | 'never'
displayLoadingMessages: true   // Show loading screen tips
displayRecordButton: true      // Show packet recording button

Gameplay Settings

Movement

autoJump: 'auto'               // 'auto' | 'always' | 'never'
autoParkour: false             // Auto-jump for parkour

Creative Inventory

jeiEnabled: true               // Enable JEI-like creative inventory
                               // true | false | ['creative', 'survival', 'adventure', 'spectator']

World Interaction

autoSignEditor: true           // Auto-open sign editor
wysiwygSignEditor: 'auto'      // WYSIWYG sign editor: 'auto' | 'always' | 'never'

Respawn

autoRespawn: false             // Automatically respawn on death

Multiplayer Settings

Username

localUsername: 'wanderer'      // Default username
guestUsername: 'guest'         // Guest mode username
askGuestName: true             // Prompt for guest name

Server Features

serversAutoVersionSelect: 'auto'  // 'auto' | 'latest' | '1.20.4' | <version>
serverResourcePacks: 'prompt'     // 'prompt' | 'always' | 'never'
See Resource Packs for server resource pack handling.

Singleplayer Settings

Auto Save

singleplayerAutoSave: false    // Auto-save world periodically
alwaysBackupWorldBeforeLoading: undefined  // Auto-backup before loading

Local Server Options

localServerOptions: {
  gameMode: 1                  // Default game mode (0=survival, 1=creative)
}

Advanced Settings

These settings are experimental or for advanced users. Changing them incorrectly may cause issues.

Debug

renderDebug: 'basic'           // 'none' | 'basic' | 'advanced'
debugLogNotFrequentPackets: false  // Log non-frequent packets
showChunkBorders: false        // Show chunk boundaries (F3+G)
showCursorBlockInSpectator: false  // Show block outline in spectator

Resource Packs

enabledResourcepack: null      // Name of enabled resource pack
useVersionsTextures: 'latest'  // Texture version to use
From src/defaultOptions.ts:46-48.

Performance & Optimization

waitForChunksRender: false     // Wait for chunks before moving
                               // false | true | 'sp-only'
neighborChunkUpdates: true     // Update neighboring chunks

Experimental

disableAssets: false           // Disable asset loading
modsSupport: false             // Enable mods support
modsAutoUpdate: 'check'        // 'check' | 'never' | 'always'
vrSupport: true                // Show VR mode button
vrPageGameRendering: false     // Render game on VR page
experimentalClientSelfReload: false  // Client-side reload

Network

customChannels: 'websocket'    // Custom protocol channels
remoteContentNotSameOrigin: false  // Allow remote content
remoteSoundsSupport: false     // Download remote sounds
remoteSoundsLoadTimeout: 500   // Sound load timeout (ms)

System

preventBackgroundTimeoutKick: false  // Prevent AFK kick when tabbed out
preventSleep: false            // Prevent system sleep
errorReporting: true           // Send error reports

Default Options

All default values from src/defaultOptions.ts:1-129:
export const defaultOptions = {
  renderDistance: 3,
  keepChunksDistance: 1,
  multiplayerRenderDistance: 3,
  closeConfirmation: true,
  autoFullScreen: false,
  mouseRawInput: true,
  autoExitFullscreen: false,
  localUsername: 'wanderer',
  mouseSensX: 50,
  mouseSensY: -1,
  chatWidth: 320,
  chatHeight: 180,
  chatScale: 100,
  chatOpacity: 100,
  chatOpacityOpened: 100,
  messagesLimit: 200,
  displayLoadingMessages: true,
  volume: 50,
  enableMusic: true,
  musicVolume: 25,
  fov: 75,
  defaultPerspective: 'first_person',
  guiScale: 3,
  autoRequestCompletions: true,
  touchButtonsSize: 40,
  touchButtonsOpacity: 80,
  touchButtonsPosition: 12,
  touchMovementType: 'modern',
  touchInteractionType: 'classic',
  gpuPreference: 'default',
  backgroundRendering: '20fps',
  // ... and many more
}

Server-Safe Settings

Servers can remotely change certain safe settings. From src/defaultOptions.ts:167-204:
export const serverSafeSettings: Partial<Record<keyof typeof defaultOptions, true>> = {
  remoteContentNotSameOrigin: true,
  renderEars: true,
  viewBobbing: true,
  mouseRawInput: true,
  preciseMouseInput: true,
  showHand: true,
  fov: true,
  defaultPerspective: true,
  volume: true,
  musicVolume: true,
  enableMusic: true,
  smoothLighting: true,
  // ... and more display/input settings
}
Security-critical settings like modsSupport and customChannels cannot be changed by servers.

Resetting Settings

Reset all settings to defaults:
// Clear settings from localStorage
localStorage.removeItem('options')
location.reload()

Viewing Changed Settings

See which settings differ from defaults:
debugChangedOptions
This global variable shows only non-default values.

Browser-Specific Notes

Opera Mini

Disable mouse gestures in browser settings to avoid new tab opening on right-click-and-hold.

Vivaldi

Disable Raw Input if experiencing mouse issues:
options.mouseRawInput = false

Platform Recommendations

Desktop

  • renderDistance: 6-12
  • gpuPreference: 'high-performance'
  • numWorkers: 4-8

Mobile

  • renderDistance: 2-4
  • lowMemoryMode: true
  • touchMovementType: 'modern'
  • autoFullScreen: true

Low-End Devices

  • renderDistance: 2-3
  • lowMemoryMode: true
  • frameLimit: 30
  • backgroundRendering: '5fps'
  • smoothLighting: false

See Also

Build docs developers (and LLMs) love