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
In-Game Menu
Press Escape or open the pause menu, then click Settings
Browser Console
Press F12 to open developer console, then type:On mobile, add #dev to the URL to enable console access. Modify Settings
Change settings via console:options.renderDistance = 8
options.fov = 90
Recommended Settings
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
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'
Default (Auto)
High Performance
Low Power
Let browser choose GPU (integrated or dedicated)
Force dedicated GPU on laptops with dual graphics
Force integrated GPU for battery saving
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.
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:
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
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