Image Compressor
Shrink image file size while keeping it visually intact.
Read the contents out of a QR code image.
Reads the contents of a QR image locally — also handy for checking that a code you generated is actually readable.
Decoding happens **entirely in the browser** (jsQR) and the image is never uploaded; a photo taken with a camera works — it is drawn into a canvas and read pixel by pixel.
Inverted codes (light modules on dark) decode too: jsQR tries both polarities by default. The error-correction level needs no input, since it is stored inside the symbol.
The output is the **raw text** from the code — a URL, vCard, JSON or Wi-Fi config comes out verbatim, ready for whatever you do next.
Choose or drop an image
Screenshots, camera photos and generated QR images all work; png, jpg and webp are readable.
Read the result
A successful decode shows the text immediately; failures are usually about sharpness or occlusion.
Copy the content
You get the original string — if it is a URL, paste it into the address bar.
jsQR corrects for perspective, so mild tilt, uneven lighting and a logo covering part of the code (within the error-correction budget) usually decode fine. Once blur erases the module boundaries, or the image has been downscaled and lost pixels, nothing can recover it — find the original-size image instead of compressing it again.
No: it only decodes. It does not open URLs or fetch anything — deliberately, because a QR code can hold anything, and opening a link for you would mean making a network request on your behalf.
Shrink image file size while keeping it visually intact.
Crop an image freely or to a fixed aspect ratio.
Resize an image to exact pixel dimensions.
Rotate or mirror an image.
Stitch several images into one, horizontally or vertically.
Convert an image to a Base64 string, or back again.
Convert common image formats into smaller WebP files.
Stamp a text or image watermark onto a photo.