OFFgrid-SDR
Offline RTL-SDR receiver for your browser
Source & downloads: github.com/diddy-boy/OFFgrid-SDR
A self-contained web receiver for RTL-SDR sticks (tested with the RTL-SDR Blog V4), built for listening to FM, medium wave and shortwave broadcasts — anywhere, with or without an internet connection. Everything — radio libraries, DSP, fonts — is inside index.html. Nothing is downloaded when it runs.
Demonstration Video
How to run
- Put
index.htmlanywhere (a USB pen drive works too). It's the whole receiver: one file, nothing else needed. Grab it from GitHub — openindex.htmlin the repo and click "Download raw file". - Open
index.htmlin Google Chrome, Microsoft Edge, or Opera (desktop or Android). Safari and Firefox do not support WebUSB, so the stick cannot be used there. - Plug in the stick, press Power on, and pick the stick in the browser's USB chooser.
No stick handy? Try the demo
Open index.html?demo for simulated stations — no hardware required.
(In Chrome: open index.html, add ?demo to the end of the address bar, press Enter.)
A "Demo stations" list appears — press Power on, then click any station:
FM
- 98.8 — stereo + RDS (name, RadioText, clock) — try Stereo / Wide / Mono
- 99.3 — weak stereo, RDS comes and goes — try Mono
- 100.0 — mono talk station, RDS "News"
- 101.1 — classical, stereo, RDS
Shortwave, 49 m band — one station per filter, all visible on the waterfall at once:
- 5.950 — clean reference station
- 6.010 — selective fading — switch AM to SAM
- 6.070 — mains hum — Hum 50 Hz filter
- 6.120 — electric-fence clicks — Noise blanker
- 6.190 — weak and hissy — Noise reduction
Shortwave, 41 m band — SSB and CW:
- 7.210 — SSB voice, LSB (a little noisy) — try the noise filters
- 7.240 — SSB voice, USB — switch to LSB to hear the difference
- 7.275 — CW Morse beacon, 20 WPM — the CW decoder shows its message: "OFFGRID-SDR DESIGNED BY DIDDY"
- 7.330 — AM broadcaster — compare its loudness with SSB
- 7.395 — fast CW Morse beacon, 35 WPM — the decoder learns the speed by itself
One-time driver setup
The browser must be allowed to talk to the stick directly.
Windows: Run Zadig, go to Options → List All Devices, choose "Bulk-In, Interface (Interface 0)" / RTL2838UHIDIR, select WinUSB, and click Replace Driver.
Linux: four steps, then check.
- Stop the TV driver loading at boot:
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl-sdr-blacklist.conf
- Unload it now (the blacklist alone does not unload a driver that is already running — skipping this causes "setRegBuffer failed" errors):
sudo modprobe -r rtl2832_sdr dvb_usb_rtl28xxu
(or simply reboot) - Give your user access to the stick:
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666"' | sudo tee /etc/udev/rules.d/20-rtlsdr.rules sudo udevadm control --reload-rules && sudo udevadm trigger - Unplug the stick and plug it back in.
Check: lsmod | grep -i rtl28 should print nothing.
Snap Chromium (Ubuntu): also run sudo snap connect chromium:raw-usb.
Also stop anything else using the stick (rtl_tcp, rtl_433, gqrx, SDR++).
(OFFgrid-SDR also retries USB commands that Linux reports as "stalled" — up to 5 times, waiting a little longer each time — which otherwise stopped the stick starting up on some Linux systems.)
macOS: usually nothing to do.
Only one program can use the stick at a time — close SDR#, SDR++, etc. first.
Supported sticks
Tested by the OFFgrid-SDR author:
- RTL-SDR Blog V4 (recommended: HF without any adapter, 4.5 V bias-tee). The V3 also works.
- Nooelec NESDR SMArt v5 (R820T2 tuner)
Other RTL2832U sticks with an R820T/R820T2/R828D tuner should work too.
Browsers
OFFgrid-SDR needs a browser with WebUSB: Google Chrome, Microsoft Edge, or another Chromium-based browser (Opera, Vivaldi, Chromium). Firefox and Safari don't support WebUSB; if you open it in one of those, the page says so, and demo mode (index.html?demo) still works there.
Version
The version is shown on the welcome...
Read more »
diddy