Skip to main content

QR code reader

Scan and decode QR codes from images, camera, or bulk upload.

Free & unlimited

Paste an image directly

Press + V / Ctrl + V to paste an image from your clipboard.

All processing happens in your browser. No data is sent to any server.

Reading a QR code that is already on your screen is the awkward case: you cannot point a phone at your own monitor conveniently, and most scanner sites want you to upload the image. This page decodes locally with jsQR. Drop or paste a screenshot, use the camera, or queue a folder of images for bulk scanning. Once decoded, the payload is classified rather than dumped as a string: a Wi-Fi code is split into network name, password and encryption type with a copy button on the password; a vCard becomes readable contact fields; URLs, email, SMS and phone payloads each get the right presentation. The last thirty results stay in a searchable session history.

Key facts about QR code reader

Key facts about QR code reader
DecoderjsQR, running on pixel data pulled from a canvas in this tab
SymbologyQR codes only. Barcodes such as EAN-13, Code 128, Data Matrix, Aztec and PDF417 are not decoded
Three input modesUpload or drop an image, live camera scanning, or bulk mode for a batch of image files
Clipboard pastePaste an image anywhere on the page and it is decoded — the fastest path from a screenshot to a result
HEICiPhone HEIC screenshots and photos are converted before decoding, so they work without a separate conversion step
CameraRequests the rear-facing camera at 1280 by 720 where available and scans every animation frame until a code is found
Content types recognisedURL, Wi-Fi, vCard contact, email, telephone, SMS and plain text
Wi-Fi payloadThe WIFI: string is parsed into SSID, password and encryption type, with a dedicated copy button for the password
Contact payloadA vCard is broken out into its name, telephone and email fields instead of being shown as raw vCard text
HistoryThe last 30 decoded values are kept in session storage, searchable by text or type, and individually removable
History lifetimeSession storage — it is gone when the tab closes, and it is never shared between tabs or devices
LocationThe decoder reports the corner positions of the code it found, so you can see which code in a busy image was read

What happens to your file

Images are decoded in this tab: the file or camera frame is drawn to a canvas, the pixel data is handed to jsQR, and the result is displayed. No image is uploaded, no camera frame is transmitted, and no decoded value is sent anywhere. The camera stream is requested through the standard browser permission prompt, used only for scanning, and stopped as soon as a code is found or you leave camera mode. Decoded results are kept in session storage in your own browser so they survive a reload but vanish when the tab closes. This matters because QR codes routinely carry Wi-Fi passwords and personal contact details.

About this tool

  1. 1

    Choose how to give it the code

    Upload or drop an image file, switch to camera mode, or use bulk mode for a folder of images. You can also just paste a screenshot from the clipboard onto the page.

  2. 2

    For a screenshot, paste it

    Copy the region containing the code with your system screenshot tool and paste. The image is decoded immediately, with no file to save first.

  3. 3

    For a printed code, use the camera

    Grant camera access and hold the code in frame. Scanning runs continuously and stops the moment a code is recognised, so the stream ends as soon as it is no longer needed.

  4. 4

    Read the classified result

    A Wi-Fi code shows the network, password and encryption separately; a contact code shows name, phone and email; a URL is shown as a link you can inspect before visiting.

  5. 5

    Copy what you need

    Copy the decoded text, or use the dedicated copy button on a Wi-Fi password. Nothing is opened automatically — you decide whether to follow a link.

  6. 6

    Check the history

    The last thirty results stay for the session and are searchable, which is useful after a bulk scan of many codes.

Specs & compatibility
Accepted imagesAny format your browser can decode — PNG, JPEG, WebP, GIF — plus HEIC via automatic conversion
CameraRear-facing preferred, 1280 by 720 requested; needs a secure context and camera permission
Bulk modeMultiple image files at once, with a per-file success or failure result and a decoded count
History size30 entries, session storage
OutputsCopy the decoded text, copy a Wi-Fi password, or follow an email or telephone link
Not supportedPDF417, Data Matrix, Aztec, EAN, UPC and Code 128 barcodes
NetworkNone. Decoding, classification and history are all local
Browser supportChrome, Edge, Firefox and Safari; camera mode requires HTTPS
Cost / accountFree, unlimited scans, no signup
  • Always read a decoded URL before following it — the point of a QR reader on a computer is that you can see the destination first, which a phone camera makes far too easy to skip.
  • For a code on paper, a flat photo in even light beats a close-up: jsQR needs the whole finder pattern in frame and reasonably square.
  • A code printed on a curved surface, such as a bottle, often fails — photograph it from straight on and as flat as you can.
  • Bulk mode reports how many of the images decoded, so a batch of product labels can be checked for print faults quickly.
  • Wi-Fi codes are the most common thing people scan on a laptop, and the password copy button is the reason: you get the credential without retyping it.
  • If a photo of a screen fails, take a screenshot instead — moiré patterns from photographing a display defeat the decoder more often than blur does.
  • The history is session-only by design, so nothing you scan is left behind for the next person to use the machine.
  • Decode from image, camera, clipboard or bulk queue
  • Automatic HEIC conversion
  • Wi-Fi credentials parsed with password copy
  • vCard contact fields broken out
  • URL, email, SMS and phone recognition
  • Searchable session history of 30 results
  • Code position reported
  • No upload, no signup
  • Reading a QR code that is already on your screen without picking up your phone.
  • Getting a Wi-Fi password out of a guest network code without retyping it by hand.
  • Checking where a QR code in an email or a poster actually points before visiting it.
  • Extracting contact details from a vCard QR code on a business card.
  • Batch-checking a folder of generated codes to confirm they all decode correctly.
  • Decoding a code on a machine with no camera at all, using a screenshot.
No. The image or camera frame is drawn to a canvas inside this tab and the pixel data is passed to the jsQR decoder running in the same page. Nothing is transmitted: no image, no frame, no decoded value. Results are kept only in your browser session storage so they survive a page reload and disappear when the tab closes. The camera stream uses the standard browser permission and is stopped as soon as a code is recognised.
No. jsQR decodes the QR symbology only, so one-dimensional barcodes such as EAN-13, UPC-A and Code 128, and other two-dimensional codes such as Data Matrix, Aztec and PDF417, are not recognised. If the black-and-white pattern is a row of vertical bars rather than a square grid with three large corner squares, this page cannot read it. Most phone camera apps handle those formats natively.
Take a screenshot and paste it. The page listens for a clipboard paste anywhere in it, so copying a screen region with your operating system screenshot tool and pressing paste decodes the code without saving a file at all. That is the fastest route on a desktop, and it also works for a code inside a PDF or a video frame that you cannot point a camera at conveniently.
Usually framing rather than resolution. The decoder needs all three large finder squares visible, reasonably square to the camera, with quiet space around the code. Extreme angles, a curved surface such as a bottle or a cup, heavy glare and very low contrast all defeat it. Photographs of a screen add moiré interference from the display pixel grid, which is why a screenshot works where a photo of the same screen does not.
It is parsed rather than shown raw. A Wi-Fi payload is a structured string beginning with WIFI:, carrying the network name, the password and the encryption type, and the page splits those into labelled fields with a dedicated copy button for the password. That makes joining a guest network on a laptop straightforward: scan the code the cafe or the office printed, copy the password, paste it into your network settings.
Never. A decoded URL is displayed as text you can read, with the option to copy it, so you see the real destination before deciding anything. This is the main safety advantage of decoding on a computer: a phone camera usually shows a shortened preview and one tap opens it, while a malicious QR code relies on exactly that. Email and telephone payloads offer a link, but again only when you choose to use it.
View all

Part of File viewers that open the file in your browser

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy