GPS Whistle
Whistle your location into any recording. It survives compression and can be decoded later.
Start your recorder, hold this device near it, turn the volume up, and press the button. It plays a short tune and some chirps, twice: about 11 seconds.
Open a recording (voice memo, field recording, video) to find any GPS Whistle in it. Nothing is uploaded; decoding happens on this device.
How it works, and what it proves
The page encodes a 40-byte frame as audible tones, framed by a tiny melody that spells G‑P‑S‑W in notes (G–B–E–B, by the French method Ravel and Debussy used to spell HAYDN) and plays it backwards at the end, using ggwave, with Reed–Solomon error correction and a CRC-32 check. The frame carries the location on a ≈19 m grid, the reported accuracy, a UUIDv7 (which includes the time), and optionally 8 bytes of the current drand randomness beacon. It plays twice.
In testing, it decoded through AAC, MP3 and Opus compression, generation loss, resampling, 8-bit audio, heavy noise, room reverb, clipping, automatic gain control, and recorders whose clocks run up to 4.5% fast or slow.
- Private by default. Your location never leaves this device. Fetching drand sends nothing about you. Timestamping sends only a SHA-256 hash of the record.
- Time window. The drand value proves the whistle was made no earlier than that beacon round. An OpenTimestamps proof of the saved record proves it existed no later than a Bitcoin block.
- What it doesn’t prove: that anyone was actually there. Browser locations can be faked, and anyone can play a whistle into any recording. It’s provenance metadata that’s hard to strip, not proof of presence.