utility

Optical File

Turn a small file into animated QR frames and restore it through another device's camera.

Local processing
About your filesFiles and content selected in this tool are processed in your browser and are not uploaded to a Browser Kitty backend.
Operation demo See the basic workflow in a short video.

About this tool

Optical File is an experimental file-transfer tool that converts a small file (up to 1 MiB) into an Animated WebP made of sequential QR codes, then restores the original file by scanning those frames with another device's camera. It explores using only a screen and camera as the data path, without cloud storage or a network transfer channel.

It is not intended to replace mature high-speed file transfer methods. This is an experimental project for testing how practical optical data transfer can be in a browser. CRC32 checks each data block, SHA-256 verifies the reconstructed file, and generated WebP files can also be decoded directly for faster restoration.

Good for

  • Experiment with transferring a small file using only a screen and camera instead of a network connection
  • Explore how QR-based data transmission can work in a browser
  • Save an animated QR WebP and test whether the original can be reconstructed in another environment

What it can do

Key capabilities available in this tool.

How to use

  1. Under Create Animated QR, choose a file no larger than 1 MiB.
  2. Normally keep the camera-oriented default of one QR per frame at 6 fps and generate the Animated WebP.
  3. Display the generated QR animation fullscreen on the sending device.
  4. On the receiving device, start the Optical File camera and fit the whole QR area inside the guide.
  5. After all blocks are collected, confirm CRC32/SHA-256 verification and save the restored file. You can also restore directly from the generated WebP.

Supported

  • Input file: up to 1 MiB
  • Output: Animated WebP containing sequential QR frames
  • Camera restoration: requires camera permission; HTTPS is recommended
  • Direct restoration: requires a browser whose ImageDecoder API can decode Animated WebP frames

Limitations and notes

  • This tool is experimental. Camera scanning speed and reliability vary substantially with the device, display, focus, exposure, reflections, and distance.
  • The input limit is 1 MiB, and the generated Animated WebP can be much larger than the source file.
  • The WebP is not encrypted; anyone who obtains it can reconstruct the original file. CRC32/SHA-256 detect corruption but provide neither secrecy nor authentication.
  • It is not intended to replace high-speed network transfer, USB, AirDrop, or similar mature transfer methods.

Frequently asked questions

Why is this marked experimental?

Continuous camera capture of dense QR frames varies greatly across devices and shooting conditions. The project is published to explore and evaluate the practicality of this optical transfer approach.

Can the file transfer itself work without Internet access?

Once the app is available on both devices, the transfer data itself travels only between the screen and camera. Some browsers provide more reliable camera access when the app is served over HTTPS.

Is the file encrypted inside the QR animation?

No. CRC32 and SHA-256 are used for integrity checks, not encryption. Encrypt sensitive data separately before using this experiment.

Offline version and source code

Encoding, restoration, and verification run locally without uploading files or camera frames. The standalone HTML can be kept offline, although camera permissions may work more reliably when served over HTTPS.

View source on GitHub