QR animado transfere arquivos entre celulares sem rede ou pareamento
Projeto usa tela e câmera para enviar arquivos por luz, sem servidor, conexão entre aparelhos ou aplicativo dedicado.
Projeto usa tela e câmera para enviar arquivos por luz, sem servidor, conexão entre aparelhos ou aplicativo dedicado.

O Decimen Optical Transfer é um projeto em TypeScript criado por Evan Crawley, identificado no README como Bash Alarmist. Ele transforma uma tela em uma sequência contínua de QR Codes animados e usa a câmera de outro dispositivo para reconstruir o arquivo. O repositório ganhou 3.463 estrelas no período informado e aparece em 17º lugar no ranking mensal do Trendshift, em um momento de interesse por transferências offline e dispositivos sem conexão direta.
Transferir um arquivo entre dois dispositivos normalmente exige internet, rede local, cabo, Bluetooth, pareamento ou a instalação de um aplicativo. O Decimen propõe outro caminho: um aparelho exibe os dados visualmente e o outro os captura com a câmera, sem estabelecer uma rota de rede entre eles.
O método pode ser útil em cenários nos quais a conectividade está indisponível ou não deve ser usada. Também elimina etapas como descobrir dispositivos próximos, conceder permissões de armazenamento ou configurar uma conta.
O projeto funciona pelo navegador. O site pode ser aberto em ambos os aparelhos, sem instalação, e continua funcionando offline depois da primeira visita. O README também informa que a página pode ser instalada como aplicativo na tela inicial de dispositivos iOS e Android.
O remetente divide o arquivo em partes e exibe uma sequência de QR Codes. Como a câmera pode perder quadros por movimento, foco ou iluminação, o projeto usa códigos fountain, uma técnica de transmissão na qual o receptor não precisa receber os blocos em uma ordem específica.
Na implementação descrita, o remetente gera quadros baseados em códigos Luby transform. O receptor coleta aproximadamente K × 1,15 quadros distintos, em qualquer ordem, e então reconstrói o conteúdo. Quadros perdidos aumentam o tempo da operação, mas não alteram a correção do arquivo recuperado.
O fluxo básico é:
npm install
npm run dev
Depois, o servidor de desenvolvimento é aberto em https://localhost:5173/send/. O README orienta acessar, no dispositivo receptor, a URL de rede impressa pelo servidor e aceitar o certificado autoassinado uma vez. Também há comandos para gerar a versão de produção e páginas independentes:
npm run build
npm run build:standalone
O sistema aceita arquivos de até 64 MB ou um trecho de texto colado. Nome do arquivo e tipo de mídia são preservados, a compressão gzip é usada apenas quando ajuda, e um hash SHA-256 é verificado antes da disponibilização do conteúdo. Vídeos recebidos podem ser reproduzidos na própria página.
O README cita uma experiência maior que alcançou 128 KB/s em uma transferência entre telefones. Esse número pertence ao experimento de origem; o repositório não informa uma velocidade garantida para todos os aparelhos, câmeras ou condições de iluminação.
A proposta combina QR Codes animados com códigos fountain e dispensa um canal de retorno entre remetente e receptor. Isso o diferencia de soluções que enviam blocos sequenciais e precisam repetir uma ordem fixa quando há perdas.
O próprio projeto cita alternativas com abordagens distintas: o airgapped-qr-code-transfer, baseado em QR Codes sequenciais e compressão; o txqr, de 2018, que também usa QR animado e códigos fountain em Go; e o libcimbar, que abandona o QR em favor de um código colorido de maior densidade. O README afirma que essas ideias foram desenvolvidas de forma independente.
A transferência não é criptografada. Qualquer câmera apontada para a tela pode ler o conteúdo exibido, portanto o benefício oferecido é a ausência de rede, não a confidencialidade. O hash SHA-256 confirma a integridade antes da entrega, mas não substitui criptografia.
O repositório foi criado em 30 de julho de 2026, teve seu último commit em 7 de agosto e registra a release v0.3.0, publicada em 4 de agosto. Esses dados indicam um projeto recente; informações sobre suporte prolongado, desempenho por modelo de aparelho e compatibilidade detalhada não são informadas no repositório.
A instalação local depende do ecossistema npm e utiliza node-qrcode e zxing-wasm, conforme o README. A descrição oficial e os tópicos do repositório não são informados. O código está sob licença MIT.