Skip to content

Experiment

Fetch: a 404 page worth getting lost on

How I turned a dead end into a small game with my dogs and my old cat — and what it taught me about gamification, fairness and UX.

Have a go before you read on.

The game: a slingshot on the grass, a basket on a pole, floating bricks, and Sky, Ritalino and Dimitri on the lawn

A 404 is the most honest page on any site: something broke, and the visitor knows it. Most of them say sorry and hand you a search box. I wanted mine to do something better with that moment — keep people around for a minute, make them smile, and still get them where they were going. So the page grew a game: you shoot a ball at a hoop, my two dogs try to catch it, and my old cat tries to ruin it.

The game above is the one you'll find under any broken link on this site.

Why a 404 deserves the effort

Nobody lands on a 404 on purpose. They followed an old link, mistyped an address or clicked something that moved, and they're about to leave. That moment matters more than it looks: it's often someone's first impression of a site, it comes when they're already a little annoyed, and whatever the page does next decides whether they stay. A good 404 owns the mistake, gets the visitor back on track in one click, and tells you the link is broken so you can fix it. A bad one loses them.

There are four common ways to handle it, and each has a place.

Approach What it does Good Not so good
A plain 404 Says the page doesn't exist, with a link home Honest, fast, cheap to build; search engines read it correctly Easy to forget; the visitor has to find their own way back
Redirect to the home page Sends every missing address to the home page No dead end on screen Confusing ("where did my page go?"); search engines treat it as a "soft 404"; the broken link never gets noticed
A smart redirect Sends known old addresses to their new home (a 301), and suggests the closest match for the rest The best fix when content has moved; keeps links and search rankings alive Needs upkeep; a wrong guess is worse than an honest 404
An interactive 404 The honest page, plus something to do while you're there Memorable, shows the care behind the site, turns a dead end into a small moment Takes real work; must never get in the way of leaving, or of accessibility and speed

