Infinite Minefield
Starting...
Score: 0
x: 0, y: 0
FPS: 0
Frame Time: 0ms
Loaded Chunks: 0
Revealed Chunks: 0
Visible Cells: 0
Zoom: 100%
Camera: 0, 0
Memory (chunks): 0
Canvas Pool: 0
Storage: - / -
MP Net: -
SOLVER ACTIVE
Tiles/s: 0
Storage warning βœ•
SettingsS
StatisticsT
Personal LeaderboardL
Find FrontierF
Center CameraC
Game Mode
MultiplayerO
About / How It Works
βš™︎ Settings βœ•
Preset:
Gameplay
Display
HUD
Sound
FX
Controls
Solver
Data
Console
Solver is disabled during multiplayer.
Console Log
No errors or warnings recorded.
Navigation
Pan (hold)
Find Frontier
Center on Origin
Center on Cursor
Zoom In
Zoom Out
Actions
Settings
Statistics
Personal Leaderboard
Multiplayer
Cell Ping (Multiplayer)
Solver Toggle
Performance Stats
Flag / Chord
Auto-Flag Chord
Toggle UI
Not rebindable
0-Tile Mode Switch
Tap a blank (0) revealed tile to toggle flag/reveal mode.
Long-Press
Duration
ms
50ms (fast)1000ms (slow)
Long-Press Indicator
Show a visual ring while holding down to flag.
Hover over a setting to see its description.
About β€” Infinite Minefield βœ•
About
Changelog
Credits

Infinite Minefield is procedurally generated in a 32Γ—32 tile chunk basis, allowing for an infinite world to play on.

All of your hard work and progress is saved automatically in your browser. You can close the tab, come back next week, or whenever you want, as long as you don't clear your browsing data. You have the option to download your saves to import wherever, whenever. If you are worried about storage, the save is pretty optimized where each 32Γ—32 chunk of tiles is typically under 1 KB (using binary RLE compression), which gives you plenty of space to play on before you even hit 5 MB of chunk storage.

There are also many features in the settings you can toggle. Feel free to play around with the various settings!

Features
  • Infinite procedurally generated board
  • Auto-saves directly to your browser
  • Fully remappable keybinds
  • Many customizable gameplay options
  • SFX BETA
Contact & Support

Found a bug? Have feedback or a feature idea? Just want to say hi? You can reach me through any of the following:

Email β€” jrmkruis@gmail.com
Discord β€” coming soon
Support Development

This game is free and will always stay free. If you enjoy it and want to support further development, a small donation goes a long way.

Donate β€” coming soon
build 381636437
Show Pre-release
Pre-release entries are incremental changes between official versions.
v0.16.0 2026-04-02 β€” World generation, save format & QoL
Added
  • Keybind to center camera on origin (H) and separately on mouse cursor (C)
  • Keybinds to zoom in/out one step (= and -), both rebindable
  • Versioned chunk save format β€” magic header + version byte ensure future updates can detect and handle incompatible saves gracefully
  • Incompatible save modal β€” shown on load when a save cannot be read, with a description of what changed and a guarantee it won't happen again
  • Exported saves (.json) now include a saveVersion field; imports validate it and show the incompatible save modal if mismatched
  • Safe zone around spawn expanded from Β±1 to Β±2 cells (5Γ—5 guaranteed clear area)
