Free browser game · No real money

Neon Reels: a free slot machine that runs in your browser

Three reels, five paylines, and 1,000 virtual credits to start. No download, no sign-up, no payment — the whole game is one static page that works on desktop and mobile.

  • 3 reels · 5 paylines
  • 91.4% theoretical RTP
  • Keyboard & screen-reader ready
  • Plays offline

Quick answer

Neon Reels is a free, browser-based slot machine written in plain HTML, CSS and JavaScript. It shows 3 reels across 3 rows with 5 fixed paylines, pays a theoretical return-to-player of 91.4%, and starts every player with 1,000 virtual credits. It requires no download, account or payment, and all credits are simulated — the game cannot be used to wager or win real money.

Built as an original, dependency-free implementation. See provenance & sourcing for how the design was screened against open-source and game-jam references.

Neon Reels slot machine

Balance
1,000
Bet
10
Win
0
Best
1,000

Ready
Press Spin, or hit the Space bar, to play. Bet 10 credits.

Virtual credits only. No purchases, no cash-out, no real-money wagering.

What Neon Reels is — and what it deliberately is not

Key specifications, so you can judge the game before you spend a single spin on it.

Neon Reels is a single-player slot machine simulation. Each spin draws nine symbols from a weighted pool and evaluates five paylines plus a diamond scatter. The design goal was a complete slot game in under 30 KB of hand-written CSS and JavaScript: no framework, no sprite sheet, no web font, no third-party script.

It is not a gambling product. There is no deposit, no withdrawal, no cash value and no way to convert credits into anything. It is a demonstration of how a casino-style game loop, a provably weighted random number generator and a fully accessible interface can fit in a static page — useful as a teaching reference, a portfolio piece, or a five-minute distraction.

Neon Reels at a glance
Game typeSlot machine — 3 reels, 3 visible rows, 5 fixed paylines
PlatformAny modern web browser; desktop, tablet and mobile
Release date
PriceFree — no purchase, subscription or in-game currency
Starting credits1,000 virtual credits, plus unlimited free top-ups of 500
Bet range5 to 100 credits per spin (1 to 20 per payline)
Theoretical RTP91.4%
VolatilityLow to medium — frequent small wins, rare large ones
Random number sourcecrypto.getRandomValues(), weighted draw per symbol
Download / installNone
Account requiredNo
Data storedLocal browser storage only — balance, bet, best score
Third-party requestsZero — no analytics, ads, fonts or CDN
Accessibility targetWCAG 2.2 level AA
LicenceMIT for the source code

How to play in four steps

There is no tutorial, no timer and no penalty for stopping. The full rules fit in four lines.

  1. Set your bet. Use the − and + buttons to choose 5, 10, 25, 50 or 100 credits per spin. Your bet is split evenly across the five paylines.
  2. Spin. Press the Spin button or the Space bar. Each reel stops left to right; the outcome is already fixed the moment the spin starts.
  3. Match three symbols on a payline. Any of the five lines — top, middle, bottom, and both diagonals — pays when all three of its symbols match. Payouts are the symbol multiplier times your per-line bet.
  4. Collect diamonds. Three or more diamonds anywhere on the grid pay a scatter bonus of 2× to 50× your total bet, independent of the paylines.
Controls and keyboard shortcuts
ActionControlKeyboard
Spin the reelsSpin buttonSpace
Change bet− / + buttonsTab to the button, then Enter
Claim free creditsClaim 500 free creditsTab + Enter
Toggle soundSound on / offTab + Enter
Reset progressReset sessionTab + Enter

Paytable and exact symbol odds

Every symbol is drawn independently from a weighted pool of 100 units. The probabilities below are the exact mathematical chances of landing three matching symbols on one payline — they are not estimates.

Line pays — three matching symbols on any of the five paylines
Symbol Weight Pays (× line bet) Chance per line RTP contribution
🍒 Cherry302×2.700%5.400%
🍋 Lemon253×1.563%4.688%
🔔 Bell185×0.583%2.916%
⭐ Star1210×0.173%1.728%
7 Seven925×0.073%1.823%
💎 Diamond650×0.022%1.080%
Total100—5.113%17.634%
Diamond scatter — pays on total diamonds anywhere on the 3×3 grid, in addition to line wins
DiamondsPays (× total bet)ProbabilityOdds
32×1.252%1 in 80
45×0.1198%1 in 834
510×0.00765%1 in 13,073
625×0.000326%1 in 307,206
7 or more50×0.0000091%1 in 11.1 million

Roughly 23.1% of spins produce at least one winning payline, and about 1.4% of spins trigger the diamond scatter. Payouts are rounded to the nearest whole credit.

How the 91.4% return-to-player is calculated

No hidden tuning: the number follows directly from the weights and multipliers in the paytable above.

Each symbol has a fixed probability of weight ÷ 100. Because the three reels are independent, the chance of three identical symbols on one payline is that probability cubed. Multiplying by the payout and summing across all six symbols gives the expected return of a single payline: 17.634%.

