Generator
WhatsApp QR Code WiFi QR Code vCard QR Code PDF QR Code Menu QR Code Event QR Code QR Phone Cover Batch QR Code QR Code Checker QR Code Size Guide Static vs Dynamic How to Scan a QR Code QR Code Not Working
Designs Smart Logo Fit FAQ Check a code →
Guide

Free QR Code Test & Checker

Find out if it will scan before you pay the printer.

Drop in any QR code image — one a designer sent you, one from an old campaign, one you found in a folder — and Frame decodes its contents and runs practical readability checks so you can review it before you print.

Upload a PNG, JPG or WebP image of a QR code to test whether it decodes and check common scan-quality problems before printing.

Drop a QR code image here, or click to upload PNG, JPG or WebP · decoded and analyzed entirely in your browser

Upload an existing QR code image and Frame tries to decode it right in your browser. If it reads, you see exactly what the code contains and what kind of content it is. You also get three diagnostics: contrast, edge clearance and image size. Fix any warnings before the code is printed or published.

Use it to check QR codes online for exported PNGs, screenshots, logo QR codes, print proofs, and designs that a phone struggles to scan. The result is a diagnostic from Frame's own checks, not a certification.

What is a QR code checker?

A QR code generator creates a new code from your data. A QR code checker works the other way round: it examines a QR image that already exists. Frame's checker is a QR code tester and quality checker in one, and it answers six practical questions:

That makes it a QR code readability test you can run on any image before you trust it. It works whether you made the code yourself, a designer placed it in artwork, or you found it in an old campaign folder.

How to test a QR code

  1. Export or save the QR imageUse the file you intend to print or publish. The original PNG export is better than a copy of a copy.
  2. Upload it to FrameDrop the image on the checker or click to choose a file. With a keyboard, Tab to the upload area and press Enter.
  3. Let your browser decode itThe image is read and decoded on your device. Nothing is sent to a scanning service.
  4. Confirm the decoded content exactlyRead the Content row carefully: the domain and path, the phone number, the network name. A typo is the one fault no quality check can catch.
  5. Review the content typeCheck that the label matches what you meant to make. A WiFi code should say WiFi network, not Plain text.
  6. Review contrast, edge clearance and sizeEach one gets a Pass, Warning or Issue with a short explanation.
  7. Fix problems and test the new imageRegenerate or adjust the design, export it again and upload the new file. Re-test after every change.
  8. Print a proof and test it on real phonesPrint it at final size, then scan it in the lighting and from the distance people will actually use.

Software testing checks the file, not the print. Paper, ink, lamination, lighting and distance only exist in the real world, so a printed proof scanned with real phones is always the final test.

What Frame checks

Every uploaded image gets the same set of checks. Here's what each one looks at and where its limits are.

CheckWhat Frame examinesWhat the result meansImportant limitation
QR decodingWhether its QR decoder can find and read a code in the image.Decoded means the image contains a readable code. Otherwise you see "No QR code detected".One decoder reading one image is strong evidence, but other phones and scanner apps can behave differently.
Decoded contentThe exact text stored in the code.This is what a scanner receives: a link, WiFi details, a contact card or plain text.Very long content is shortened on screen after 320 characters. The destination is never opened.
Content typeHow the content starts (such as WIFI: or mailto:) and, for web links, the hostname.A label such as Website URL, WiFi network or WhatsApp chat.A label describes the format, not whether the destination is safe or who runs it.
ContrastThe dark and light parts inside the detected code, separated at a brightness split calculated from your image.A measured ratio, rated strong, borderline or low by Frame's heuristic.It measures the file, not the printed colours. The cut-offs aren't an official QR standard.
Edge clearanceThe distance from the detected code to the nearest image edge, in estimated modules.Roughly how much room the image leaves for a quiet zone.It doesn't check whether that space is blank. Text or artwork inside it isn't detected.
QR size in pixelsHow many pixels wide the detected code is in your original image.Whether there's enough detail for print, by Frame's heuristic.Pixel size alone doesn't tell you how large the code will be printed.
Estimated module countThe module size measured from the image, divided into the code's width.How dense the code is. Longer content means more modules.It's an estimate. Logos, resizing, JPEG compression and screenshots can shift it by a few modules.
Approximate size at 300 DPIThe code's pixel width converted to centimetres at 300 dots per inch.How large the image would print at a common print resolution.It isn't a recommended print size. Density and scanning distance decide that.
Error correction levelNot read from the image.Always shown as Not available.Frame doesn't guess the error-correction level of an uploaded code.
Overall diagnostic scoreA 0–100 summary of the decoding, contrast, edge-clearance and size checks.Looks print-safe, Usable with caveats, or Needs attention before printing.It's Frame's own summary, not a certification, a security rating or a scan guarantee.

