A Mario Universalis project / Case study

Mario Kart
World Guessr.

I launched Mario Kart World Guessr on 21 June 2025, shortly after Mario Kart World came out. With people exploring the new game, it felt like a good time to try a simple idea: could you find where a screenshot was taken on its map?

As with many of my personal projects, this was supposed to be a quick little thing. It got a little out of hand.

My role
Solo design, development & maintenance
Launched
Play the game
Screenshot to be added
The starting point: find where a photo was taken on the map.
games played
65,360
accounts created
1,510
photos
1,700
published contributors
140

Figures recorded in September 2026. You can play without an account. Accounts and players are not the same thing.

One photo. A whole map to search.

The idea follows the familiar geography-game loop: look at a photo, explore the map, place a marker, and get a score based on the distance from the actual location.

Here, the world is Mario Kart World. I use React Leaflet with a custom map and CRS.Simple. This coordinate system lets me use a map that does not represent the Earth, while keeping Leaflet's zoom and panning controls.

The loop is short: observe, search, make a decision, and find out how far off you were. Or, occasionally, how surprisingly close.

Screenshot to be added
The result connects your guess to the photo's actual location.

A community behind the camera.

Players can submit their own photos and mark where they took them. That means the game's collection can grow beyond the images I add myself.

Submissions go through a review process before publication. GitHub Issues are part of that review and validation system, rather than the entire moderation process.

  1. 01Submit a photo
  2. 02Mark its location
  3. 03Review and validate
  4. 04Publish in the game
community photos submitted
1,480
community photos published
1,700
people who submitted a photo
150
people with a published photo
140

Figures recorded in September 2026.

Screenshot to be added
Each submission pairs a photo with its location before review and publication.

A place for the photographers, too.

Photographers can create albums, pick their favourite photos, put their work on display, and share the collection.

Their images become more than material for the next round. Albums give people a way to explore a collection through the eyes of the person who took the photos.

Screenshot to be added
Albums let photographers choose and share their favourite photos.

Something to come back to.

Over time, I added game modes, leaderboards, achievements, unlockable characters, and notifications.

The daily challenge automatically selects 5 different photos each day. It gives players a fresh selection to explore, without requiring me to curate a new set every morning.

Screenshot to be added
The daily challenge: 5 different photos, automatically selected each day.

Built and maintained on my own.

The frontend uses React and Vite, with React Leaflet for the interactive map. The backend runs on vanilla PHP, with MariaDB for data and ImageKit for images.

I develop and maintain the project alone. Community contributions grow its content, while feedback and actual usage help me decide what to work on next.

  • React
  • Vite
  • React Leaflet
  • PHP
  • MariaDB
  • ImageKit

Further than I expected.

The game found its way beyond France. I have seen French, English, German and Japanese videos and players. That is an observation, not a country-by-country audience measurement.

Coming across a Japanese video of someone playing a game I built on my own at home is still pretty funny.

When a side project becomes a product.

Mario Kart World Guessr is probably the personal project of mine that feels most like a real product.

At first, decisions mostly came from what I wanted to build. Now they also come from usage, contributions, feedback, and the behaviours I observe.

There is still plenty of room for my own ideas. But what players actually do with the game now matters as much as what I originally imagined for them.