Live demo
This one page both displays an animated UR and scans one, using the library's own <ur-scanner> element. Open it on a laptop, open the same
URL on your phone, point the phone at the laptop, and watch the bytes
transfer as the ring fills.
No second device? Fixture mode replays a captured frame sequence and decodes it in-page, so you get the full experience on a single device, no camera needed. All decoding is local; no frame ever leaves this page.
Sender · animated UR
Encoding…
Source fragments: ...: the stream is rateless; it keeps emitting mixed frames.
Receiver · <ur-scanner>
Loading the decoder…
What you're watching
The sender chops your payload into K source fragments and emits an endless, fountain-coded stream of frames, each an XOR mix of several fragments. The receiver can start on any frame and finishes once it has collected a set of frames whose information adds up to the original, typically a little more than K. That is why the progress can jump, why a dropped frame is never fatal, and why there is no “frame 7 of 12” to wait for.
Read the fountain-codes explainer for the worked example, or the reference for the <ur-scanner> attributes, events, and error taxonomy. The
exact page you're on is a port of the package's own demo/,
importing the real published package.