How the decoder works
The image is drawn to an offscreen canvas, converted to raw pixel data, and passed to a QR detection library that locates the three finder patterns, corrects perspective, samples the module grid and applies error correction. Everything happens in memory on your device.
Getting a good decode
- Crop close to the code — extra background hurts detection
- Avoid motion blur and heavy JPEG artifacts
- Keep the quiet zone visible around the code
- If it fails, try a screenshot rather than a photo of a screen
What it can and cannot read
It reads standard QR codes including inverted ones in most cases. It does not read barcodes (use a barcode scanner), Micro QR, or codes obscured by more than their error-correction budget.
Privacy
The file never leaves the browser. There is no upload endpoint, no logging and no retention — the object URL is revoked immediately after decoding.
Frequently Asked Questions
Is my image uploaded?
No. Decoding happens entirely in your browser using the File API and canvas.
Why does it say no QR found?
Usually low resolution, blur or too little contrast. Crop tighter and try a sharper image.
Can it read barcodes?
No — this tool is QR-only. Use the barcode generator's sister tools for 1D formats.
Privacy & Your Data
CSSmith runs entirely in your browser. Whatever you type, paste or upload is processed on your own device and never sent to a server — there is no backend to store it.