Back to Blog

TheImpostor: I rebuilt the impostor party game my way

Thiago Rodrigues|August 15, 2026|Share:
My Apps

Too lazy to read? ChatGPT them

Reading time: 9 minutes

TheImpostor: I rebuilt the impostor party game my way

A game known by many names

A table, a group of friends, someone draws and hands out "roles" with words from some theme, and each person doesn't know the word the others know. A round of questions kicks off, everyone tries to figure out who the outsider is - or rather, who the "impostor" is - and it ends in an argument. It's apparently a pretty popular game, so widespread it earned different names in different countries - impostor, spy, undercover - but the core is always the same.

To me, it didn't feel like a game from our culture, so I only came across it recently. I decided to check if there were apps offering a better experience, bringing something new to that dynamic.

I downloaded a few games to test and none of them really convinced me. Some were packed with ads, others had an interface that seemed frozen in time, and none had the mechanic I wanted to see: healthy competition among the players. So I decided to try building my own, and honestly I was surprised with the result.

That's how TheImpostor was born: a game where you can use a single phone and pass it around the table, or create an online room where everyone plays on their own device. It works for 3 to 8 people, no paper or pen needed - and it runs on any phone, I made sure of that.

Fun fact: where did it come from?

"The Impostor" was directly influenced by a Russian game: in 1986, psychologist Dmitry Davidoff created Mafia, a parlor game that introduced the idea of an informed minority hidden inside a majority that knows nothing - the same logic behind classics like Werewolf and, later, Among Us.

The format with secret words and clues that we know today only took shape between 2012 and 2014: in 2014, Ukrainian designer Alexandr Ushan launched Spyfall, a card game where only the "spy" didn't know the secret location and had to get by with vague questions to avoid being caught.

Shortly after, that mechanic was adapted from locations to similar words, and French developers turned the idea into the app Undercover, which popularized the game worldwide by taking the physical cards out of the picture and putting a phone to pass hand to hand instead.

How the game works

The base mechanic is very simple. Players need to pick a theme - Food, Drinks, Movies - and then start the match. Once the theme is picked, the phone circulates hand to hand, where each player sees a word related to the chosen theme, except at least one of those players won't get a word at all - they'll get a "hint" instead.

Practical example: there are 4 players and the theme "drinks" was picked. 3 players get the word "Coconut Water", while one of them gets "Very common at the beach". Once everyone has seen their "cards", the round begins. Each player asks a question about the word without giving it away, trying to figure out who the impostor is. Meanwhile, the impostor is right there among them and has to "survive" without being caught. Once everyone has asked their question, the round ends and a vote opens to decide who the impostor is.

The impostor wins if they aren't caught - or, even if caught, if they guess the secret word on the final guess. The innocent players win if they correctly point out who was bluffing.

The modes I built on top of the base game

I wanted to innovate a bit and brought some variations, beyond the classic mode, that change the type of tension in each round:

  • 1) Classic: the impostor knows they're the impostor and gets only a weak hint about the word.
  • 2) Neighbor Word: the most interesting twist in the game. The impostor gets a word similar to the real one (e.g., the group has "Feijoada", they get "Dobradinha") and doesn't know they're the impostor. They act with total confidence, and that's where the funniest mismatches of the round come from.
  • 3) Blind Impostor: no hint at all, just a "Good luck, Impostor!"
  • 4) Chaos: two impostors in the same match, who don't even know who the other one is. They can end up accusing each other without realizing it.

Ranking and scoring

This was the part I most wanted to get right. It's not enough to just mark who won the round - the scoreboard needs to reward the right call, not just luck. That's why TheImpostor's scoring has several layers, designed so each role at the table has a different way of racking up points:

Points per round

Situation Points
Player correctly points out the impostor+3
Player is wrong (points at another citizen)0
Impostor escapes (nobody points them out)+6
Impostor is caught, but fooled some players+1 per fooled player, up to a cap of +4
Impostor is caught by every player0

Ranking tie-breakers

When the total score ties, the order is decided by:

  1. Most correct calls as a player
  2. Most times escaped as the impostor
  3. Order they joined the room

Important: scoring is only tracked if it's enabled before the match starts. You can also check the ranking at any time - points are added up automatically after every round. Once the last round ends, the final ranking is generated and the winner is announced.

Why the logo is a chameleon

The Impostor

