Drop in a screenshot or photo and read the QR code without a camera. Wi-Fi passwords, contacts and payment links stay on your device, and you always see the full link before deciding whether to open it.
Drop an image with a QR code
PNG, JPG, WEBP, GIF, HEIC - nothing is uploaded
Or press Ctrl+V (⌘V on Mac) to paste a screenshot straight from your clipboard.
No image read yet.
Drop a screenshot or photo on the box, pick a file, or simply press Ctrl+V to paste whatever is on your clipboard.
Your browser reads the code. If the first pass fails it retries with more contrast, at a larger size and rotated, so photographed and dark-mode codes still work.
The content is shown as a proper card: a link stays a link you can read before opening, a Wi-Fi code shows the network and password, a contact becomes a downloadable card.
The image is decoded in your browser. QR screenshots often hold payment links, Wi-Fi passwords or login secrets, and none of it should travel to a server.
Decoded addresses are shown as text and never opened or fetched automatically, so a malicious code cannot act on its own.
Rotated photos, dark-mode screenshots and small codes are retried with contrast stretching, upscaling and rotation.
An image with more than one code returns all of them, each highlighted on the preview, and a batch of images becomes one table.
Most QR tools assume you are holding a phone in front of a poster. In practice the code is often already on your screen: a payment request in a chat, a Wi-Fi code in a hotel confirmation, a ticket in a PDF, a two-factor setup page you need to move to a new phone. Pointing a second device at your own monitor is awkward and sometimes impossible, which is exactly the gap this tool fills.
The contents of a QR code are frequently sensitive in a way that a random image is not. A Wi-Fi code contains your network password in plain text. An otpauth code contains the seed that generates your login codes, which is as good as a password. A payment code contains an account identifier. Uploading that image to a server to have it decoded means handing all of it to a third party, which is why everything here happens inside the page.
QR phishing works because a code is unreadable to a human: you cannot tell a legitimate parking meter sticker from one pasted over it. Scanning apps that open the link immediately remove your last chance to notice. This reader never opens or requests a decoded address on its own. It prints the full address, flags shortened links because they hide the real destination, and flags plain http because anything typed on such a page travels unencrypted.
Failures almost always come down to too few pixels, too little contrast or too much angle. A code smaller than roughly a hundred pixels across has lost the detail the decoder needs, a screenshot taken through a dark theme can end up with very little contrast between the modules, and a photograph shot from the side distorts the finder patterns. The reader retries with contrast stretching, upscaling and rotation before giving up, and tells you what to change if it still cannot find anything.