whatisgithub

What is shadowcat?

unprovable/shadowcat — explained in plain English

Analysis updated 2026-05-18

211HTMLAudience · generalComplexity · 2/5Setup · easy

In one sentence

A single offline HTML page that transfers files between two devices by flashing QR codes at a camera, for phones whose Bluetooth or NFC no longer works.

Mindmap

mindmap
  root((ShadowCat))
    What it does
      QR code file transfer
      Fully offline
      For old phones
    Tabs
      Generate
      Scan
      Send file
      Receive file
    Tech stack
      HTML
      JavaScript
      Camera API
    Use cases
      Rescue old phones
      LAN file transfer
      No network needed

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Move a file between two old phones that have no working Bluetooth or NFC

USE CASE 2

Send a small file to a device with no internet or LAN access, using only a camera and a screen

USE CASE 3

Recover one specific missing chunk during a slow transfer without restarting the whole loop

What is it built with?

HTMLJavaScript

How does it compare?

unprovable/shadowcatkeyai/calculusmadeeasy-zhgiovapanasiti/active_canvas
Stars211215204
LanguageHTMLHTMLHTML
Setup difficultyeasyeasymoderate
Complexity2/51/52/5
Audiencegeneralwriterdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Camera access needs HTTPS or localhost, iOS Safari requires HTTPS even over a local network.

So what is it?

ShadowCat is a single HTML file that lets you transfer files between two devices using only their cameras and browsers, with no internet connection, no Bluetooth, no NFC, and no cable required. The intended use case is old phones whose wireless radios have stopped working but whose cameras and screens still function. The way it works: the sending device breaks a file into small chunks and displays them one after another as a series of QR codes on screen, cycling through them repeatedly at a speed you set. The receiving device points its camera at the sender's screen, scans the QR codes as they appear, and pieces the file back together. A grid on the receiver shows which chunks have arrived and which are still missing, so you can wait for the sender to cycle around and fill in any gaps. Once all chunks have been received, the file's integrity is verified before a download button appears. The tool also has simpler tabs for generating and scanning single QR codes with short text, for quick copy-paste operations between devices. Because the HTML file needs camera access, browsers require it to be served over HTTPS or a local network address rather than opened directly as a file. The README explains how to serve it with a basic Python web server on your laptop, then visit it from the old phone on the same network. iOS Safari requires HTTPS for this to work cross-device. Transfer speed is slow by nature: roughly 0.8 to 1 kilobyte per second, so a 100 KB file takes about two minutes per loop of the QR cycle. The chunk size, frames per second, and error correction level are all adjustable to match what a given device can reliably scan.

Copy-paste prompts

Prompt 1
Help me modify ShadowCat so it uses a different chunk delimiter than the pipe character
Prompt 2
Show me how to set up a local HTTPS server so ShadowCat's camera scanning works on iOS Safari
Prompt 3
Help me add a percentage counter next to ShadowCat's missing-chunks grid
Prompt 4
Write a Python script that serves ShadowCat automatically over my local network on startup

Frequently asked questions

What is shadowcat?

A single offline HTML page that transfers files between two devices by flashing QR codes at a camera, for phones whose Bluetooth or NFC no longer works.

What language is shadowcat written in?

Mainly HTML. The stack also includes HTML, JavaScript.

How hard is shadowcat to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is shadowcat for?

Mainly general.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.