I built an anonymous chat site — here's the full 2-year journey
I run Chatsj.com — a free, registration-free, anonymous text chat room. No accounts. No emails. No tracking. You open the site, pick a nickname, and you're talking to a stranger in under ten seconds.
This is the whole story: why it exists, the features, the failures, the money problems, and the lessons I've learned so far. If you're building something as a side project, some of this might save you pain.
Why it exists
Legacy chat rooms were never designed for how people actually chat anymore. The category is dominated by decade-old giants that have decayed — think a site like Chatiw, one of the old names in browser-based random chat. Over the years it (and its peers) sank under:
- Aggressive ad loops — spam tabs, pop-unders, and video banners that drained mobile data and made the chat bar impossible to use.
- Server lag — bloated frameworks that drop sockets, freeze feeds, and make messages feel delayed.
- Buggy automated IP bans — broad firewall filters that lock out innocent users on shared dynamic cellular networks.
- Invasive tracking — persistent cookies and scripts quietly building advertising profiles on people who just want to talk.
I wanted the opposite. A place that's clean, fast, private, and genuinely ephemeral. So I built it.
The build
From day one the design decisions were locked:
- No registration. No email, phone number, password, or profile. You couldn't be tracked or profiled even if we wanted to let someone.
- Browser-first. Built as a real-time web app that runs natively in Safari, Chrome, or Firefox — no app download, no storage drain, no permission prompts. (Modern web handles real-time fine; an app wrapper is just a way to farm install stats.)
- Ephemeral data. Messages are purged after 30 days, media after 90 — gone forever, automatically, with no human review.
- HTTPS everywhere and privacy by design, not as a feature bolt-on.
The stack is Phoenix/LiveView with WebRTC for audio/video, chosen for low-latency real-time websockets and a tiny, fast payload. But honestly the tech matters less than the constraints it was built around. Those constraints are the whole point.
Privacy is the product
This is the hill I'll die on. Chatsj doesn't store your data long-term, doesn't sell anything, doesn't build profiles, and can't be used for tracking. All communication is encrypted in transit. What little temporary data exists is there only to make the platform work and to catch bad actors — and it's deleted on a schedule.
The security angle is real engineering too — not just marketing copy. It's a data-minimization stance that shrinks the attack surface: if we don't hold your history, there's nothing to leak.
Read more: How Chatsj protects your privacy · Data security & retention
The first feature was born in a chat room
The best features on Chatsj didn't come from a roadmap. They came from real people talking in rooms.
The story that tells you everything: I was testing an admin-only crown emoji 👑 (tricky when anyone can type "admin" as a nickname, so I needed a visual badge only real admins could wear). A user in the room joked, "Okay king… for the love of god, please add dark mode." Then, laughing: "Seriously though. My eyes are dying."
That was it. I opened an AI IDE and built dark mode — idea to production in under three hours, using our existing design system and the admin dashboard as a reference. Some files got missed, a few styles didn't translate, but manual cleanup finished it.
The reaction was the part that surprised me. Long-time users said things like "Light mode was like a flashlight at night" and — this got me — "We didn't want to bother you." A bunch of them had wanted it for months and never said anything because they thought I was busy.
That's when I understood: this isn't a website. It's a community, and the community shapes the product.
Read more: How Dark Mode was born on Chatsj
The feature wave that followed
Once the community knew they were heard, the requests (and the shipped features) came fast:
- Image gallery — stop re-uploading the same picture a dozen times. Tap a thumbnail, it's in chat.
- Pin up to 5 users — keep your besties and your crushes at the top; clean unpin switching when you hit the cap.
- Community report → auto-ban — enough reports flips an automatic ban. No courtroom.
- Password-protected rooms — private rooms where the host controls who gets in.
- Persistent inbox history — revisit past conversations without losing messages.
- Voice notes — record and send short audio inline.
- Audio & video calls via WebRTC — free, no sign-up, open to everyone.
Every one of these came from listening to users actually using the product, not from a planning doc.
Read more: The big Chatsj feature drop
Moderation: bans aren't random
Running an anonymous site means moderation is a constant job. People imagine bans as some admin angrily swinging a hammer — in reality ours is an automated system that watches patterns and signals.
Bans are logical and tiered: first-time minor offense gets a short ban, repeat offenses escalate, serious violations get the door. Once served, you're welcome back with a clean slate. We don't police fun and we don't ban for no reason. But antifragile safety — the stuff that keeps the vibe from being destroyed — is non-negotiable.
The funny part is the comeback attempts. People return and repeat the exact same behavior, or send friends to plead for forgiveness, or act shocked the system still works. The system remembers. Antivirus keeps updating.
Read more: How bans really work on Chatsj · Banned? Let's clear things up
The hard part: image abuse
Text chat is cheap to run and easy to moderate. Images are a different beast entirely, and they almost sank the site.
Free, anonymous uploads attracted relentless abuse:
- The same image uploaded 50–90 times — one user re-uploading one 10MB file dozens of times cost more than hundreds of normal chatters combined.
- Spam images and explicit content that required constant moderation.
- People using Chatsj as a free NSFW / dating exchange.
- Users bypassing limits with VPNs and adblockers.
I threw technology at it, in layers, each one only partially working:
- SHA-256 exact-match hash banning — caught exact duplicates but abusers just re-encoded the file and the hash changed.
- dHash perceptual similarity — caught near-identical images (same picture recompressed or cropped), which closed the re-encode loophole.
- OCR on uploads — ran Tesseract over new-user images to catch spam text and URLs baked into the pixels.
- Admin comparison & duplicate-bulk tools — so I could find and purge duplicate groups efficiently.
Here's the honest lesson: every technical fix spawns a smarter abuser. The hash work shrunk the problem, but it never stopped it, and each layer added compute cost and latency to every legitimate upload. The moderation arms race is unwinnable on the technical side alone.
Lessons learned so far
1. Technical moderation is a losing arms race — gating is the real fix. Hashing, dHash, and OCR reduce abuse but don't eliminate it, and cost real money per legitimate upload. The thing that actually stopped the bleeding was making image uploads and voice notes donation-only. Abusers don't pay. Genuine community members understand and support it.
2. OCR is only worth it on low-trust accounts. Running Tesseract on every upload is expensive. We scoped it to accounts under an approved-upload threshold — new users get the full sync pipeline (OCR + hash checks), trusted users skip the heavy path. Cost-aware moderation matters when you're bootstrapped.
3. Community-built features ship better. Dark mode, gallery, pinning, and reporting all came from users talking in rooms. Build with your community, not for them — they'll tell you exactly what they need if you let them, and they'll treat features they asked for as theirs.
4. "Free forever" without economics is a slow death. Two years of running the platform out of pocket while hearing "keep it free / no ads / I use an adblocker anyway." Every demand for everything-free-with-nobody-paying is really "someone else should foot the bill." If you don't solve the economics, the thing dies.
5. Cloud "scale-with-usage" billing is a trap for a bootstrapped side project. I started on a managed PAAS (Fly.io) — great developer experience, but dynamic, usage-based billing across machines, database volumes, storage, and egress spiraled to around $120/month for a free site with zero revenue. The fix was moving to a fixed-cost VPS with Docker and Postgres: a flat, predictable monthly bill regardless of traffic. The trade-off is real — I now own backups, TLS, restarts, and upgrades myself — but when revenue is $0, the bill is your biggest line item, and predictable beats convenient.
6. Privacy-first is a moat, not a slogan. The no-login, no-tracking, auto-delete stance isn't just ethics — it's positioning that legacy competitors structurally can't copy (they'd have to rip out their ad/data businesses). Saying "we can't track you" and actually not being able to is the strongest trust signal a privacy-focused product can make.
The demand paradox
Two years in, the math was brutal. The community wanted:
- Free chat, free image uploads, free voice notes
- No ads, no registration, no limits
- Full real-time audio/video
…and when asked for any realistic way to cover server costs, the answers were "No ads," "Keep it free," "I use an adblocker anyway," "I don't have money." High demand, high costs, and zero support. I paid the whole thing out of pocket for two years.
That's the reality check every free product eventually hits: a community that wants everything for free but offers nothing is not a community — it's a cost center. The question isn't whether to monetize, it's how to do it without betraying the thing that made people show up.
The pivot: donations instead of betrayal
I chose donations over subscriptions or ads, because both of those would have destroyed what made Chatsj special:
- No registration, no personal data, no tracking — all preserved. Donations let me keep ads minimal instead of aggressive.
- Supporters get premium features as a thank-you.
- Abusers self-filter: people who genuinely value the platform support it, freeloaders who abuse it don't.
Tiers:
- $5 / week — image uploads, voice notes, emoji next to your username.
- $10 / month — everything above, plus profile pictures and full 30-day access.
What stays free for everyone: text chat, audio calls, and video calls. Always. The core of Chatsj is not paywalled.
The effect was immediate and measurable. Abuse dropped dramatically, server costs fell, and the site got faster. Gating — not stricter moderation — turned out to be the sustainable answer. It also meant any ads I run could stay minimal and non-intrusive, rather than the aggressive ad loops that plague the legacy giants.
Read more: Why image uploads & voice notes went donation-only
Where it stands now
Chatsj is live, anonymous, and cleaner than the legacy giants that inspired it. Regional rooms cover the US, UK, India, and Pakistan, plus global lobbies. The core stays free, ads stay minimal, the data stays ephemeral, and the community keeps driving what we build next.
What's still hard
I want to be honest that this isn't all solved. The hard problems I'm still wrestling with:
- Sustainability at scale — donations cover the gap, but growth means the gap grows.
- Moderation at volume — automated bans work, but smarter bad actors always find the edge.
- Bot economics — capchas, spam bio auto-mutes, and behavioral checks are a treadmill.
- Mobile-perf on legacy devices — keeping the lightweight promise true on aging phones.
If you've wrestled with any of these, I genuinely want to hear how you handled it.
The blunt comparison
Here's the thing about the decade-old giants like Chatiw: they pioneered browser-based random chat, and nobody can take that away from them. But "pioneered it ten years ago" isn't a reason to keep tolerating ad floods, dropped connections, wrong-headed IP bans, and tracking scripts in 2026. The category needed a reset, not an app-store facelift.
That's what I'm trying to build — a clean, fast, private, registration-free chat room that treats the user as the customer, not the product.
Read more: Top Chatiw alternatives with no registration
Come see it for yourself
Honestly, the best way to understand what I've built is to use it. No sign-up, no creep, no tracking — just open a room and say hello.
👉 https://chatsj.com — pick a nickname, join a room, and tell me what breaks (or what you'd want next). I read everything.
If anything here sparked a question or a counter-thought, drop it in the comments. Building in public means learning in public.
Posted Sep 5, 2026, 4:01 PM UTC