They aren't rivals. This site does three of them: addresses I've moved redirect properly, the 404 itself is honest (it really answers "not found", and it's never indexed), and the game sits underneath for anyone with a minute to spare.

The way out comes first

The rule I set myself before writing a line of the game: the visitor's way out comes first. "Back to home" and "Tell me it's broken" are the first things on the page, before a single dog appears. The game lives in a frame below them, so if you want to leave you never have to look at it — and if you'd rather play, "Play full screen" opens it on its own page.

"Tell me it's broken" sends me the broken address, where you came from and your browser, straight into my Notion board. It keeps no IP address or location, sends one report per address a day, and shows a short loader and then a thank-you, so it feels like something actually happened.

From a bouncing ball to a small game

It started very small: two dogs, a ball and the page's own text. The giant 404, the headline and the buttons were solid, and the ball bounced off them. It sounded clever and played badly — the obstacles were wherever the copy happened to sit, not where a level designer would have put them, and most throws were impossible.

So I rebuilt it as a flat 2D field: grass along the bottom, a slingshot on one side, a basketball hoop on the other, and a few floating bricks in between. Then Dimitri, my Siamese cat, joined as the saboteur. From there it grew one playtest at a time. Friends played, I watched where they got stuck or bored, and each round of feedback became a change: the rim was rebuilt several times before a ball that clips it rattles off instead of bouncing up like off a trampoline; the layout stopped changing after every throw, so you can learn a shot; the dogs got tempers, the player got treats, and the cat got a revenge system.

To keep it fair while it grew, I tuned it like a game rather than a layout. A small simulator plays hundreds of throws off screen, aiming like a person would — a good throw, slightly off — and counts what happens. On Normal it sits at about one basket in three on a laptop, by day and by night, and every level is checked the same way after each change.

The choices behind it

  • Real animals, not obstacles. Sky, Ritalino and Dimitri are the animals in my life, and their behaviour comes from who they are. People want to see what each one does, so they keep throwing — personality turned out to be a mechanic in its own right.
  • Fairness means telegraphing. A saboteur without rules just feels like cheating. Dimitri never teleports: he climbs in cat-sized jumps you can watch. He only leaps at the ball when he's primed — crouched, tail swishing — so waiting for the tail to stop keeps you safe.
  • Hard, but never hopeless. Five levels, from Super easy (a big, high hoop and a cat who minds his own business) to Very hard (a small, low hoop and quicker dogs). Changing level starts the score again, so a score always means one level.
  • Shape before colour. I'm colour blind, so nothing that matters relies on colour: icons have their own shapes, an empty treat is struck through, a cross pet gets a ring round its photo and a 💢 over its head.
  • No game if you've asked for less motion. With reduced motion there's no game at all — just the plain 404 with its two ways out.
  • Light by default. The game's code only loads when the frame comes near the screen, and the page works without it.
  • Nothing personal collected. The game counts throws and baskets in batches, anonymously, so I can see whether it's too hard; your name and photo stay in your browser, and a rating, if you leave one, comes without a name.

What the pets do

  • Sky, the Rocket. The fastest on the field, and she jumps twice as high as Ritalino. The easiest to spook — one hiss from Dimitri and she sits the next ball out — and she tires after a few big jumps. Keep her waiting too long and she snatches the ball off your slingshot and runs a lap with it.
  • Ritalino, the Wall. Slow on his feet, but anything near his head is his. The most curious: he follows your mouse from across the field, and lies down to doze when nothing comes his way. When he's cross, he takes his time bringing the ball back.
  • Dimitri, the Menace. He keeps the game's clock — it starts at your hour and runs a day in 24 minutes — napping through the day and getting quicker at night. He climbs the bricks and the backboard, pounces when primed, steals the ball on its way back (or lies on his back and kicks it about), grabs your cursor and runs off with it, chases butterflies, and if you take too long aiming he marches over and swats the ball off your slingshot.

Full screen on a laptop: a golden ball, worth two, on its way, while Ritalino and Dimitri wait under the hoop

What you can do

  • Aim with the mouse, a finger or the arrow keys; the faint line shows your last throw.
  • Score swishes, bank shots and streaks — each gets its own callout — and now and then a golden ball that counts twice.
  • Earn a treat with every basket (up to three) and tap the grass to drop them, all at once if you like; the dogs race for them.
  • Take revenge: hit Dimitri while he naps, or knock him off the hoop — into the net counts double.
  • Lure the dogs out of the way with your mouse, and mind their patience: keep them waiting and they get cross.
  • Open each pet's card for their stats and patience, and your own card for your numbers and achievements.
  • Pick a face and a name, share the game, play it full screen.
  • Click my photo for a word with me: rate the game (or skip it), then leave a message with Sky and Ritalino, who run my front desk. My notes during the game open the same chat, already on what they were about.

The game on a phone, three times: under the 404, a throw in full screen, and an achievement — Dimitri stole the ball

What friends said

The best testing was watching friends play on a call. A few highlights, translated and lightly edited for a family audience:

"What a s***** cat! The ball was heading straight in and he jumped right on it." — Wellington

Then I added revenge on Dimitri, and Igor changed his whole strategy:

"Now we're talking. I'm not even aiming for the basket any more — I'm going straight for that wretched cat." — Igor

"Such a fun little game. Sky's ear is massive — which is exactly how it is, haha." — Filipi

And my favourite, from the three of them together on Discord:

"Mate, we were going to play Burglin' Gnomes, but I think we'll just stick with Laures's game."

What's next

The game keeps getting updates. What's coming, then what's already landed:

  • Sound: barks, meows and the small noises of the game.
  • A slow-burning feud with Dimitri: every throw you aim at him on purpose makes him a little crosser for good, until he snaps and gets properly in your way.
  • Rounds, and a result card you can share.
  • Difficulty that adapts, stepping up as you get better — with a notice when it does.
  • Dogs that brace for a catch depending on how hard and how far you throw.
  • A rating from my photo, and notes that open the chat on what they're about. Done
  • Full screen, and a smaller frame on the 404 itself. Done
  • A golden ball now and then that counts twice. Done
  • Tempers: each pet with its own patience, and what it does when it runs out. Done
  • Treats you earn with every basket and drop for the dogs. Done
  • Five levels, from Super easy to Very hard, each with a fresh score. Done

Get lost on purpose

The best way to see it is to break a link yourself: try a page that doesn't exist, or send this post to someone who'd enjoy the game. And if you'd like this kind of attention to detail on your own product — down to the error pages — book a call. I'd love to hear what you're building.

Published

Reactions0

Share

Comments 0

  1. Nothing here yet — start the conversation.

Who’s it from?

Pick a face

Comments are read before they appear; your email is only there if I need to reply privately.

Keep reading