How to read the score

Decoding counts most towards the score, followed by contrast and edge clearance, then size. Any single Issue caps the score at 55, so one serious problem can't be averaged away by passes elsewhere.

85–100Looks print-safe

The image passed the main checks, possibly with a minor warning such as size. Still print a proof.

60–84Usable, with caveats

At least one warning is worth fixing before the code goes to print.

Under 60Needs attention before printing

There's an Issue, or several warnings. Fix them and test the new image.

What Frame doesn't check

The checker reads pixels. It can't judge anything that depends on the destination, the physical print or a particular phone. It doesn't check:

  • Phishing or scam links
  • Malware
  • URL or domain reputation
  • Who owns a website or account
  • Who receives a payment
  • Whether the destination is online
  • Whether the quiet zone is actually blank
  • Compatibility with every phone and app
  • Printer, paper and material behaviour
  • The code's exact error-correction level

For the link itself, read the decoded content and only open destinations you recognise. For the physical side, print a proof.

QR code checker vs QR scanner

Frame QR Code CheckerTypical QR scanner app
InputAn uploaded image fileUsually the live phone camera
Main jobDecode the image and diagnose its qualityRead the content so you can act on it
OutputContent, type label, contrast, edge clearance, size and a diagnostic scoreThe content, often with a button to open it
Opens the linkNever. The content is shown as textOften offers to open it straight away
CameraNot usedUsed
Best forChecking artwork and exports before printing or publishingUsing a code in the real world

So Frame works as a QR code image scanner: it can scan a QR code from an image. It isn't a live webcam scanner, though. To read a code that's in front of you, use your phone's camera. The guide on how to scan a QR code explains the options.

Scan a QR code from an image

To upload a QR code to scan, drop a PNG, JPG/JPEG or WebP file onto the checker, or click to choose one. That could be a saved export, a screenshot, an image from an email, or a photo of a printed code. Very large images are scaled down to 1,400 pixels on their longest side for analysis, which keeps checking fast. The reported pixel size still refers to your original image.

If the image won't decode

Some images won't decode, especially very light, heavily stylised or badly damaged codes. "No QR code detected" means Frame's decoder couldn't read a code in that image. It doesn't mean the code is malicious, empty or corrupt.

What does my QR code contain?

When a code decodes, Frame shows the content exactly as stored, shortening it on screen after 320 characters. It also gives the content a type label based on how it starts:

LabelShown when the content is
Website URLAny http or https link without a more specific label
WhatsApp chat, YouTube link, Instagram link, Facebook link, Spotify link, Telegram linkA web link whose hostname belongs to that service
PDF documentA web link whose address ends in .pdf
WiFi networkWiFi login details starting WIFI:
vCard contactA contact card starting BEGIN:VCARD
Calendar eventAn event starting BEGIN:VEVENT or BEGIN:VCALENDAR
EmailA mailto: link
Phone numberA tel: link
SMS messageAn sms: or smsto: link
LocationMap coordinates starting geo:
Crypto paymentA bitcoin: or ethereum: request
Plain textAnything else

A generic Website URL label is completely normal. Most links, such as your own site, a Google Maps link, or a PDF shared from cloud storage without .pdf in its address, are labelled Website URL, and the code works just as well.

Use the content to confirm the details that matter: the domain and path of a link, the network name and password in a WiFi code, or the name and number on a contact card. If something is wrong, the code needs regenerating. The QR code generator makes a fresh one.

Brand labels aren't safety checks

Frame shows labels such as Facebook link, WhatsApp chat, Telegram link, Instagram link, YouTube link or Spotify link only when the hostname of the decoded address matches that service. Facebook subdomains such as m.facebook.com also count. The check respects real hostname boundaries, so lookalikes such as facebook.com.login-help.example or wa.me.promo.example stay Website URL.

A matching label only means the address belongs to that service. It doesn't vouch for the account, the content, where a chat leads, a payment or the safety of the destination, because anyone can create a profile or channel on a real platform. Frame runs no reputation or security lookup, so judge the destination yourself before you share it, sign in or pay.

QR contrast check

