Bitchat Is a Bluetooth Mesh Chat That Needs No Internet

Ethical Hacking Complete Course Zero to Expert
Hack like black hat hackers. Penetration testing, Kali Linux, WiFi and web hacking, and the hacker mindset behind it.
→ Take the full courseThere is a messaging app with more than 25,000 stars on GitHub that works with no internet. Your phone talks straight to other phones over Bluetooth, and your message hops from one phone to the next until it reaches someone across a crowd. ๐ง
It’s called Bitchat, and on July 23 a government tried to erase it. India’s Cybercrime Coordination Centre ordered GitHub to take it down: the app, the source code, and the Android builds, all within three hours. Protests had filled the streets in Delhi, the authorities had cut the mobile internet to slow the crowd, and people switched to Bluetooth apps to keep organizing. Bitchat was one of them. The government’s complaint was that it leaves nothing behind to trace. You don’t register, you hand over no phone number, and nothing you send passes through a server that could keep a record. Jack Dorsey started the project, and he said the government didn’t like the technology and wanted it gone.
It didn’t work. The code had already been copied into more than 3,000 forks the order couldn’t reach, the repositories stayed up, and taking down a repository removes nothing from the phones already running the app. The mesh keeps running, with no server to switch off.
India wasn’t the first government to try. In April, China had Apple pull Bitchat from its App Store and its TestFlight beta. The app kept surfacing anyway, during internet blackouts and protests in Iran, Uganda, Nepal, Madagascar and Indonesia, wherever the internet got cut and people needed another way to reach each other. I don’t write this to take a side or point at any one country. That’s not what I do. This is the pattern: cut the internet, and people reach for something that doesn’t need it.
Most apps run on the internet, because that’s where the servers live. Bitchat doesn’t. It uses the Bluetooth radio in your phone instead.
Your phone finds other phones nearby that run Bitchat and talks to them directly, with no server in between. Bluetooth only reaches a short distance, roughly ten meters. So a message gets across the square like this: your phone hands it to a phone near you, that phone hands it to the next one, and it keeps moving from device to device across the crowd. A counter inside the message drops by one at each handoff, and after seven hops it stops, so it doesn’t circle forever. This phone-to-phone relay is called a mesh.
When there’s internet around, Bitchat can also reach across the world over a separate network called Nostr. But the trick that scares a government during a shutdown needs nothing except the phones.
You don’t even need a phone for it. The official app runs on iPhone, Android and macOS, and other developers have built versions that run in a terminal on Windows and Linux, using the same protocol over a laptop’s Bluetooth. One of the researchers who later broke Bitchat wrote his own Linux version and turned it into a relay: a machine that stays on and pushes the range further with no central service behind it. Others go further and bridge Bitchat to a LoRa mesh, a long-range radio network that runs on cheap little boards, and the range jumps from meters to kilometers.
Bluetooth is a radio, so a nearby eavesdropper with the right gear can tell there’s traffic in the air, and each phone in the mesh is forwarding messages for other people. That sounds wide open. The message itself isn’t.
Bitchat scrambles each private message so only the person you sent it to can read it. It uses the Noise Protocol Framework, a set of building blocks that trusted software like WhatsApp and WireGuard already rely on. The phones relaying your message only ever touch a scrambled block they can’t open. The cipher is ChaCha20-Poly1305, and the keys change for each session, so cracking one chat doesn’t open the rest.
The scrambling holds up. The weak spot was somewhere else: knowing who’s on the other end.
Bitchat launched in July 2025. A researcher named Alex Radocea read through the code within a day and found the hole. Bitchat lets you mark a contact you trust as a favorite. They get a star, and after that your phone treats anything from that identity as coming from your friend. The catch: the key that was supposed to prove it was them proved nothing. Your phone carried it around and checked it against nothing.
So an attacker sitting nearby can walk right in. Here’s how it works:
- โ your contact’s identity key is public, so the attacker copies it
- โ the attacker shows you that key, with their own throwaway keys underneath for the actual chat
- โ your phone can’t tell those keys aren’t your contact’s, so it accepts them
- โ the star shows up next to the name, and you trust it
- โ what you meant for your friend goes straight to the attacker
You think you’re talking to your friend. You’re talking to the attacker. That’s a man-in-the-middle, and it was simple to pull off. Radocea reported it in the open, on the project’s GitHub, as issue 19.
The fix is hard because of the way Bitchat is built. Signal leans on a central service that keeps a record of which key belongs to which person, so your phone can check. Bitchat threw that service out on purpose, because a central service is exactly what a government can pressure or switch off. Take away the authority in the middle and you lose the easy way to prove who someone is. That’s the trade in any app with no server.
Dorsey didn’t get defensive. Within a week the project moved to the Noise protocol, which builds that mutual check into the handshake. The app put up clear warnings that it was still in development, reached the App Store, and added Nostr. Radocea, the same researcher who broke it, later said the response was about as good as it gets.
Bitchat now lets you check identity yourself. Each person has a fingerprint, a short string built from their key. You read it out loud or scan a code when you’re face to face, then mark that person as verified. Once you do, the impersonation falls apart.
The whitepaper says the rest straight out. The handshake proves a key is a key. It doesn’t prove the key belongs to the person you have in mind. Skip that face-to-face check, and an attacker can still slip in at the very first connection, before you’ve verified who they are. That’s not a fresh bug someone runs today. It’s the plain problem with trust when there’s no authority in the middle, and it’s the part still being worked on. One more thing about carrying it in your pocket: your phone sends out a Bluetooth signal as you move, and someone can use that signal to track where you’ve been, even if they can’t read a word you wrote.
For keeping a conversation going when the internet gets cut, Bitchat is strong, because there’s no single server to shut down. For protecting you against a serious adversary, it isn’t enough on its own, not until you’ve checked the person on the other end by their fingerprint, in person. Encryption hides what you write. It doesn’t promise who’s reading it.
Sitting between two people and posing as one of them is one of the oldest attacks on a network, and it’s a whole chapter in my ethical hacking course. I cover man-in-the-middle attacks, how a network moves data, the encryption that protects it, and how to stay anonymous when someone wants you quiet.
โ Join my complete ethical hacking course
Hacking is not a hobby but a way of life.
Sources:
Bitchat Whitepaper | SPR: Identity Is A Bitchat Challenge | SPR: The Bitchat Update | Jack Dorsey on the India notice
Stay updated
Get the latest posts in your inbox every week. Ethical hacking, security news, tutorials, and everything that catches my attention. If that sounds useful, drop your email below.