Lifestyle Tools

QR Code Reader — Image and Camera Scanner

Read QR codes from images or your camera in your browser. Inspect decoded text, destination hosts and known warning patterns before opening a link.

About QR Code Reader — Image and Camera Scanner

Read a QR code from an image or your camera

Choose a PNG, JPEG, WebP or GIF image, drag it into the reader, or select Use the camera and then Start camera. The tool decodes a QR code and displays its content before you decide what to do with it. It does not automatically open links, connect to Wi-Fi, add contacts or send messages.

Scanning runs in your browser. QR content, selected images and camera footage are not sent to this tool’s server. Opening a decoded link does make a separate request to that destination. A decoded code is not a safety certificate: check the destination host and the context in which you received it.

The camera stops after a code is found. Select Scan another code to restart it. You can stop the camera or cancel a pending start. The camera also stops when the page becomes hidden. For an image, use Scan another image to clear the result.

Understand the result and its warnings

No known warning patterns found means that the registered checks did not find a match. It does not mean the content, website or operator is trustworthy. An HTTPS link can still lead to a phishing site. This tool does not visit destinations, follow redirects or consult a malware reputation database.

Only an HTTPS URL with no registered warnings receives an Open HTTPS link in a new tab button. Warning-bearing URLs remain text. Other content, including contact and Wi-Fi data, is never turned into an action link. Copying content does not make it safe to paste into another app.

  • High-risk patterns: javascript:, data:, vbscript: and file: URIs; username/password-style URL sections such as https://trusted.example@destination.example/; bidirectional text controls; and selected mixed-script domain patterns.
  • URL warnings: unencrypted HTTP, direct IP addresses, localhost or local-looking hostnames, nonstandard ports, noncanonical URL syntax, line breaks or tabs, Punycode internationalized names, and registered URL shorteners.
  • Action formats: phone, SMS/MMS, email, Wi-Fi, location, Android intents and recognized non-HTTP(S) URI schemes are flagged because other apps may interpret them as actions.
  • Embedded URLs: recognized URLTO/MEBKM wrappers and URL fields in vCard/MECARD contacts receive the same registered checks. A destination is shown when exactly one URL is extracted from the structured data.

IP addresses and internationalized names also have legitimate uses. Warnings call for verification; they are not proof of fraud. The checks do not recognize every possible URI format, shortener or lookalike name.

Examples of decoded QR content

ContentExampleHow it is handled
HTTPS URLhttps://example.com/guideShows the destination and checks registered patterns
Wi-FiWIFI:T:WPA;S:ExampleGuest;P:ExampleOnly123;;Warning; no automatic connection
ContactMECARD:N:Taylor,Alex;EMAIL:alex@example.com;;Text display; URL fields are checked when present
Phonetel:+12025550123Warning; no call is placed
SMS/MMSSMSTO:+12025550123:HelloWarning; no message is sent
EmailMATMSG:TO:alex@example.com;SUB:Meeting;BODY:See you soon;;Email warning; no email is sent
Locationgeo:51.5074,-0.1278Warning; no map is opened
TextHello from Example StudioText display only

These are illustrative data strings, not live credentials. Never share a real Wi-Fi password or authenticator enrollment code just to test a reader. Standard vCard, mailto:, WIFI: and DPP: data can also be displayed.

Image limits and decoding behavior

  • Files must be 12 MiB (12,582,912 bytes) or smaller. The longest image edge must not exceed 8,192 pixels, and the total must not exceed 33,554,432 pixels.
  • The file header is checked before decoding. A misleading extension or MIME type does not make an unsupported file valid. SVG, PDF and HEIC are not accepted; export a supported image first.
  • Images are scaled to at most 2,048 pixels per edge and 4,194,304 pixels for decoding. Small codes in large images can become unreadable after scaling. Crop to the intended code while keeping its surrounding white margin.
  • A supported BarcodeDetector implementation is tried first. If unavailable, unsuccessful or unresponsive, jsQR is used. Analysis normally uses a Worker; if that fails, a smaller image of at most 1,048,576 pixels is processed on the main thread.
  • The file-reading pipeline has a 12-second deadline, with shorter budgets for individual decoding methods. Browser-native operations and synchronous work cannot always be interrupted immediately.
  • The reader displays one decoded result at a time. It is not a batch scanner or a linear-barcode reader. Place one intended QR code in the image or camera view.

Text display, copying and privacy

Decoded content is rendered as text, not executed as HTML. C0 control characters other than tab, line feed and carriage return, plus U+007F and bidirectional controls, are removed from displayed and copied text. Registered invisible formatting characters that affect a URL or scheme interpretation are also removed, with a warning.

Ordinary text retains joining characters such as ZWJ in emoji. Other registered invisible formatting characters in ordinary text are preserved but flagged. In recognized URIs, percent-encoding checks cover registered bidirectional controls and invisible formatting characters, not every encoded control character. The original content remains encoded for copying. The Copy decoded content button copies the displayed text, which may differ from the original payload after these removals.

Local processing describes this tool’s implementation. It does not guarantee the behavior of your device, browser extensions or websites you choose to open. Review the site’s Privacy Policy and Disclaimer for the broader terms of use.

QR phishing: check before opening

The FBI/IC3 warned in January 2022 about QR-code tampering that redirects people to malicious destinations. The FTC’s December 2023 consumer alert describes misleading QR codes placed over legitimate ones or sent in unexpected messages.

Inspect the decoded host for spelling changes and misleading characters. If a code asks you to sign in, pay or act urgently, verify the request through a website or contact method you already trust. A familiar logo on a printed code and an HTTPS address alone do not establish legitimacy.

Frequently asked questions

Q. Are my images or camera footage uploaded?
The decoding runs in your browser. This tool does not send QR content, selected images or camera footage to its server. If you open a decoded link, your browser connects to that destination. Device software and browser extensions are outside this tool’s control.
Q. Does a result with no warning mean the link is safe?
No. It only means that the registered checks did not match. The tool does not verify the destination’s ownership, page content or malware status. Check the host and the source of the code independently before opening it.
Q. Why will the camera not start?
Use the HTTPS site and check camera permissions if access is denied. If no camera is found, check the connection. If the camera cannot be read, close other apps using it and try again. You can always switch to a supported image file. Camera availability depends on your browser and device.
Q. Why was no QR code found?
Keep the whole QR code and its surrounding margin visible. Improve lighting, avoid glare and focus the camera. If the code is small within a large image, crop around it while retaining the margin. Poor print quality, distortion and unsupported QR variants may prevent decoding.
Q. Can I read a screenshot or a QR code on the same phone?
Yes. Save a screenshot and choose it in Scan an image. The file must be a valid PNG, JPEG, WebP or GIF within the size and dimension limits. This is useful when you cannot point the phone’s camera at its own screen.
Q. Why are short links and Punycode names flagged?
Short links conceal their final destination. Punycode represents internationalized domain names, which may be legitimate or may use lookalike characters. The tool flags registered shorteners and Punycode names and hides direct links; it cannot identify every deceptive destination.
Q. Does it connect to Wi-Fi or import a contact?
No. Wi-Fi and contact data are displayed as text. The tool does not connect, enroll a device, import contacts, call numbers or send messages. MATMSG is an email composition format, while SMSTO and MMSTO describe messaging data.
Q. Is copied text identical to the QR payload?
Not always. Certain control and invisible formatting characters are removed from the displayed and copied text, and a warning explains this. Ordinary text and joining characters used by emoji are preserved. Copying content does not make it safe to use in another app.

Sources and specifications

Related tools

Questions or feedback? Contact NanToo

Rate this tool
5.0(2 ratings)