Changed
  • Mine density rebalanced to a flat 10–30% range (was a skewed 3-tier system that pushed ~40% of chunks to 35–40% density)
  • Mine density now sampled from a two-layer value noise field instead of a per-chunk roll β€” eliminates hard density jumps at chunk boundaries and produces smooth, organic region transitions
  • Random number generation upgraded from Math.sin-based to a multiply-xorshift hash β€” passes chi-squared uniformity, no sequential clustering
  • Cell seed formula improved to a two-round xorshift mix, reducing correlation between neighboring cells
  • Chunk coordinate limit raised from Β±32,767 to Β±2,147,483,647 β€” chunk keys and binary format both updated to Int32
  • Cell-level coordinate limit removed β€” solver frontier and flood-fill keys switched from arithmetic packing (Β±1,048,576) to string keys with no limit
  • globalSeed now always stored and restored as unsigned 32-bit to prevent negative seeds from bitwise ops
  • Empty generated chunks (created by neighbor lookups) are now evicted by the distant chunk unloader instead of accumulating in memory indefinitely
  • Canvas pool cap reduced from 500 to 64 β€” large enough to absorb fast panning, removes the 500MB theoretical memory ceiling
  • Solver runs tier 1 (simple rules) every 50ms and tier 2/3 (CSP) every 250ms on separate schedules, reducing main-thread blocking
  • Constraint graph is cached between solver ticks and only rebuilt when a cell state changes, eliminating redundant work on static boards
  • Flag-lock deduction search radius reduced from Β±2 to Β±1 per pass, eliminating stutter when flagging in enclosed areas
  • Auto-flag chord deduction deferred to after frame paint, consistent with manual flag deduction
Fixed
  • Solver did not activate on load until the first player interaction β€” empty frontier array was incorrectly treated as a valid restored frontier instead of triggering a rebuild
  • Revealed cells did not appear in the simplified (zoomed-out) renderer until a refresh β€” cascade reveals skipped simplified cache invalidation
  • Chunk coordinates in the binary save format were capped at Β±32,767 due to Int16 encoding β€” silently corrupting saves for players who explored far enough
  • chunkKey collided at Β±32,768 β€” two different chunks could share the same map key
  • Solver frontier restored from old numeric-key saves caused a load error (key.indexOf is not a function) β€” old format now detected and rebuilt instead
v0.15.0 2026-04-02 β€” Performance & code quality
Changed
  • Flag placement, reveals, and chords now paint to screen immediately β€” deduction and auto-flag logic runs after the frame, eliminating all input lag when flag locking is on
  • 0-tile cascade reveals now batch all chunk canvas updates into one pass per chunk instead of one draw call per revealed cell, significantly reducing jank on large cascades
  • Stats modal opens immediately; storage estimate fills in after paint instead of blocking the open
  • Auto-flag deduction is now skipped entirely when a flag has no revealed numbered neighbor β€” common in open areas
  • Classic preset no longer enables question marks
Fixed
  • Spacebar flag placement did not visually update until the camera moved or a chord was performed
Internal
  • Extracted commitChord, deferFlagDeduction, startPanning, and wireToggle helpers β€” chord and flag behavior now has a single source of truth
  • Renamed markChunkDirty to scheduleChunkSave to distinguish it from render-dirty state
  • Deduction pass reuses pre-allocated flat arrays and Sets across passes, eliminating per-pass GC pressure; BFS queue uses a read-pointer instead of Array.shift()
v0.14.3 2026-03-05 β€” Quick Settings, presets & UI hide
Added
  • Quick Settings now exist as a dedicated tab in the Settings modal
  • Presets for settings: Standard, Classic, Beginner (Beginner does nothing as of now)
  • The UI can now be toggleable in settings or by keybind. Default keybind is TAB
Changed
  • Right-click context menu now off by default
v0.14.1 2026-03-04 β€” Bug fixes
Fixed
  • Hitting a mine could corrupt nearby cells, making 0-tiles become mines
  • Audio stops working after the browser suspends the AudioContext
v0.14.0 2026-03-02 β€” Memory overhaul & gameplay polish
Added
  • Flag locking toggle in settings and welcome modal
  • Manual "Lock Flags" button in Gameplay settings
Changed
  • Cell storage rewritten to Uint16Array β€” ~12Γ— less memory per cell
  • Coordinate encoding upgraded to 53-bit integers β€” no more key collisions at large distances
  • Settings toggles no longer trigger expensive storage operations
  • Canvas pool size tracked in O(1) instead of scanning all chunks each frame
Fixed
  • False flag sprite persisting after subsequent actions
  • IndexedDB failing silently on init β€” added fallback timeout and version change handling
v0.13.1 2026-02-28 β€” Bug fixes
Fixed
  • Keybind conflict check incorrectly triggering when reassigning a key to itself
  • Tab border and z-index misalignment in Win98 settings modal
  • Solver save guards accidentally left disabled after a debug session
v0.13.0 2026-02-27 β€” Controls & HUD
Added
  • Chording toggle β€” chord reveal can be fully disabled
  • Middle-click behavior selector: pan or chord
  • Custom seed input in New Game modal
  • Antialiasing toggle, off by default
Changed
  • Score, Tiles, and Time HUD elements now stack dynamically without overlapping
v0.12.0 2026-02-26 β€” About modal, audio & build tooling
Added
  • About modal with About, Features, Changelog, and Credits tabs
  • Adjacency rule toggle with welcome modal explanation
  • Local dev server batch file for Windows
Fixed
  • Mine density clustering in explosion zones caused by correlated RNG output
  • Volume slider storing wrong gain value at 30% position
  • Sound settings UI not greying out correctly when audio is disabled
  • Settings tab and About tab click handlers interfering with each other
v0.11.0 2026-02-25 β€” Win98 UI & sound system
Added
  • Full Windows 98 visual redesign for UI
  • Sound system with 8 SFX, pitch variance, and flood-fill suppression
  • Customizable state.keybindings with a dedicated Keys tab in settings
  • 5-click confirmation on all destructive reset buttons
  • Score breakdown tooltip accessible via ? button
Changed
  • Right-click on canvas now opens a context menu, default on
v0.10.1 2026-02-24 β€” Performance
Changed
  • Cell changes now patch directly into chunk caches instead of regenerating the whole chunk
  • All canvases set to opaque β€” removes unnecessary GPU alpha compositing
  • Solver frontier rebuild optimized (~4Γ— faster)
v0.10.0 2026-02-23 β€” Scoring
Added
  • Risk-based scoring β€” higher adjacent mine count = more points
  • Score and Tiles Revealed display toggles
  • Score breakdown panel showing point values per tile type
  • Scoring overview in welcome modal
v0.9.1 2026-02-21 β€” Bug fixes
Fixed
  • Flag locking incorrectly locking misflags near satisfied numbers
  • Wrong-chord X sprite applied to the detonated mine instead of the misflagged cell
v0.9.0 2026-02-20 β€” Coordinates & visual feedback
Added
  • Chunk coordinate display toggle
  • Misflagged cell briefly shows X sprite when a chord detonates a real mine
v0.8.0 2026-02-13 β€” Authentic sprites
Changed
  • All sprites replaced with the authentic Win95 Minesweeper texture atlas
  • Cell size changed to 16px to match native atlas tile size
v0.7.0 2026-02-06 β€” Settings persistence
Added
  • All settings now persist across sessions
Changed
  • Welcome modal now only appears on first visit
  • Clearing all data automatically starts a new game
v0.6.0 2026-02-05 β€” Auto-flag assistance
Added
  • Option to automatically flag mines if fully surrounded by revealed tiles, default on
v0.5.0 2026-02-04 β€” Infinite* storage
Added
  • Storage quota warning display
Changed
  • Migrated from localStorage to IndexedDB, increasing the potential save size depending on your machine
  • Save data uses binary format, making it 67% smaller than before
v0.4.0 2026-02-03 β€” Advanced solver
Added
  • CSP backtracking solver β€” resolves patterns that simple rules can't crack
Fixed
  • Solver not recognizing revealed mines as satisfied constraints
  • Chunk border seams appearing at certain zoom levels
  • Flags disappearing when switching between zoom levels
v0.3.0 2026-02-04 β€” Rendering overhaul
Changed
  • Chunk rendering reduced from ~5,000 to ~20 GPU state changes, vastly improving performance
  • High-zoom rendering now uses chunk cache instead of redrawing every cell
  • Unrevealed tile grid drawn as a single pattern fill instead of per-cell
  • Sprites drawn at native resolution, eliminating scaling overhead
