Drop your identity, put on a mask
Among friends, dance freely

Welcome to a masquerade just for people you know. You're among friends, yet you can't tell who's speaking.
No identity attached — only pure words and the play of ideas, so every gathering can dance freely.

≤ 8
Member cap
L4
Layers of anonymity
½
Majority rules

😰 The bind

Behind every real-name avatar
is a carefully guarded persona

The buzzing gossip in the besties' chat — you want in, but you hold back, afraid a screenshot leaks one day and burns you.
The blazing elevator-installation fight in the residents' group — you have a real opinion, but you fear offending the neighbors above and below.
The griping about perks and team-building in the coworkers' chat — you're bursting to speak, but you fear being recognized and dinged on your year-end review.
The honest read on a deal in the partners' circle — you fear backing the wrong side and losing your standing on the team.

In the messaging apps everyone uses, every word is permanently bound to your name and avatar. The problem with talking among friends isn't a lack of places to speak — it's that you don't dare speak the truth.

⚖️ Positioning

Not another anonymous confession app
nor just another group chat

Masquerade holds a unique spot: it has the hardcore security foundation of an anonymity tool and the psychological release of being your true self — yet it always serves the handful of people in your contacts you actually know.

Regular group chat
Anonymous confession app
Masquerade
Who you talk to
People you know
Strangers
Your inner circle
Identity exposure
Fully exposed
Anonymous
Absolute, protocol-level
De-identified UI
Avatar + nickname
Fake name · guessable
No avatar / name / color
Group size
Unlimited
Unlimited
Strictly ≤ 8
Self-governance
Owner rules all
None
Everything by vote

🎭 Scenarios

Gather your circle of eight
and start your first masquerade

So many moments call for anonymity among people you know — turning open fights into quiet whispers, awkward silences into blind probing, named complaints into anonymous whistle-blowing, and conflicts of interest into anonymous votes — so every masked guest can dance freely.

💅 Bestie tea
Late-Night Pillow Talk (6)
22:08
Heard someone's been secretly seeing a 6'1" college guy?
Ooh, which of us cougars is cradle-snatching? lol
No spreading rumors!
lol whoever you are — denying it just confirms it!
↩ Reply to: No spreading rumors! (22:10)
You're all such gossips 😄
↩ Reply to: Ooh, which of us cougars is cradle-snatching? lol (22:10)
That's totally Eva talking
↩ Reply to: You're all such gossips 😄 (22:11)
Nope, not me — who doesn't love the tea!
↩ Reply to: That's totally Eva talking (22:12)
LMAO I'm dying
↩ Reply to: Nope, not me — who doesn't love the tea! (22:12)
LMAO I'm dying
Send
🏠 Neighbors' standoff
Maple Court Residents (8)
20:15
Adding an elevator is good for the whole building. I genuinely don't get why anyone would refuse to sign.
Easy for you to say. The elevator blocks the light to floors 1 and 2. You upstairs get the convenience; we downstairs eat the property-value hit. Would you sign?
↩ Reply to: Adding an elevator is good for the whole building... (20:16)
So lower floors pay less, or nothing, and upper floors cover more of the cost?
It's not about paying less — lower floors shouldn't pay at all. Upper floors should even pay us cash compensation!
Dream on. You want to turn an elevator into a payday?
↩ Reply to: Upper floors should even pay us cash compensation! (20:18)
To be fair...
Send
💼 Whistle in the dark
Anonymous Staff Circle (5)
14:18
Strong vote for real gift cards or brand vouchers every holiday. The company next door does it — we just get snacks every time.
Let's have more optional, no-agenda hangouts — just food and drinks. We barely sit down together outside of work asks.
Skip the fluff — please, no events that eat our weekends! A bigger paycheck beats any "team bonding."
↩ Reply to: Let's have more optional, no-agenda hangouts... (14:22)
14:30
Thanks for the candor. It's all been collected anonymously. Management discusses it Monday, and we'll follow up through official channels.
Got it, thanks for the feedback
Send
📊 Anonymous vote
Chuanhai Fund · Inner Circle (4)
10:28
Thoughts on today's upstream clean-energy materials deal? The boss wants this fund to go in heavy.
Read the DD report — cash flow looks great, and the tech moat holds for the next three years. I say go for it.
Let me play devil's advocate. The founding team has a serious nominee-shareholding dispute, and the asset-heavy expansion is reckless. If we must invest, demand brutal anti-dilution and ratchet terms.
Agree on the risks. Their No. 2 also shows signs of cashing out and leaving. This one runs deep — don't get charmed by a photogenic founder.
↩ Reply to: Let me play devil's advocate. The founding team has a serious... (10:32)
Agreed, runs deep
Send

