How to Read and Decode QR Codes Online: A Practical Guide
QR codes are everywhere — but most people have no idea what is actually stored inside one, or how the scanner decodes it in milliseconds. This guide covers how QR codes work, what they can store, and how to read them without a phone camera.
What a QR Code Actually Stores
A QR code is just a machine-readable way to encode a string of text. That text can be almost anything:
- URL:
https://example.com/page— the most common type by far - Plain text: Any arbitrary string, up to a few thousand characters
- WiFi credentials:
WIFI:T:WPA;S:MyNetwork;P:password123;;— scanning connects you automatically on Android and iOS - vCard contact: A structured block with name, phone, email, address
- SMS:
SMSTO:+15550001234:Hello there— opens a pre-filled text message - Email:
mailto:[email protected]?subject=Hello - Geo coordinates:
geo:37.7749,-122.4194— opens a map to that location - Phone number:
tel:+15550001234
The QR code itself has no idea what "type" it is. The scanner reads the raw text, then your device decides what to do with it based on the format. A URL gets opened in a browser. A WiFi string triggers the connection dialog. It is all just pattern matching on plain text.
How the Scanner Reads It
When a camera points at a QR code, the decoder looks for three specific squares in the corners — the finder patterns. These large square-within-square markers tell the software where the code starts and ends, and what angle it is rotated at. That is why QR codes work upside-down and from an angle.
Once the corners are locked, the scanner reads the timing patterns — alternating black and white modules that run between the corner markers. These establish the grid spacing so the decoder knows exactly where each data cell (module) sits.
The actual data is encoded in the remaining black and white squares. Black = 1, white = 0. The decoder reads the bit pattern, applies the error correction algorithm, and converts the result back into the original text string. The whole process takes under 100 milliseconds on modern hardware.
QR Code Versions and Capacity
QR codes come in 40 versions. Version 1 is 21×21 modules. Each version up adds 4 modules per side, so version 40 is 177×177. More modules means more data capacity.
At the highest error correction level, a version 40 code can store:
- Up to 7,089 numeric digits
- Up to 4,296 alphanumeric characters
- Up to 2,953 bytes of binary data
- Up to 1,817 Kanji characters
In practice, most QR codes you see in the wild are version 3–10. A typical short URL fits in version 2 or 3 — a tiny 25×25 grid. Larger codes with more modules are harder to scan at small print sizes, so keeping the data short is always better.
Error Correction Levels
This is the feature that lets QR codes work even when part of the image is damaged, dirty, or covered by a logo. There are four levels:
- L (Low): Recovers up to 7% data loss. Smallest code, least robust.
- M (Medium): Recovers up to 15%. The most common default for general use.
- Q (Quartile): Recovers up to 25%. Used when the code might get physically worn.
- H (High): Recovers up to 30%. Required when embedding a logo in the center of the code.
That is why branded QR codes with company logos still scan — the logo covers part of the data area, but H-level error correction has enough redundancy to reconstruct it. The tradeoff is code size: H-level codes are significantly larger than L-level for the same data payload.
Reading a QR Code Without a Phone Camera
Phone cameras are the obvious way to scan, but they are not always available or practical. Common scenarios where you need another method:
- A QR code is displayed on your own screen and you cannot point a camera at it
- Someone sent you an image file containing a QR code
- You are on a desktop computer with no camera
- You want to verify what a QR code actually contains before scanning it with your phone
The answer is an online QR code reader that accepts image files. You upload the image (PNG, JPG, GIF, WebP, or a screenshot), and the decoder runs entirely in your browser using the same algorithms a camera-based scanner uses. No image is sent to a server.
Steps for a QR code on your screen:
- Take a screenshot (Cmd+Shift+4 on Mac, Win+Shift+S on Windows, or use your phone to photograph the screen)
- Open a browser-based QR reader
- Upload the screenshot or drag and drop it
- The decoded text appears immediately
What Can Go Wrong
Most failed scans come down to a few fixable problems:
- Too small: QR codes need enough pixel resolution to resolve individual modules. A 50×50 pixel image of a version 10 code will fail. Try to capture at least 200×200 pixels.
- Low contrast: Light gray on white, or dark brown on black — both are hard for decoders. High contrast (black on white) is always most reliable.
- Reflective surface: A QR code printed on glossy packaging or a phone screen can have specular highlights that obscure modules. Tilt the camera slightly to eliminate the glare.
- Partial damage: Error correction handles up to 30% data loss, but only if the finder patterns in the corners are intact. A torn corner that destroys a finder pattern breaks scanning completely.
- Rotation and perspective: Modern decoders handle rotation well, but extreme perspective distortion (photographed at a steep angle) can still cause failures. Shoot more front-on.
- Inverted colors: White modules on a black background. Most modern scanners support this, but older ones do not. If upload-based decoding fails, try inverting the image.
Quick Reference: QR Data Type Formats
If you decoded a QR code and got raw text, this table tells you what the format means:
| Type | Format | Example |
|---|---|---|
| URL | Starts with http:// or https:// |
https://example.com |
| WiFi | WIFI:T:WPA;S:...;P:...;; |
WIFI:T:WPA;S:Home;P:pass123;; |
| vCard | Starts with BEGIN:VCARD |
Multi-line contact block |
| SMS | SMSTO:number:message |
SMSTO:+15550001234:Hi |
mailto:address |
mailto:[email protected] |
|
| Phone | tel:number |
tel:+15550001234 |
| Geo | geo:lat,lon |
geo:37.7749,-122.4194 |
| Plain text | No prefix | Any string |
Read Any QR Code Online — Free
Upload an image or paste a screenshot and decode the QR code instantly in your browser. No app, no camera, no sign-up.