v0.2.0 2026-01-31 β€” Foundation
Added
  • Canvas pooling to eliminate garbage collection stuttering
  • Frontier-based solver (simple rules)
  • requestAnimationFrame render loop for smooth 60 FPS
Fixed
  • Flags placed in unexplored areas not rendering
  • Flagging a cell not checking adjacency rules
v0.1.0 2026-01-30 β€” Initial build
Added
  • The game
Made By
Design & Development Oirehm
Built With
Rendering HTML5 Canvas
Language Vanilla JavaScript
Storage IndexedDB
Dependencies None
Sprite Sheet
Original rip TCRF
Sheet work Inky, DaSpriter121

Winmine 95/98/ME sprite sheet. Used for visual recreation purposes only.

Legal

Minesweeper is a trademark of Microsoft Corporation. This is an independent fan project with no affiliation to or endorsement by Microsoft. Sprite assets are reproduced for non-commercial fan use only.

World Statistics
βœ•
Progress
Score 0
Tiles Revealed 0
Chunks Explored 0
Chunks Solved 0
Actions
Flags Placed 0
Mines Hit 0
Mines Found 0
Accuracy β€”
Individual Reveals 0
Chords Performed 0
Tile Breakdown
Blank (0) 0
1s 0
2s 0
3s 0
4s 0
5s 0
6s 0
7s 0
8s 0
Time
Total Time 00:00:00
Session Time 00:00:00
Tiles / Minute β€”
World
World Type β€”
Created β€”
Seed β€”
Chunks in Memory β€”
Avg Size / Chunk β€”
Welcome β€” Infinite Minefield
Infinite Minefield
v0.16.0  Β·  build 381636437
An infinite minesweeper world that grows as you explore. Your progress saves automatically β€” close the tab and come back anytime. There's plenty to customize to your liking via the Settings button in the toolbar.
Toolbar
Settings
Gameplay, display & keybinds
Stats
Session & lifetime statistics
Leaderboard
Personal Leaderboard & best runs
Find Frontier
Jump to your unexplored edge
Center Camera
Snap view back to origin
Game Mode
Switch modes & save slots
About
Changelog, credits & contact info
⚠︎ Save Incompatible

We're sorry. A recent update changed how the world is generated, and your previous save is no longer compatible. Your progress couldn't be loaded.

What changed:
    This won't happen again.

    The save format is now versioned. Future updates will always be able to read your progress, even if the game changes.

    A fresh world has been started for you. Sorry for the inconvenience.

    Host this world?

    ⚠︎ Start New Game? βœ•

    This will permanently delete your current game progress. Consider downloading your save first.

    Current Progress:
    Loading...
    Game Over: Hardcore

    You hit a mine. Your world has been lost.

    ⚠︎ Delete All Data? βœ•

    This will permanently delete your entire save β€” all explored chunks, progress, and score. Settings will also be reset to defaults. This cannot be undone.

    Current Progress:
    Loading...
    Import World Preview βœ•
    βš™︎ Import Settings β€” Preview βœ•

    Storage budget and world data will not be affected.

    Restore Backup Preview βœ•

    Choose what to restore:

    Update Available

    A new version of Infinite Minefield is available.

    Game Mode
    Standard
    Infinite minesweeper. Explore as far as you dare.
    No Guess
    Every move is logically deducible. Guesses are blocked.
    Hardcore
    One mine hit resets your world. No Guess generation.
    Import & export disabled β€” Hardcore progress is local only
    Play Classic
    Finite board, one game at a time. Pick a difficulty and go.
    No Guess
    Mode
    Saves
    New Game
    β†Ί
    Reset this save
    Start over in the current slot β€” progress is deleted
    οΌ‹
    New save
    Create a separate save slot β€” current progress is kept
    New Save

    A new save slot will be created for this mode. Your current progress is preserved.

    Multiplayer
    Host a World
    Create a room and share the code with a friend
    β–Ά
    Join a World