x: 0, y: 0
Score: 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: - / -
SOLVER ACTIVE
Moves: 0
SettingsS
StatisticsT
Find FrontierF
Center CameraC
About / How It Works
⚙ Settings
Quick Settings
Display
Gameplay
Sound
Solver
Keys
Touch
Data
Setting Presets
Gameplay
Auto-Flag Obvious Mines
Automatically flags provably-safe mines. Locked flags can't be removed accidentally.
Chording
Click a number with enough flags to auto-reveal neighbors.
Adjacency Rule
Only reveal/flag cells touching explored tiles. Turn off to click anywhere.
Question Marks
Adds ? to the right-click cycle for marking uncertain cells.
Flag Locking
Proven flags require Shift+click to remove.
HUD
Show Coordinates
Current world position in the corner.
Show Score
Running score based on tiles revealed.
Show Tiles Revealed
Total safe tiles uncovered.
Show Time Played
Cumulative play time. Pauses when tab is hidden.
Sound
Sound Effects
Master toggle for all sound effects.
UI Visibility
Hide UI (Tab)
Hides the toolbar and all HUD elements. Press Tab to toggle.
Always Show Toolbar
When off, the toolbar hides until you hover the edge of the screen.
HUD
Show Coordinates
Current world position shown in the corner.
Show Chunk Coordinates
Shows the 32×32 chunk grid position. Useful for debugging.
Show Score
Running score based on tiles revealed. Higher numbers score more. Click the score display to see the full scoring table.
Show Tiles Revealed
Total number of safe tiles you've uncovered.
Show Time Played
Cumulative play time. Pauses automatically when the tab is hidden.
Show Performance Stats
FPS counter and render diagnostics. For troubleshooting slowdowns.
Rendering
Theme
Changes the sprite palette. Classic is the authentic Win95 look.
Antialiasing
Smooth-scales tiles when zooming. Off by default for crisp pixel-art rendering.
Colorblind Mode
COMING SOON Replaces number colors with shapes and patterns.
Visibility
Hide UI
Hides the toolbar and all HUD elements. Press Tab to toggle anytime.
Always Show Toolbar
When off, the toolbar hides until you hover the bottom edge of the screen.
Rules
Adjacency Rule
You can only reveal or flag cells touching already-explored tiles. Turn off to click anywhere freely.
Chording
Click a revealed number when enough neighbors are flagged to auto-reveal the rest. Middle-click or use the chord keybind.
Auto-Flag Chord
When chording, if all remaining unrevealed neighbors must be mines, flag them instead of revealing. Requires Chording to be enabled.
Question Marks
Adds a ? state to the right-click cycle: unrevealed → flag → ? → unrevealed. Useful for marking uncertain cells.
Flags
Auto-Flag Obvious Mines
Automatically flags mines that are provably surrounded by revealed tiles.
Flag Locking
Proven flags can't be accidentally removed without holding Shift. Disable to unflag freely.
Interface
Right-Click Context Menu
Show a context menu when right-clicking on revealed tiles, locked flags, or 0-tiles. Disable for a cleaner feel.
Middle Click
When middle-clicking a revealed number, chord instead of pan. Requires Chording to be enabled.
Master
Sound Effects
Requires sfx/ files next to index.html to function.
Volume
050100
30%
Master volume. Release the slider to hear a preview.
Sound Pack
Pack
Choose a sound style. Takes effect immediately. More packs coming soon.
Individual Sounds
Click ▶ to preview. Toggle to enable/disable each sound.
Dig
Dig (empty)
Chord
Flag
Unflag
Explosion
Find
Enable Solver
Auto-plays the game using constraint logic. Press P to start/stop mid-game. Cannot be enabled before your first reveal.
Visible Chunks Only
Limits solver to cells visible on screen. Faster, but won't make moves off-screen.
Allow Probability Guessing
When the solver is logically stuck, it picks the statistically safest guess to keep going.
World
Export World
Downloads your world as a JSON file — all explored chunks, stats, and settings bundled together.
Import World
Load a world save. Shows a preview with stats before replacing your current world.
Settings
Export Settings
Downloads your current settings as a small JSON file. No world data included.
Import Settings
Load a settings file. Storage budget and world data are never affected.
Storage Budget
Soft limit for save data. Warnings appear at 50%, 75%, 90%, 95%, and 99%. At 100%, new saves are skipped but existing data is safe. This is separate from the browser's hard quota — if that's hit, saves will fail with an error.
Block saves over budget
When off, saves continue past the soft limit (warnings still show).
MB
1.0 GB
Used: — —%
Settings
Reset All Settings
Resets all display, gameplay, sound, solver, and key settings to their defaults. Does not affect your save data.
⚠ Danger Zone
New Game
Wipes your current world and starts fresh with a new random seed.
Clear All Data
Permanently deletes all saved data from this browser. Cannot be undone.
Click a binding to reassign it. Press any key to set, Escape to cancel.
Navigation
Pan (hold)
Find Frontier
Center on Origin
Center on Cursor
Zoom In
Zoom Out
Actions
Settings
Solver Toggle
Performance Stats
Flag / Chord
Auto-Flag Chord
Toggle UI
Fixed — not rebindable.
0-Tile Mode Switch
Tap a blank (0) revealed tile to toggle flag/reveal mode.
Long-Press
Duration 500ms
50ms (fast)1000ms (slow)
Feedback
Haptic Feedback
Vibrate briefly on flag placement (if device supports it).
Long-Press Indicator
Show a visual ring while holding down to flag.
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
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.

Game Statistics
Progress
Score 0
Tiles Revealed 0
Chunks Explored 0
Actions
Flags Placed 0
Mines Hit 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
Seed
Chunks in Memory
Avg Size / Chunk
Storage Used
0
Chunks
Metadata
Welcome to the Infinite Minefield

An infinite minesweeper world that grows as you explore. Progress saves automatically — close anytime and come back later.

⚠ The Adjacency Rule:

You can only reveal or flag cells that are touching tiles you've already explored. You can't click randomly into unexplored territory — the board expands outward from where you are. This is what makes the infinite world feel connected. You can turn it off in Quick Options below.

Controls:
LMBReveal
RMBFlag
Click #Chord
RMB / SpaceFlag
DragPan
ScrollZoom
FFind frontier
CCenter
SSettings
EscClose modal
Keys rebindable in Settings → Keys tab
Setting Presets:
Quick Options:
Adjacency Rule
You can only reveal cells touching explored tiles
Auto-Flag Obvious Mines
Automatically locks in provably safe flags
Question Marks
Adds a ? state to the right-click cycle
Chording
Click a number to auto-reveal flagged neighbors
Flag Locking
Proven flags require Shift to remove
Sound Effects
Plays sounds for reveals, flags, and explosions
Show Coordinates
Displays your world position in the corner

More options in the settings menu (⚙ button, bottom-right). Hardware acceleration recommended for best performance. About & How It Works

Enjoying the game? Send feedback or support development.

⚠ 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.

    ⚠ Start New Game?

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

    Current Progress:
    Loading...
    ⚠ 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.