☕ Like this project? Support the author on Buy Me a Coffee
SecretStream is an experimental OBS + browser-extension setup for hiding a live stream behind deterministic block scrambling.
The streamer runs an OBS video filter that scrambles the frame by key. Viewers who know the same key can use the browser extension to reconstruct the stream in real time. The public QR marker in the corner contains only stream geometry metadata, not the secret key.
Browser Extensions:
- Firefox: https://addons.mozilla.org/en-CA/firefox/addon/secretstream-decoder/
- Chrome: In Progress
obs-plugin/- native OBS video filter, currently tested on Linux.extension-chrome/- Chrome / Chromium Manifest V3 extension.extension-firefox/- Firefox Manifest V3 extension.web/- shared browser decoder logic and local test pages.src/- original TypeScript encoder/decoder experiments and golden tests.
npm install
npm run build:extLoad unpacked:
- Chrome / Chromium:
chrome://extensions-> Developer mode -> Load unpacked ->extension-chrome/ - Firefox:
about:debugging#/runtime/this-firefox-> Load Temporary Add-on ->extension-firefox/manifest.json
Fedora example:
sudo dnf install obs-studio obs-studio-devel cmake gcc qrencode-libs
cd obs-plugin
cmake -B build -S .
cmake --build build
cmake --install buildRestart OBS and add the SecretStream Scramble video filter to a source.
This is stream obfuscation, not a replacement for end-to-end encrypted video transport. Compression, scaling, and Twitch transcoding can affect recovery quality, so using Source quality and a stable block grid gives the best result.
If this project is useful to you, you can support the author — it really helps to keep working on it:


