Hello! I’ve been working on blastQR for a couple of years now and I thought this community might find it useful. Feel free to try it and ask me anything!
blastQR is a fully open-source file transfer app and protocol that works completely offline. You can even use it in airplane mode. Data is transferred through sequences of QR codes displayed on a sender device and scanned by a receiver device’s camera. It uses RaptorQ codes so the receiver can recover the file from any sufficiently large subset of frames.
Note that although I have made use of AI as a coding assistant this is not a vibe-coded app and I do plan to continue improving it and supporting it in the future.
Here are some of the key features:
- Works fully offline: No internet, Wi-Fi, Bluetooth or servers. Your data stays offline.
- One-to-many distribution: Share the same file with multiple devices simultaneously using a single blastQR broadcast.
- Cross-platform: Android, iOS, macOS, Linux and Windows, plus a command-line tool that can send from a terminal, even over SSH.
- Password encryption: You can optionally encrypt files with an auto-generated password or a custom one.
- Media compression: The app supports lossy image compression and video transcoding for quicker transfers.
- Multiple codes on screen: Shows multiple QR codes at once for higher speed. With 8 codes at 60 fps, transfers peak at around 1.4 MB/s.
- Send multiple files in one go: They’re zipped into one transfer and unpacked into separate files on the receiver.
- Sound feedback: The receiver plays a short tone when it has the whole file, and the sender stops automatically when it hears it.
- Start scanning at any point: No need to catch every code, just keep the camera on the screen until it’s done. Blurry or missed codes don’t matter.
- Regular QR scanner: You can also scan normal QR codes and save them.
- Open protocol that other apps can implement
- Built-in file manager
I’m trying to build a small community around the project so it can be improved and maintained and so it can reach more people in the future.
Downloads for all platforms can be found here: https://codeberg.org/blast/blastqr/releases/latest
Snow Crash here we come!
J/k, cool idea.
Super cool! I could totally see this being an integral plot point in a show or movie. Crowds of people suddenly aiming their phones at the screens in Times Square to get the latest elicit data dump or some such 😎
Thanks for all the hard work, I can’t wait to play around with it!
Seems easier to just grab a USB flash drive.
Indeed but nowhere as fun ;)
it is most useful when you don’t want to connect anything or need to broadcast data to multiple devices simultaneously. For example transmitting info to multiple devices during a digital blackout where the government has cut off internet. Also useful for air-gapped systems!
Interesting, though what if the receiver fails to scan the codes quicly enough?
The cool part is that codes are generated indefinitely so basically you can keep scanning until you receive the data. You don’t need to capture every frame or scan in any particular order.
This is made possible by raptorQ (https://github.com/cberner/raptorq) the fountain code encoding used by blastqr.
Feel free to try it out!
Note that although I have made use of AI as a coding assistant this is not a vibe-coded app
Can you elaborate more on how AI was used?
For context, I’m a software developer with around 15 years of experience. Most of it writing Android and iOS apps in Java, Kotlin, Swift and lately Dart (Flutter) + Rust which is what this project is written in.
Although I did start the project from scratch I have lately been using Claude Code as a coding assistant. I write code myself but I also let it write or refactor parts of it. The CLI tool is the part that Claude has mostly written from scratch because it’s not something I had experience in writing before. That being said I also review all the code that Claude writes.
Thanks for asking! there’s also some disclosure about this in the readme file
Thanks for being honest and open about it
The CLI tool is the part that Claude has mostly written from scratch because it’s not something I had experience in writing before.
This seems like the perfect opportunity to learn something new in my opinion, CLIs aren’t difficult to make. And you may want to consider moving to GitHub because of Codeberg’s ToS.
I totally agree and I’m very open to welcome anyone who wants to rewrite that part or I might go for it myself in the future. The reason I went for it is that I really wanted to be able to use the CLI tool right away and the AI produced a good result so I left it in the project for now.
About Codeberg I did read their blog post and I didn’t think my project falls into any of the cases they mention:
spoiler
Projects that are created by LLM “agents” in autonomous ways Projects written and maintained with heavy use of LLMs Projects where the amount of resources (e.g. storage, CI/CD) is significantly larger than what the involved amount of people could have created by hand Projects heavily tied to the LLM ecosystem, e.g. LLM-written tools to ease LLM usage Users sending LLM contributions in violation of project’s custom policies
If they ever consider it infringing their ToS I could move it to GitHub where there’s already a mirror of the repo.
Reminds me of CimBar, but yours seems to be way faster! Maybe i’ll try it, for the fun of it 👍