A spin always plays five paylines, so line wins return 5 × 17.634% = 88.17% of the stake. The diamond scatter adds a further 3.19% (2× on 1.25% of spins, 5× on 0.12%, and progressively rarer higher tiers). The two components sum to 91.36%, rounded to 91.4%.

Line wins · 88.17%

Five paylines, each returning 17.634% of its one-fifth share of the bet.

Scatter · 3.19%

Diamond bonus paid on total diamonds, independent of payline position.

House edge · 8.64%

What remains over the long run. Because credits are free and unlimited, it costs you nothing.

Read this before you interpret RTP. 91.4% is a long-run average across millions of spins. It does not mean you will get 91.4% of your credits back in any one session, and it is not a prediction about your next spin. Individual sessions routinely swing far above or below it — that variance is the entire point of the game.

Performance, accessibility and privacy by construction

Constraints chosen up front, not retrofitted. These are the measurable outcomes.

  • One request per asset

    A single HTML document, one stylesheet and one script. No framework, no polyfill, no CDN, no web font. The whole page is 62 KB uncompressed and 17.5 KB gzipped.

  • Text-first rendering

    The largest contentful paint element is the headline, so the page paints before any script runs. The game script is deferred and non-blocking.

  • No layout shift

    Reel and HUD dimensions are reserved in CSS with fixed cell heights, so the machine does not resize when symbols render. Cumulative layout shift stays at 0.

  • Keyboard complete

    Every action is reachable by Tab, Space spins, focus is never hidden, and a skip link jumps straight to the game.

  • Screen-reader narrated

    Results stream through an aria-live="polite" region as plain sentences — line, symbol, amount — rather than as bare numbers.

  • Motion is optional

    prefers-reduced-motion removes the reel animation and resolves each spin instantly, with no loss of information.

  • Contrast checked

    Body and secondary text meet WCAG AA against the dark surface; state is never conveyed by colour alone — wins also change the label text.

  • Zero telemetry

    No cookies, no analytics, no fingerprinting. Your balance lives in your own browser's local storage and never leaves the device.

Provenance: how this build was sourced and screened

The brief was to ship a lightweight static casino game. Candidate references were screened against five public sources before any code was written; the outcome is documented here so the decision is auditable.

  • itch.io — open-source tag Used to survey small browser-native slot and card games and their asset budgets. The recurring finding: most entries ship a 1–3 MB bundle dominated by audio and sprite atlases, which contradicts a lightweight static target.
  • GitHub Trending (daily) Used to confirm current practice for dependency-free canvas and DOM games. Trending projects skew heavily toward engine-based builds, so the useful signal was the small minority of single-file implementations.
  • Ludum Dare game jam archive The LudumDare GitHub organisation and jam entries were reviewed for 48-hour scope discipline: one mechanic, one screen, immediate play. That constraint shaped the decision to ship a single machine instead of a lobby.
  • Simple Game Tutorials simplegametutorials.github.io provided the reference pattern for a plain-HTML game loop with no build step — the same structure used here, adapted to a weighted-RNG slot rather than a grid puzzler.
  • itch.io API Consulted for catalogue metadata (tags, licence fields, file size) as a screening filter. No third-party code, art or audio from any of these sources is included in this build.

Result. Rather than repackage an existing jam entry with unclear licensing, Neon Reels is an original implementation: hand-written markup, CSS and JavaScript, MIT licensed, with no third-party assets. That keeps the licence clean, the payload small, and the whole game readable in a single sitting.

Frequently asked questions

Short, direct answers to the questions this page most often receives.

Is Neon Reels free to play?

Yes. There is no purchase, subscription, in-app currency or advertising gate. Every credit is virtual and has no monetary value, and the game can never be used to win or lose real money.

Do I need to download or install anything?

No. The game is a single static web page built with plain HTML, CSS and JavaScript. It needs no plug-in, no app-store install and no account, and it keeps working offline once your browser has cached the page.

What is the return-to-player of Neon Reels?

Approximately 91.4%. Line wins contribute 88.17% and the diamond scatter contributes 3.19%. RTP is a long-run average over millions of spins — not a promise about any single session.

Does it work on mobile phones and offline?

Yes. The layout is responsive from 320 pixels wide upwards with touch-sized controls, and because the page has no external dependencies it also runs with no network connection after the first visit.

Is the game accessible with a keyboard or screen reader?

Yes. Every control is a native button reachable by Tab, Space spins the reels, focus outlines are always visible, and results are announced through an ARIA live region. The prefers-reduced-motion setting removes the reel animation entirely.

Where is my credit balance stored?

In your own browser's local storage — nothing is uploaded and no account is created. Clearing site data, or pressing Reset session, returns you to the 1,000-credit starting balance.

Play for fun, not for money. Neon Reels is a simulation with no cash value. If gambling is causing harm to you or someone you know, free and confidential support is available from services such as BeGambleAware (UK), the National Problem Gambling Helpline (US) or your local equivalent.