While sketching the screens and design for TheImpostor, I felt something was missing to tie it all together - a character. That's when, in the middle of the creative process, the chameleon idea came to me.

I picked a chameleon to represent the game because that's exactly the impostor's nature during a round: someone who needs to blend in, change color to match the surroundings, and go unnoticed in the middle of the group.

A chameleon doesn't hide - it disguises itself while staying right there, in the middle of everyone, keeping up the lie as naturally as possible. That's the same posture the impostor needs in a good round: speaking confidently about a word they don't always know.

I also took the chance to have a little fun with the character, giving it a cloak - even though it's not needed, since a chameleon's nature already lets it change color. In this case, it was just a bit of personality and a crazy idea of mine, haha.

The hardest part: playing online

The Impostor

The game has two modes: "same phone" and "online rooms". With "same phone", I don't need any infrastructure, since you just pass the phone around - but I decided to think outside the box and "eliminate" that. Why not have each player join from their own phone?

That's where the most interesting technical challenge of the project came in: an online room mode, where each player joins with a code and sees their own word on screen.

This is my first experience building something fully online. It's not just the complexity of keeping the frontend well aligned with the backend, but also keeping everything secure enough that no smart aleck can bring the service down or cheat.

The requirement I set for myself was zero cost and the leanest infrastructure possible. I solved that with Firebase Realtime Database on the free tier and anonymous auth just to give each device a technical identifier, without asking for a name, email, or any personal data.

The sensitive part

Without a dedicated server of my own, the game's security rests on two layers: the database's access rules, which guarantee a player can never read another player's word, and a lean Cloudflare Worker that acts as the game's authority for sensitive actions - drawing words, scoring, kicking a player - validated with a Firebase App Check token on every call.

In practice, each drawn word is stored in a path that only its owner can read - the database rule denies access even if someone tries to force a read through the browser console. Only the room's creator can write the game mode, theme, or words; the other players can only write their own name. Every input - name, room code, chosen mode - is validated for format and size right in the database rules, so not even a malicious client can inflate the room with fake players or write anywhere else in the data tree.

Device detection and reconnection were also part of the scope. Every player gets a technical identifier validated by Firebase App Check, so the Worker rejects any call without a legitimate device token - without that, it would be trivial to simulate multiple fake players straight from the browser console. If the connection drops mid-match - locked screen, network switch, app minimized - the player reopens it and lands right back in the room's current state, no need to recreate anything. And the host stays in control of who's at the table: they can remove a problematic player at any time, and that player's card and points get discarded along with them, leaving no trace on the scoreboard.

Since the game is "short-lived" by nature, I solved cleanup without relying on any background process - which would cost money. The room deletes itself as soon as the match ends, and if the host disappears without closing it, the room expires through a check that runs the moment another player tries to use that same code.

Making a website feel like a real app

The Impostor

This is the kind of game that's perfect to play with friends and family, and with that in mind it needs a fast response and a good look - nobody wants to wait for a website to load in the middle of a lively round.

That's why I treated the interface as if it were a mobile app, even though it's technically a browser. I added a few restrictions on screen that block copying text or images through touch, specifically to simulate the real feel of an app. I even made sure to enable the drag gesture (pulling down) on the settings modal.

Revealing a card uses a press-and-hold gesture, not a simple tap - that prevents someone from revealing it by accident, and it disappears from the screen as soon as the finger lifts, with a small vibration on the phone marking the moment. I also respected people who prefer less motion on screen, swapping the stronger animations for smooth transitions when that preference is enabled at the system level, and I took care with the rounded corners on recent iPhone screens so no button gets squeezed behind the notch.

The game is designed for phones in portrait mode (upright), so when someone opens it on a computer, a screen shows up guiding them to access it from their phone, and if a player tilts their phone (lays it flat), a screen appears asking them to go back to the original position. I want the user to have the best possible experience playing TheImpostor, and I put a lot of care into all of this.

Check out the project

TheImpostor is free and available to play straight from the browser, no install needed beyond having internet access. I hope you enjoy TheImpostor, and if you have suggestions for improvements, get in touch with me!

Play TheImpostor

👇 Enjoyed this content?

If you've played it and have a suggestion for a new game mode or theme, let me know - the game is still evolving.

Take the opportunity to check out more articles here on the blog!

Next step

Want to transform your data?

If this topic connects with a real challenge in your company, message me to structure data, automate workflows, or build a digital project.