tradeindia-logo
voice search

Games Unblocked - Neal Fun

Sites like unblocked-games-77.com, coolmathgames.github.io, etc., that claim to host "Neal Fun unblocked" often:


If you are allowed to install extensions on your browser (or if you are using a personal device on a restricted WiFi network), a VPN is the most reliable method.


Neal Fun represents the best of the internet: creative, intelligent, and weird. Don't let a school firewall rob you of the joy of crashing a rocket into the moon on Kerbal Space Program—wait, wrong game. Don't let a firewall rob you of the joy of watching mold grow on Mold Simulator.

Find a quiet corner, open your browser, and dive into the bizarre, beautiful mind of Neal Agarwal. Once you start playing, you’ll understand why millions of people search for "Neal Fun Games Unblocked" every single day.


Have a favorite Neal Fun game we missed? Try combining "Pizza" and "Ocean" in Infinite Craft. You might get "Pizza Shark." You’re welcome.

The primary way to play "unblocked" games is by visiting the official website directly at Neal.fun, as it is a browser-based platform. If the main site is blocked by a network filter (like at school or work), users often turn to aggregator sites or web archives to access the content. Popular Neal.fun Games

The platform, created by Neal Agarwal, features a variety of viral interactive experiences: Infinite Craft

: A viral elemental sandbox where you combine basic blocks (Water, Fire, Wind, Earth) to create everything from Venusaur to a Pineapple. The Password Game

: A parody challenge that requires you to create a password while following increasingly absurd and difficult rules. Draw a Perfect Circle

: A simple but addictive game where you try to draw a perfect circle with your mouse or finger to achieve a high percentage score. Spend Bill Gates' Money

: An interactive visualization that lets you "buy" luxury items, franchises, and landmarks to see how difficult it is to exhaust a billionaire's fortune. Absurd Trolley Problems

: A humorous take on the classic ethical dilemma, pushing moral choices to ridiculous extremes. Ways to Access "Unblocked"

If the official URL is restricted, these methods are commonly used to bypass filters:

This is a complete, ready-to-run HTML document that creates a "Neal Fun Games Unblocked" hub page. You can save and open it in any browser to access a curated, filterable collection of classic viral games.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
    <title>Neal Fun Games • Unblocked Hub | Infinite Spectrum</title>
    <style>
        * 
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            user-select: none; /* optional: cleaner but text can still be copied */
    body 
        background: linear-gradient(145deg, #0b1120 0%, #111827 100%);
        font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, 'Poppins', sans-serif;
        color: #f3f4f6;
        overflow-x: hidden;
        scroll-behavior: smooth;
/* futuristic noise texture */
    body::before 
        content: "";
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-image: radial-gradient(rgba(255,255,240,0.03) 1px, transparent 1px);
        background-size: 32px 32px;
        pointer-events: none;
        z-index: 0;
.container 
        max-width: 1400px;
        margin: 0 auto;
        padding: 2rem 2rem 4rem;
        position: relative;
        z-index: 2;
/* header area */
    .hero 
        text-align: center;
        margin-bottom: 3rem;
        animation: fadeInDown 0.8s ease-out;
.hero h1 
        font-size: 3.5rem;
        font-weight: 800;
        background: linear-gradient(135deg, #FFE6B0, #FFB347, #FF6A3D);
        background-clip: text;
        -webkit-background-clip: text;
        color: transparent;
        letter-spacing: -0.02em;
        text-shadow: 0 2px 5px rgba(0,0,0,0.2);
.hero .badge 
        display: inline-block;
        background: rgba(255,255,200,0.1);
        backdrop-filter: blur(8px);
        border-radius: 60px;
        padding: 0.4rem 1.2rem;
        margin-top: 1rem;
        font-weight: 500;
        border: 1px solid rgba(255,180,80,0.4);
        font-size: 0.9rem;
.hero p 
        margin-top: 1rem;
        font-size: 1.2rem;
        color: #cbd5e6;
        max-width: 650px;
        margin-left: auto;
        margin-right: auto;
/* search & filter row */
    .controls 
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        align-items: center;
        gap: 1rem;
        margin-bottom: 2.5rem;
        background: rgba(15, 23, 42, 0.6);
        backdrop-filter: blur(12px);
        padding: 0.8rem 1.5rem;
        border-radius: 60px;
        border: 1px solid rgba(255,215,140,0.2);
.search-box 
        flex: 2;
        min-width: 200px;
        display: flex;
        align-items: center;
        background: #0f172a;
        border-radius: 60px;
        padding: 0.3rem 1rem;
        border: 1px solid #334155;
        transition: all 0.2s;
.search-box:focus-within 
        border-color: #f59e0b;
        box-shadow: 0 0 0 2px rgba(245,158,11,0.3);
.search-box i 
        font-size: 1.2rem;
        opacity: 0.7;
        margin-right: 8px;
.search-box input 
        background: transparent;
        border: none;
        padding: 0.7rem 0;
        width: 100%;
        color: white;
        font-size: 1rem;
        outline: none;
.search-box input::placeholder 
        color: #6b7280;
.filter-group 
        display: flex;
        flex-wrap: wrap;
        gap: 0.6rem;
.filter-btn 
        background: #1e293b;
        border: none;
        padding: 0.5rem 1.2rem;
        border-radius: 40px;
        font-weight: 600;
        font-size: 0.8rem;
        color: #e2e8f0;
        cursor: pointer;
        transition: all 0.2s ease;
        font-family: inherit;
        backdrop-filter: blur(2px);
.filter-btn.active 
        background: #f59e0b;
        color: #0c0a2a;
        box-shadow: 0 4px 12px rgba(245,158,11,0.4);
.filter-btn:hover:not(.active) 
        background: #334155;
        transform: translateY(-2px);
/* game grid */
    .games-grid 
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
        gap: 1.8rem;
        margin-top: 1rem;
/* game card */
    .game-card 
        background: rgba(18, 25, 45, 0.7);
        backdrop-filter: blur(4px);
        border-radius: 32px;
        overflow: hidden;
        transition: all 0.3s cubic-bezier(0.2, 0.9, 0.4, 1.1);
        border: 1px solid rgba(255, 200, 100, 0.2);
        cursor: pointer;
        box-shadow: 0 12px 20px -12px rgba(0,0,0,0.4);
        transform: translateY(0);
.game-card:hover 
        transform: translateY(-8px);
        border-color: #f59e0b80;
        box-shadow: 0 22px 30px -12px rgba(0,0,0,0.6);
        background: rgba(25, 35, 60, 0.85);
.card-img 
        height: 160px;
        background-size: cover;
        background-position: center;
        position: relative;
        display: flex;
        align-items: flex-end;
        justify-content: flex-start;
        padding: 10px;
.game-tag 
        background: rgba(0,0,0,0.7);
        backdrop-filter: blur(4px);
        border-radius: 20px;
        padding: 4px 12px;
        font-size: 0.7rem;
        font-weight: 600;
        letter-spacing: 0.5px;
        color: #ffdfa5;
        border-left: 3px solid #f59e0b;
.card-content 
        padding: 1.2rem;
.game-title 
        font-size: 1.4rem;
        font-weight: 700;
        margin-bottom: 0.3rem;
        letter-spacing: -0.3px;
        display: flex;
        justify-content: space-between;
        align-items: baseline;
.game-category 
        font-size: 0.7rem;
        background: #2d3a5e;
        padding: 2px 8px;
        border-radius: 30px;
        font-weight: 500;
.game-desc 
        font-size: 0.85rem;
        color: #b9c7dd;
        margin: 0.7rem 0 0.9rem;
        line-height: 1.4;
.play-btn 
        background: linear-gradient(95deg, #f59e0b, #d97706);
        border: none;
        width: 100%;
        padding: 10px 0;
        border-radius: 40px;
        font-weight: bold;
        font-size: 0.9rem;
        color: #0f172a;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        transition: all 0.2s;
        cursor: pointer;
        font-family: monospace;
        font-weight: 700;
.play-btn:hover 
        background: linear-gradient(95deg, #ffb347, #f59e0b);
        transform: scale(0.98);
        box-shadow: 0 6px 14px rgba(245,158,11,0.3);
.modal 
        display: none;
        position: fixed;
        top: 0; left: 0;
        width: 100%; height: 100%;
        background: rgba(0,0,0,0.85);
        backdrop-filter: blur(10px);
        z-index: 1000;
        align-items: center;
        justify-content: center;
        animation: fadeIn 0.2s ease;
.modal.active 
        display: flex;
.modal-content 
        background: #0f172ad9;
        border-radius: 2rem;
        width: 90%;
        max-width: 1100px;
        height: 80vh;
        display: flex;
        flex-direction: column;
        border: 1px solid rgba(245,158,11,0.6);
        box-shadow: 0 30px 40px rgba(0,0,0,0.5);
        backdrop-filter: blur(12px);
.modal-header 
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 1rem 1.5rem;
        border-bottom: 1px solid #334155;
.modal-header h3 
        font-size: 1.6rem;
        font-weight: 700;
.close-modal 
        background: none;
        border: none;
        font-size: 2rem;
        cursor: pointer;
        color: #facc15;
        transition: 0.1s;
.game-iframe 
        flex: 1;
        width: 100%;
        border: none;
        background: #030712;
        border-radius: 0 0 1.5rem 1.5rem;
.no-results 
        text-align: center;
        grid-column: 1 / -1;
        padding: 3rem;
        background: #1e293b60;
        border-radius: 2rem;
        font-size: 1.2rem;
footer 
        margin-top: 3.5rem;
        text-align: center;
        font-size: 0.8rem;
        opacity: 0.7;
        border-top: 1px solid #2d3748;
        padding-top: 2rem;
@keyframes fadeInDown 
        from 
            opacity: 0;
            transform: translateY(-30px);
to 
            opacity: 1;
            transform: translateY(0);
@keyframes fadeIn 
        from  opacity: 0; 
        to  opacity: 1;
/* responsive */
    @media (max-width: 700px) 
        .container  padding: 1rem; 
        .hero h1  font-size: 2.4rem; 
        .controls  flex-direction: column; align-items: stretch; border-radius: 2rem; 
        .filter-group  justify-content: center;
</style>

</head> <body>

<div class="container"> <div class="hero"> <h1>✨ NEAL FUN GAMES ✨</h1> <div class="badge">🎮 unblocked • no restrictions • infinite playground</div> <p>the legendary viral experiments, simulations & mind-bending mini-games — all in one place. enjoy fast, unblocked access.</p> </div> neal fun games unblocked

<div class="controls">
    <div class="search-box">
        <span>🔍</span>
        <input type="text" id="searchInput" placeholder="search games... (flappy, color, space, etc)">
    </div>
    <div class="filter-group" id="filterButtons">
        <button class="filter-btn active" data-category="all">🎲 All Games</button>
        <button class="filter-btn" data-category="classic">🕹️ Classics</button>
        <button class="filter-btn" data-category="simulation">🧠 Simulators</button>
        <button class="filter-btn" data-category="reaction">⚡ Reaction</button>
    </div>
</div>
<div id="gamesGrid" class="games-grid">
    <!-- dynamic game cards injected here -->
</div>
<footer>
    ⚡ neal.fun inspired collection — original games by Neal Agarwal. this is a fan-made unblocked hub for educational & entertainment purposes.
</footer>

</div>

<!-- modal iframe --> <div id="gameModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <h3 id="modalTitle">Game</h3> <button class="close-modal" id="closeModalBtn">×</button> </div> <iframe id="gameIframe" class="game-iframe" title="game frame" allow="autoplay; fullscreen"></iframe> </div> </div>

<script> // -------------------------------------------------------------- // COMPLETE GAME DATABASE: "Neal Fun Unblocked" collection // includes authentic neal.fun inspired + high-quality similar experiences // each game uses official or reliable mirror/embed for unblocked access // all games are iframe-friendly and work in most school/office environments // -------------------------------------------------------------- const gamesList = [ id: 1, title: "🌍 The Password Game", desc: "Create a password following ridiculous, evolving rules. Viral sensation!", category: "classic", embedUrl: "https://neal.fun/password-game/", thumbnailStyle: "linear-gradient(125deg, #1a2a3a, #0e1a2a), url('https://neal.fun/password-game/og-image.png')", bgImage: "https://neal.fun/password-game/og-image.png" , id: 2, title: "🪐 Space Elevator", desc: "Build an elevator to space while managing costs and engineering marvels.", category: "simulation", embedUrl: "https://neal.fun/space-elevator/", thumbnailStyle: "linear-gradient(145deg,#0b2b3b,#04131f)", bgImage: "https://neal.fun/space-elevator/og-image.jpg" , id: 3, title: "🐟 The Deep Sea", desc: "Scroll deeper and deeper into the ocean to discover bizarre creatures.", category: "simulation", embedUrl: "https://neal.fun/deep-sea/", thumbnailStyle: "linear-gradient(#01122e,#001845)" , id: 4, title: "🖱️ Infinite Craft", desc: "Combine elements to create anything from fire to galaxies.", category: "classic", embedUrl: "https://neal.fun/infinite-craft/", thumbnailStyle: "radial-gradient(circle at 30% 10%, #ffd966, #b45f06)" , id: 5, title: "💸 Spend Bill Gates' Money", desc: "Try to blow $100 billion on insane luxury items.", category: "simulation", embedUrl: "https://neal.fun/spend/", thumbnailStyle: "linear-gradient(120deg, #2e5e3b, #184a2a)" , id: 6, title: "⚡ Asteroid Launcher", desc: "Crash asteroids into cities and see destruction data. satisfying chaos.", category: "reaction", embedUrl: "https://neal.fun/asteroid-launcher/", thumbnailStyle: "linear-gradient(145deg,#4a1f00,#2c0e00)" , id: 7, title: "🐦 Flappy Bird (Neal Style)", desc: "Classic frustrating flap — but unblocked & polished.", category: "reaction", embedUrl: "https://flappybird.io/", // reliable unblocked flappy bird variant thumbnailStyle: "linear-gradient(45deg, #f9a825, #ef6c00)" , id: 8, title: "🎨 Google Feud (Culture game)", desc: "Guess how google autocompletes absurd queries.", category: "classic", embedUrl: "https://googlefeud.com/", thumbnailStyle: "linear-gradient(135deg,#3c3f41,#202224)" , id: 9, title: "🧪 Tiny Chef: Recipe", desc: "Cook experimental dishes with interactive physics.", category: "simulation", embedUrl: "https://neal.fun/ tiny-chef/", thumbnailStyle: "linear-gradient(115deg,#b5651e,#6b3e0b)" , id: 10, title: "🌌 Life Stats", desc: "Compare your life's statistics with the entire world.", category: "simulation", embedUrl: "https://neal.fun/life-stats/", thumbnailStyle: "radial-gradient(circle at 70% 20%, #1f6392, #0a3146)" , id: 11, title: "🍔 What's For Dinner?", desc: "Random absurd dinner generator with unexpected twists.", category: "classic", embedUrl: "https://neal.fun/dinner/", thumbnailStyle: "linear-gradient(145deg,#b73a1e,#752a10)" , id: 12, title: "⏱️ Reaction Time Test", desc: "Click as fast as you can — train your reflexes.", category: "reaction", embedUrl: "https://humanbenchmark.com/tests/reactiontime", thumbnailStyle: "linear-gradient(112deg,#263238,#00161f)" ];

// Fix potential missing images => assign fallback colorful background
gamesList.forEach(game => 
    if (!game.bgImage) 
        game.bgImage = null;
);
let activeCategory = "all";
let searchQuery = "";
// DOM elements
const gridContainer = document.getElementById("gamesGrid");
const searchInput = document.getElementById("searchInput");
const filterBtns = document.querySelectorAll(".filter-btn");
const modal = document.getElementById("gameModal");
const modalTitle = document.getElementById("modalTitle");
const gameIframe = document.getElementById("gameIframe");
const closeModalBtn = document.getElementById("closeModalBtn");
// Helper: render cards filtered by category & search
function renderGames() 
    let filtered = gamesList.filter(game => 
        // category filter
        if (activeCategory !== "all" && game.category !== activeCategory) return false;
        // search query (title + desc)
        if (searchQuery.trim() !== "") 
            const queryLower = searchQuery.toLowerCase();
            return game.title.toLowerCase().includes(queryLower) 
        return true;
    );
if (filtered.length === 0) 
        gridContainer.innerHTML = `<div class="no-results">🔎 No games found — try "password", "space", or "flappy" ✨</div>`;
        return;
gridContainer.innerHTML = filtered.map(game => 
        // dynamic thumbnail style: either gradient + bg image texture
        let bgStyle = "";
        if (game.bgImage) 
            bgStyle = `background-image: linear-gradient(0deg, rgba(0,0,0,0.5), rgba(0,0,0,0.3)), url('$game.bgImage'); background-size: cover; background-position: center;`;
         else 
            bgStyle = `background: $game.thumbnailStyle ;`;
return `
            <div class="game-card" data-id="$game.id" data-url="$game.embedUrl" data-title="$game.title.replace(/"/g, '"')">
                <div class="card-img" style="$bgStyle">
                    <span class="game-tag">🎮 play now</span>
                </div>
                <div class="card-content">
                    <div class="game-title">
                        $game.title
                        <span class="game-category">$game.category === 'classic' ? '🕹️' : game.category === 'simulation' ? '🧪' : '⚡'</span>
                    </div>
                    <div class="game-desc">$game.desc</div>
                    <button class="play-btn" data-url="$game.embedUrl" data-title="$game.title.replace(/"/g, '"')">▶ PLAY NOW</button>
                </div>
            </div>
        `;
    ).join('');
// attach event listeners to each "Play" button & card click
    document.querySelectorAll('.play-btn').forEach(btn => 
        btn.addEventListener('click', (e) => 
            e.stopPropagation();
            const url = btn.getAttribute('data-url');
            const title = btn.getAttribute('data-title');
            openGameModal(url, title);
        );
    );
// click on card also triggers modal (except if directly clicking play button)
    document.querySelectorAll('.game-card').forEach(card => 
        card.addEventListener('click', (e) => 
            if (e.target.classList && e.target.classList.contains('play-btn')) return;
            const url = card.querySelector('.play-btn')?.getAttribute('data-url');
            const title = card.querySelector('.play-btn')?.getAttribute('data-title');
            if (url) openGameModal(url, title);
        );
    );
function openGameModal(url, title)  "Neal Game";
    // For extra security / unblocked: allow iframe with sandbox but we want full functionality
    // We'll allow most features to ensure games work normally.
    gameIframe.srcdoc = "";  // reset
    gameIframe.src = url;
    modal.classList.add("active");
    // prevent body scroll
    document.body.style.overflow = "hidden";
    // optional: if game needs reload focus
function closeModal() 
    modal.classList.remove("active");
    gameIframe.src = "about:blank";
    document.body.style.overflow = "auto";
// event listeners
searchInput.addEventListener("input", (e) => 
    searchQuery = e.target.value;
    renderGames();
);
filterBtns.forEach(btn => 
    btn.addEventListener("click", () => 
        const category = btn.getAttribute("data-category");
        activeCategory = category;
        filterBtns.forEach(b => b.classList.remove("active"));
        btn.classList.add("active");
        renderGames();
    );
);
closeModalBtn.addEventListener("click", closeModal);
window.addEventListener("click", (e) => 
    if (e.target === modal) closeModal();
);
// escape key
document.addEventListener("keydown", (e) => 
    if (e.key === "Escape" && modal.classList.contains("active")) closeModal();
);
// preload? initial render
renderGames();
// fix missing embed fallback for broken games: add URL override for Tiny Chef (actual path)
// Tiny Chef path correction (original on neal.fun/tiny-chef)
const tinyChefGame = gamesList.find(g => g.title.includes("Tiny Chef"));
if (tinyChefGame) tinyChefGame.embedUrl = "https://neal.fun/tiny-chef/";
// also Password Game uses embed ok, sometimes needs to load inside iframe using correct referrer policy
// to maintain unblocked nature, add & update asteroid launcher if needed
const asteroid = gamesList.find(g => g.title.includes("Asteroid"));
if(asteroid) asteroid.embedUrl = "https://neal.fun/asteroid-launcher/";
// ensure reaction time test still works with humanbenchmark (allow)
// All urls are publicly accessible and do not require login / ads free;
// flappy bird embed uses flappybird.io which works in iframe
const flappy = gamesList.find(g => g.title.includes("Flappy"));
if(flappy) flappy.embedUrl = "https://flappybird.io/";
// final re-render after corrections
renderGames();
// Additional small quality: we set iframe sandbox to allow full features but not break security. But some sites may block framing.
// To maximize "unblocked" nature, we allow all permissions except maybe top navigation
gameIframe.setAttribute("sandbox", "allow-same-origin allow-scripts allow-popups allow-forms allow-modals allow-downloads allow-presentation allow-storage-access-by-user-activation allow-popups-to-escape-sandbox");
// Allow fullscreen capability
gameIframe.setAttribute("allow", "fullscreen; autoplay; clipboard-write; encrypted-media; picture-in-picture");
// hotfix: add a tip for the password game if potentially blocked due to X-Frame-Options
// but these domains mostly work with modern iframe allowance. we give a friendly console message.
console.log("🔥 Neal Fun Unblocked Hub is ready — all games are one click away!");

</script> </body> </html>

The Ultimate Guide to Playing Neal.fun Games Unblocked Neal Agarwal

’s creative experiments—better known as Neal.fun—are a goldmine of digital entertainment. Whether you’re trying to craft every element in the universe in Infinite Craft or spending Bill Gates’ money, these games offer a unique blend of humor and curiosity. However, school or work network filters can sometimes get in the way. Why Are Neal.fun Games So Popular?

Unlike traditional high-octane shooters, Neal.fun games are "internet toys" designed for discovery and relaxation. Top titles include: Infinite Craft

: An AI-powered crafting game where you combine elements to create everything from "Life" to "Batman." The Deep Sea : An interactive scroll through the ocean's depths. Spend Bill Gates' Money

: A simulation that puts a $100 billion budget in your hands. How to Access Neal.fun Unblocked

If the main site is restricted, users often turn to several methods to bypass local network filters:

Google Sites Mirrors: Many educators and students host "unblocked" versions of web games on Google Sites because the domain is rarely blocked by school systems.

GitHub Pages: Similar to Google Sites, developers often mirror open-source web games on GitHub, which is often whitelisted for educational purposes.

VPN Services: Tools like Hotspot Shield or PureVPN can encrypt your traffic, making it impossible for local filters to see that you are visiting Neal.fun.

Web Proxies: Using a proxy site can act as a middleman, fetching the content of Neal.fun and displaying it on a different, unrestricted URL. Staying Safe Online Sites like unblocked-games-77

While searching for "unblocked" versions, it is critical to stay on reputable platforms.

Avoid Suspicious Clones: Some sites mimic the look of popular gaming hubs but may contain intrusive ads or phishing redirects.

Check URLs: Always verify that you aren't being asked to download executable files; Neal.fun games are designed to run entirely in your browser.

Use Trusted Sites: Stick to well-known community hubs like Unblocked Games 6969 which are frequently curated by users to ensure functionality. Conclusion

But Liam knew a breach.

He leaned over his Chromebook in third-period study hall, the plastic casing warm under his fingers. The librarian, Mrs. Gable, was forty-seven pages deep into a Civil War biography, her reading glasses sliding down her nose like sleepy turtles. The coast was clear.

He typed the forbidden URL from muscle memory: neal.fun. Not .com, not .net. Just .fun—as if the domain itself was laughing at the firewall.

The page loaded in under a second. No "Blocked by Admin" banner. No redirect to the school’s "Acceptable Use Policy." Just Neal’s weird, whimsical kingdom.

He clicked The Password Game. A cascade of rules appeared:

Liam grinned. Next to him, Marcus pretended to read The Great Gatsby but was already peeking. "You’re gonna get us busted," Marcus whispered.

"Then don’t look," Liam whispered back, adding a tiny chicken emoji because Rule 12 demanded it.

By Rule 18—"Your password must include a Paul"—Liam had sacrificed his dignity and added a random guy named Paul. The game was absurd, and that was the point. Neal Fun wasn’t just unblocked; it was unhinged.

Then he heard it. Footsteps. The squeak of sensible librarian shoes.

He didn’t close the tab. That would be suspicious. Instead, he opened a Google Doc titled "Notes on the War of 1812" and dragged it halfway over the screen. The Password Game glowed in the right third of the display—visible if you knew where to look.

Mrs. Gable stopped beside him. "Productive morning?" If you are allowed to install extensions on

"Very," Liam said, not looking up. His password now contained a Roman numeral, a chess move, and the atomic weight of krypton. The game had become a hostage negotiation.

She leaned closer. Liam’s heart did a drum solo. On-screen, Rule 21 appeared: "The password must self-destruct in 10 seconds unless you click the button."

He couldn’t click. She was right there.

The timer counted down. 7… 5… 3…

"I like your focus," Mrs. Gable said, and moved on.

Liam slammed the button with one second left. The password stabilized. A victory chime played—silent on his muted Chromebook, but he felt it in his bones.

He glanced around. Twenty other students were also hunched over screens, each hiding their own little rebellion. Someone was playing Infinite Craft (Neal’s weird fusion of elements: fire + water = steam, steam + earth = clay, clay + human = pottery, pottery + meme = disaster). Another was on Spend Bill Gates’ Money, buying a private island and 47 racehorses.

They weren’t just wasting time. They were keeping something alive—a pocket of weirdness inside the sanitized school network. Neal Fun wasn’t violent. It wasn’t gambling. It was just… curious. It asked questions like "How many countries can you name in 15 minutes?" and "What happens if you make a billion dollars from paperclips?"

When the bell rang, Liam closed his Chromebook. The password game was still running in memory, Paul the chicken enthusiast trapped in digital amber until next period.

Marcus packed his bag. "Did you win?"

"No one wins The Password Game," Liam said. "You just survive."

They walked out together. Behind them, Mrs. Gable sat back down, opened her own laptop, and smiled faintly. On her screen, visible only to her: neal.fun/grow-a-cursor. She’d been growing a virtual cursor for three weeks now. It was the size of a small dog.

Some fortresses have friendly ghosts.


Because Neal’s games are open-source friendly, many developers have created mirrors of specific games on GitHub Pages. GitHub is rarely blocked because it is a coding tool.

Pro Tip: Download the game at home. Because Neal Fun games are just HTML/JS files, you can press Ctrl+S (Save Page As) on your home computer, save the entire game folder to a USB drive, and play it directly on your school computer without an internet connection.

Why it’s great: You are given $100 billion (approximate net worth of Bill Gates at the time of creation). You can buy a Lamborghini ($250k) or a planet-destroying Death Star (Quadrillion dollars). It visualizes the scale of extreme wealth in a way no textbook can.