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.

ur-scanner Browser receiver for animated BC-UR QR codes. Camera to bytes, no wallet required.