Open Chrome, type https://demian.ferrei.ro/snake#
into the address bar, and you’ll suddenly see a string of strange characters.
Yes, you read that right. Keep your eyes on the address bar and control the direction with the arrow keys or WASD.
You’ll see a little snake made of odd-looking symbols (░░░░░░░⠠⠤⠄⡀░░) crawling around inside the address bar, eating food, and growing longer. The entire game plays out inside that thin text field you usually only use to type URLs.
That’s right — this is a fully functional Snake game running entirely inside the browser’s URL bar.
Last week, this decade-old project suddenly blew up on Hacker News, racking up 840 upvotes and hundreds of comments. The first reaction from many people was: “This is insane. How did you even come up with this?”
But the story behind this game is even crazier — and it reveals something important about what the modern internet has lost.
A Random Curiosity Sparks a Technical Adventure
The creator, Francisco Uzo, recalls the project’s origins: “I just wanted to understand how the Braille system worked.”
That’s the essence of hacker culture — not solving a problem, but chasing pure curiosity.
As he dug into Braille, he noticed something fascinating: each Braille symbol is a 2x4 dot matrix, eight positions in total, each either “raised” or “flat.” That gives 2^8 = 256 possible combinations. And Unicode happens to support all 256 Braille characters.
One night around 3 a.m., it hit him: “Wait, this is basically an 8-bit pixel character set!”
That spark — when two unrelated ideas suddenly connect — is exactly the kind of joy hackers live for.
And then came the classic hacker instinct: don’t ask whether it’s useful — just build it.
The implementation was full of clever hacks:
- Mapping the game world onto Braille character grids, each character acting as a 2x4 pixel block
- Using solid dots (⣿) for the snake’s body and blank Braille (⠀) for empty space
- Leveraging JavaScript’s
history.replaceState()
API to update the URL in real time without polluting the history - Refreshing the entire frame each tick so the game animates smoothly inside the address bar
Francisco’s openness was just as “hacker-ish”: “The source code isn’t minified or obfuscated. Just hit Ctrl+U and you’ll see everything.”
The whole thing was only a few hundred lines of JavaScript — concise, readable, and elegant. In the hacker mindset, code isn’t just for execution — it should also be legible, learnable, and inspiring.
Wait… Why Does My Game Look Broken?
If you try the game today, you might just see a mess of %20
, backslashes, and gibberish. The snake barely moves — or sometimes the game doesn’t run at all.
It’s not your fault. It’s not even the code’s fault. The browser has changed.
Francisco admitted, “This project was written for browsers ten years ago. Since then, browsers have made certain ‘security improvements’ that severely limit what’s possible in the URL bar.”
The most critical change? Modern browsers now forcefully escape all spaces in URLs.
In the game’s design, the blank Braille character (⠀) represented empty space. However, browsers now escape those characters as %20
or something else, which ruins the visual output.
Francisco even built a fallback system that measured text widths via Canvas and replaced escaped characters on the fly — but it only worked partially.
He appealed to browser bug trackers. Developers sympathized but ultimately concluded: “As always, security outweighs fun.”
As a result, users’ experiences varied wildly:
- Some people on Chrome scored over 2,000 points.
- Others saw a screen full of garbage in Firefox.
- On iOS Safari, the game sometimes didn’t even render
- Some users found their browsing history polluted with every single game frame.
The same code, drastically different behavior across browsers. That’s just the reality of modern web development.
The Golden Age of “Weird Browser Games”
Snake in the address bar wasn’t the only project of its kind. The Hacker News discussion turned into a nostalgia trip, with people recalling a whole wave of unconventional browser experiments.
2048 In the URL
Someone linked to https://aquova.net/games/2048/ — a port of the once-famous puzzle game, implemented entirely inside the address bar using the same Braille and URL-refresh trick.
Snake In the Browser Tab Title
Francisco mentioned that someone on Reddit made a version that runs inside the tab’s title instead. It was basically a compromise — no longer in the address bar, but safe from URL escaping.
TinyJS Snake
In 2023, another developer built a similar Snake clone using a different technique. At the time, browser restrictions weren’t as strict.
3D Worlds in the URL
Another project took things further: an interactive 3D environment rendered through unconventional browser features.
One commenter joked: “It’s not Doom, but you can walk around in 3D.”
What do all these have in common? They were built for fun, out of curiosity, with no concern for practicality.
No commercial value. No business use case. Not even “best practices.”
But they embodied the spirit of the early web: a playground where people could experiment, push boundaries, and have fun.
Why Are Projects Like This So Hard Now?
It’s not just the space escaping problem. Over the past decade, browsers have introduced countless so-called security improvements:
History API Limits
Francisco originally used history.replaceState()
to update the URL without spamming history entries. Modern browsers now throttle calls to this API, forcing fallback to location.hash
— which clutters your browsing history with every frame of gameplay.
URL Length Restrictions
Different browsers cap URL length anywhere from 2,000 to tens of thousands of characters. Encoding game state into URLs quickly hits those ceilings.
Character Set Restrictions
More and more Unicode characters are marked as “unsafe” for URLs. Browsers escape or block them, killing Unicode art projects outright.
Mobile Compatibility
Many mobile browsers hide the URL bar entirely while scrolling — making address-bar games literally unplayable.
Francisco summed it up: “Every browser change since then has made projects like this harder. I got some sympathy in bug trackers, but security always wins.”
When Security Kills the Fun
Here’s the fundamental tension:
Nobody disputes the importance of browser security.
URL injection attacks, XSS vulnerabilities, phishing — these are real threats affecting billions of users. Browser developers have a duty to protect people.
But every “security improvement” quietly closes off a door to creativity.
Francisco’s code worked flawlessly a decade ago. Today, it’s broken not because it was bad, but because the browser “evolved.” That evolution made the web safer — but also more controlled, more uniform, and frankly… more boring.
It’s Not Just About Games
One Hacker News commenter sneered: “Why don’t people build something useful instead of abusing the internet?”
The community overwhelmingly pushed back:
- “The learning value from projects like this is massive.”
- “Creative play matters for skill development too.”
- “This is exactly why I come to HN — 100% hacker spirit.”
- “ChatGPT couldn’t have come up with this. I love the creativity.”
The best response was simple:
“To most people, this is nothing. To me, it’s insane. How did you even think of this?”
That’s the point. The value of projects like this isn’t in utility, but in pure human creativity — driven by curiosity, joy, and the urge to ask “why not?”
And every time we “tighten security,” we don’t just close loopholes. We also close off avenues for wonder.
In the Age of AI, Human Creativity Matters More
When asked about AI, Francisco said something striking:
“This game has been online for ten years. It’s probably in AI training data. A robot might be able to replicate it, but it could never enjoy it. (At least not yet.)”
That gets to the heart of our cultural anxiety today. In an era where ChatGPT can generate code in seconds and Copilot can autocomplete whole functions — what projects are still worth building by hand?
The answer might just lie in this Snake game.
AI can parse Braille characters, understand Unicode, and spit out JavaScript. But AI can’t feel:
- The 3 a.m. epiphany that “Braille could be pixels”
- the giddy surprise of watching a snake slither inside a URL bar for the first time
- The stubborn joy of debugging escape sequences for hours
- The quiet pride of seeing strangers enjoy your work a decade later
These are uniquely human creative experiences.
In a world where AI can replicate almost all code, that human spark is more precious than ever.
We Need More Projects Like This
Snake in the URL bar went viral, not because it’s useful or profitable, but because it reminded us of something essential:
The internet shouldn’t just be efficient, safe, and standardized. It should also be surprising, playful, and experimental.
When Francisco asked himself, “How does Braille work?” ten years ago, he wasn’t solving a business problem or optimizing UX. He was just curious. That curiosity created something that made thousands of strangers smile.
In today’s increasingly homogeneous, “safe,” and algorithmically optimized internet, we need more of this. Not because it’s useful, but because it reminds us:
Technology isn’t only about efficiency and safety — it should also be about wonder and joy.
So, how many points can you score? Does your browser even support it?
Or maybe the real question is: what’s the last “useless but fun” project you built?
- Long Time Link
- If you find my blog helpful, please subscribe to me via RSS
- Or follow me on X
- If you have a Medium account, follow me there. My articles will be published there as soon as possible.