🔧 The mechanism

Anonymity isn't chaos
Order is born from rules

The "anonymity" you usually see just swaps your nickname for "Kind Mango" — friends guess who you are in seconds from your tone and turns of phrase. In Masquerade, anonymity starts at column-level database permissions, runs through the entire protocol stack, and reaches every pixel of the UI.

Absolute anonymity at the protocol layer

Not a front-end nickname swap. The sender field is stripped during server-side serialization — even with packet capture or front-end cache digging, no message can be traced back to its source.

L1 Column-level access — the sender_id column is locked down for every client account. The database refuses any front-end query — not "hidden," simply unreadable.
L2 Redacted views — message history is read through dedicated SQL views that drop the sender column. At the database-engine level, the concept of a "sender" doesn't exist.
L3 Broadcast channel — real-time messages don't ride Postgres Changes (which would leak the whole row). A server-side trigger hand-assembles a sender-free packet and broadcasts that instead.
L4 Type isolation — the sender field doesn't even exist in the front-end TypeScript types. Developers can't write the bug — a final safeguard at the compiler level.

Democratic governance

No group-owner dictatorship. Adding members, removing them, triggering hibernation, reviving the group, deleting messages together — every major decision goes through an instant, center-screen pop-up vote.

4/6 YES
The instant it crosses half
the result executes automatically
ignoring any remaining countdown
Strict majority, instant effect
The moment yes-votes exceed half of all members, it passes and executes automatically. If it hasn't passed within 24 hours, it's auto-rejected. Once started, no one can withdraw it — the group's will decides.
Trace-free group deletion
Long-press any message to start a deletion vote. Once a majority agrees, the message vanishes from everyone's screen at once — with no "so-and-so deleted a message" trace left behind.

Anti-identification by design

Anonymity isn't only a back-end job — every front-end interaction detail can become a leak. We seal off every trail at the system level.

Uniform bubbles, zero visual tells
No avatars, no nicknames, no fixed colors or personalized styling. Every member's bubbles look exactly alike — you can't tell from looks whether any two messages came from the same person.
No read receipts, no typing indicator
No read/unread marks, no "typing…" status. Every message stands alone — no one can infer identity from read state or typing timing.
No unsend, no edit
If unsend were allowed, the act itself would reveal authorship — you can only unsend what you sent. No unsend and no edit shuts the door on inferring identity from actions.
Smart timestamps + swipe-to-quote
A time label appears only when more than 5 minutes pass between adjacent messages. Swipe right to quote, opening a two-layer modal so you can follow the reply chain for context in a fully anonymous world.

🚀 Getting in

Four steps to your first masquerade

1

Create your identity

Sign up with your phone number and set a public nickname. It's visible only in your contacts — never inside a group chat.

2

Add people you know

Search and add friends by their unique User ID. A mutually confirmed connection is the prerequisite for joining the same masquerade.

3

Create a group and talk

Create or join a group (≤ 8 people). Once inside — no avatars, no nicknames, no colors. Every message looks identical.

4

Govern democratically

Adding, removing, unbanning, deleting messages — all decided by vote. Cross the halfway mark and it executes instantly. The group's will is the only rule.

"When someone speaks fully anonymous
that's when they show who they really are"

Now gather your circle of eight and start your first masquerade.

1
Download the APK
Click the Android button above to download app-release.apk to your computer. If you open this page on your phone, the APK downloads straight to it.
2
Transfer it to your phone
Connect your phone via USB and copy the APK into the phone's "Downloads" folder. You can also send the file to yourself via WeChat / QQ.
3
Allow installing unknown apps
Go to Settings → Security → Install unknown apps and allow your file manager or browser to install apps. Some phones prompt automatically on first install.
4
Tap the APK to install
Find the downloaded APK in your file manager and tap to install. If a security warning appears, choose "Install anyway" or "Trust this source."
5
iOS TestFlight process
① Send your Apple ID email to the developer, who will add you to the test team.
② You'll get a team-invitation email from Apple — tap Accept Invitation and sign in with your Apple ID to join.
③ Open the TestFlight app you downloaded earlier; "Masquerade" will appear in your test list — tap to install.
Made by Rudolux 沐光

Please open in a browser

WeChat can't download APKs directly. Open this page in a browser by following these steps:

Tap the ··· menu in the top-right corner
Choose "Open in browser"
Tap the download button in the browser