A scanner has to tell the dark modules from the light background. Frame measures that separation from your image itself. It builds a brightness histogram of the detected code area, finds the split between the darker and lighter pixels (Otsu's method), and averages the colour of each group. It then reports the contrast ratio between them.

7:1 or moreStrong

Strong dark/light separation by Frame's contrast check.

3:1 to 7:1Borderline

Usable, but stronger separation may scan more reliably, especially in print or dim light.

Under 3:1Low

Darken the code or lighten the background, then test again.

These cut-offs are Frame's own heuristic, not an official QR requirement. In practice:

Edge clearance vs quiet zone

QR codes need a blank margin around them, called the quiet zone. It's generally about four modules wide on every side, and scanners use it to find where the code begins.

Frame's edge clearance check measures something narrower: the distance from the detected code to the nearest edge of the image, in estimated modules. It's geometry only. Frame doesn't look inside that space to see whether it's blank.

A QR code with a blank margin to the image edge
Measured: distance from the code to the image edge. Here the margin is also blank.
The same QR code and margin, with text and a border drawn inside the margin SCAN ME
Not measured: what's inside the margin. Text and a border crowd the quiet zone here.

Both images get the same edge-clearance result, but only the first has a usable quiet zone. So read the result in two steps:

  1. Check Frame's edge-clearance result. About 4 modules or more passes, about 2 to 4 gets a warning, and less than that is an issue.
  2. Look at the image yourself and make sure that space is actually empty, with no text, borders, artwork, photos or other design elements.

When a code is placed on a poster or packaging, the margin often fills up with design. The QR code quiet zone guide explains how much space to leave and how to protect it in a layout.

QR image size and module density

The Size & resolution result combines three different numbers that are easy to mix up:

Pixel size

How many pixels wide the detected code is in your original image. Frame's heuristic treats 600 px or more as enough for print, 250–599 px as fine on screen but tight for print, and anything smaller as too small.

Modules across

The estimated number of squares across the code. Longer content means more modules. A short link can be 25 modules, while long URLs or detailed contact cards can pass 100.

Size at 300 DPI

The pixel size converted to centimetres at 300 dots per inch. A 600 px code covers about 5.1 cm. It describes the file, not the size you should print.

Density is why one print size doesn't fit every code. A simple 25-module code and a dense 100-module code shouldn't be printed at the same tiny size. At 2 cm wide, each module of the dense code is only 0.2 mm, a quarter of the simple code's, and many phones won't resolve it. Shorten the content where you can, or print dense codes larger. The QR code size guide covers minimum print sizes and scanning distance.

The module count is an estimate. On clean exports it's usually exact or very close. On logo codes, resized images, compressed JPEGs and screenshots it can be off by a few modules.

A logo in the middle of a QR code covers modules. QR codes carry error correction, which is redundant data that lets a decoder rebuild some missing parts, so a code can tolerate limited obstruction. How much depends on the error-correction level and on the logo's size and placement. A logo over one of the corner squares breaks a code much sooner than one in the centre.

Frame's generator switches to high (H) error correction automatically whenever you add a logo. The checker then lets you confirm the finished image still decodes and review its diagnostics, although it can't report which error-correction level a code uses. A decode is good evidence, not a guarantee, because a logo code that reads here can still fail on an older phone or at a small print size. The QR code logo size guide explains how to size a logo safely.

Gradient and coloured QR codes

Coloured QR codes work well as long as the dark modules stay clearly darker than the background. Dark navy, deep green or burgundy on white usually give strong separation.

Gradients need more care, because the weakest point is the lightest part of the gradient. A code that fades from a mid blue to a pale cyan can become unreadable, even though its dark end looks fine. Some gradients decode easily and others don't decode at all.

Rather than trusting a palette, test the finished design: upload the exported image, check that it decodes, and look at the contrast result. The contrast is averaged across the whole code, so a Strong result doesn't prove that the gradient's lightest corner is readable. Scan a printed proof as well.

Why a QR code works on screen but fails in print

A screen is backlit and sharp, and paper isn't. Frame analyses your uploaded image, not the printing environment, so these print-side problems are outside what it can measure:

Printed too small
Modules shrink below what a camera can resolve from the scanning distance.
Glare
Gloss lamination or foil reflects light across the code.
Low contrast on paper
Colours print lighter or duller than they look on screen.
Ink spread
On uncoated stock, dark modules bleed into light ones.
Low-resolution source
A small image enlarged for print turns soft.
Cropped or crowded margin
Trimming or layout eats into the quiet zone.
Folds
A fold or crease through the code distorts the pattern.
Curved packaging
Bottles, cups and tubes bend the grid.
Lighting
Dim rooms, shadows and coloured light reduce contrast.
Scanning distance
A code read from across a room must be much larger than one on a flyer.

The fix is always the same: print one proof at final size on the final material, and scan it where it'll be used.

QR code not working? Decoding problem or destination problem

When someone says a QR code "doesn't work", it can mean two very different failures. Separate them first.

QR decoding problem

The phone doesn't recognise a code, or can't read it.

  • No QR in the image, or it's cropped
  • Too much logo coverage
  • Low contrast
  • Printed too small
  • Too dense for its size
  • Damaged, blurred or distorted image
  • Text or artwork crowding the margin
  • Print and material problems such as glare, ink spread or folds
Destination problem

The code scans, but what opens is wrong or doesn't load.

  • The content is wrong: a typo, an old link or the wrong number
  • The website is offline or the page was deleted
  • The file needs a login, or the sharing link expired
  • The account or channel no longer exists

Frame's checker helps with decoding problems and with spotting wrong content. It never opens the destination, so check the decoded link yourself for destination problems. The QR code not working guide goes through each cause in detail.

Screenshot vs original file

The original export is the best file to test and to print. It has the full resolution and clean module edges your generator produced.

Screenshots can change the image through resizing, compression, blur from scaling, extra background around the code and lower effective resolution. That can nudge the module estimate and the size result, and a very small screenshot may not decode at all.

A screenshot is still worth testing when it's the image someone actually intends to use, such as a code pasted into a slide, a social post or a document. Test the file that will really be shown or printed.

Pre-print test workflow

  1. Test the original exported imageStart from the file you'll send to print.
  2. Verify the decoded contentCheck every character that matters.
  3. Review contrastFix warnings on anything going to print.
  4. Review edge clearanceAim for a Pass.
  5. Check that the quiet zone is actually blankLook for text, borders or artwork inside the margin.
  6. Check size and densityMake sure there are enough pixels for the print size, and plan a physical size that suits the module count.
  7. Print one proof at final sizeUse the final paper or material.
  8. Test in real conditionsScan it in the actual lighting, from the actual distance.
  9. Test several phonesInclude different brands and an older model.
  10. Print the full runOnly once the proof scans reliably.

Checking Batch QR codes

The Batch QR Code Generator creates a ZIP of individual PNG files, one per row of your data. The checker tests one image at a time, and there's no automatic ZIP-wide check.

Spot-checking builds confidence, but it doesn't validate every code in the set.

Privacy: what happens to your image

That makes the checker suitable for codes that contain internal links or client details. This covers checking only. If you open a decoded link afterwards, that website's own privacy practices apply.

Troubleshooting

Each case is tagged with where the problem usually lies: the image, the print, the content inside the code, or the destination.

"No QR code detected"

Image

Frame's decoder couldn't read a code. Possible causes are no QR in the image, blur, low contrast, cropping, heavy distortion, too few pixels or a difficult design. Try the original export, a sharper photo or a version with more margin. Nothing was decoded, so there's no destination to judge yet.

A phone scans it but Frame doesn't

Image

Phones refocus and try many camera frames, while Frame reads one still image. Upload a sharper, larger or original version. If only a live camera can read it, the code is marginal and worth improving before print.

Frame scans it but another phone doesn't

ImagePrint

Some cameras and scanner apps are less forgiving. Fix any contrast, edge-clearance or size warnings, try a larger print, and make sure the phone's camera has QR scanning turned on.

The decoded content is wrong

Content

The image is fine, but the data inside it isn't. No design fix changes the content, so regenerate the code with the correct link or details.

Contrast warning

Image

Darken the code colour or lighten the background, avoiding mid-greys and pale brand colours. Re-export and check again. A warning isn't a failure, but print usually lowers contrast further.

Edge-clearance warning

Image

The code sits close to the image edge. Re-export it with a margin, or add blank space around it in your layout, aiming for about 4 modules on every side.

Artwork sits in the margin despite an edge-clearance pass

Image

A pass only measures the distance to the image edge. Frame doesn't look for text or artwork in that space, so move those elements out until the quiet zone is blank.

The image or QR is too small or dense

Image

Re-export at a higher resolution rather than upscaling, because upscaling adds no detail. For a dense code, shorten the content or plan a larger print.

A logo QR is unreliable

Image

Make the logo smaller, keep it centred and away from the corner squares, and use high error correction, which Frame's generator applies automatically with a logo. Then re-test the image and a proof.

The digital image works but the print fails

Print

The checker can't see the print. Check the printed size, glare, ink spread, folds, lighting and scanning distance, then print another proof.

The QR has a brand label. Is it safe?

Destination

The label only means the hostname matches that service. Real platforms host content from anyone, and Frame performs no safety check, so judge the account and content yourself.

A PDF or website doesn't open after scanning

Destination

The QR worked because the phone received the link. The problem is at the destination: the page is offline, the file moved, sharing permissions changed, a login is required, or the link expired. Open the decoded link in a private window to check. If the file stays at the same address, you don't need a new code. If the address changes, a static code needs regenerating (see static vs dynamic QR codes).

Best practices checklist

Questions

QR code checker FAQ

How do I check if a QR code works?+

Upload the image to the checker at the top of this page. If Frame decodes it, confirm the decoded content is exactly right and review the contrast, edge clearance and size results. Then print a proof at final size and scan it with a few different phones.

Can I test a QR code online?+

Yes. The checker runs in your web browser with nothing to install, and the image is processed on your device rather than uploaded to a server.

Can I upload an image to scan a QR code?+

Yes. Drop an image onto the checker or click to choose one. Frame decodes the QR code from the image and shows what it contains. You can also Tab to the upload area and press Enter.

Which image formats does Frame accept?+

The checker is built and tested for PNG, JPG/JPEG and WebP images. Files that aren't images are rejected with a message asking for one of those formats.

Does Frame use my camera?+

No. The checker only reads image files you choose. It isn't a live camera scanner, so to scan a code in front of you, use your phone's camera app.

What does the QR Code Checker test?+

It tests whether the code decodes, what it contains and what type of content it is. It also reports contrast, edge clearance, pixel size, an estimated module count and the approximate size at 300 DPI, summarised in a 0–100 diagnostic score.

Can Frame show what a QR code contains?+

Yes. It shows the decoded content exactly as stored, shortened on screen after 320 characters, with a type label such as Website URL, WiFi network, vCard contact, Email or Plain text.

Can it identify Facebook, WhatsApp or other links?+

Yes, by hostname. Links on facebook.com and its subdomains, fb.com, fb.me, wa.me, api.whatsapp.com, t.me, telegram.me, instagram.com, youtube.com, youtu.be, open.spotify.com and spotify.link get a service label. Lookalike domains are labelled Website URL.

Does a brand label mean the link is safe?+

No. It only means the web address belongs to that service's domain. It says nothing about the account, the content, a payment or whether the destination is safe.

Can Frame check QR contrast?+

Yes. It measures the dark/light contrast ratio of the code area in your image and rates it strong, borderline or low using Frame's own heuristic, which isn't an official QR standard.

Does Frame verify the quiet zone?+

Not fully. It measures the distance between the code and the image edge, reported as edge clearance, but it doesn't check whether that space is blank. You still need to check that no text or artwork sits in the margin.

What is edge clearance?+

It's the estimated distance from the detected QR code to the nearest edge of the image, measured in QR modules. About 4 modules or more passes. Less than that gets a warning or an issue.

Can Frame tell if my QR is too small?+

It flags images whose code has too few pixels for print and shows the approximate size at 300 DPI. It can't know your final print size or scanning distance, so use the size guide and a printed proof for that.

Can I test a QR code with a logo?+

Yes. Upload the finished image to confirm it still decodes and to review its diagnostics. A decode is strong evidence, but not a guarantee for every phone or print size.

Can I test a gradient QR?+

Yes. Many gradient codes decode well, but a light end of a gradient can make a code hard or impossible to read. The contrast result is averaged across the whole code, so still scan a printed proof.

Can I test a screenshot?+

Yes, as long as the code is complete and reasonably sharp in the screenshot. Resizing and compression can affect the results, so test the original export when you have it.

Why does my QR work on one phone but not another?+

Cameras, scanner apps and focus differ between phones. Marginal codes with low contrast, a thin margin, high density or a small print fail first on less capable phones. Fix any warnings and test several devices.

Can Frame detect phishing or malware?+

No. Frame doesn't check for phishing or malware, URL reputation, website ownership or payment recipients. Only open decoded links you recognise and trust.

Does Frame open the decoded link?+

No. The decoded content is shown as text. Frame never visits or fetches the destination, so it can't tell you whether the page is online.

Is my uploaded image sent to a server?+

No. The image is read and decoded in your browser with a QR decoder hosted on Frame's own site. It isn't sent to Frame or to an external scanning service during checking.

Does Frame store scan history?+

No. Results exist only on the page, and they're gone when you reload it.

Can I test a printed QR?+

Indirectly. Take a sharp, straight-on photo of the print and upload it, and Frame will try to decode it. Scanning the print itself with several phones is still the real test.

Can Frame check a whole Batch ZIP automatically?+

No. The checker works on one image at a time. Extract the ZIP and test individual PNGs, either every critical code or a representative sample for large sets.