Skip to content

Are QR codes safe?

The code itself cannot harm you — it holds text, not software. The risk lives entirely in the destination, and in the fact that a printed square gives you no way to see it in advance. That is a real problem, and a checkable one.

On this page

What a QR code can and cannot do

A QR code is a way of writing text as a pattern. At maximum it holds around 3,000 characters — nowhere near enough for a program, and phones do not execute code from a camera anyway.

So a QR code cannot:

  • Install anything by itself.
  • Access your files, contacts or messages.
  • Do anything at all without you tapping the prompt that follows.

What it can do is take you somewhere. That is where every genuine risk lives.

The real risk: you cannot see the destination

A written link shows you `paypal-secure-login.example.com` before you click. A QR code shows you a square. That opacity is the whole attack surface.

The technique has a name — quishing, QR phishing — and it works for two practical reasons. Printed codes hide their destination completely. And in email, a code is an image, which slips past filters that would flag the same link written as text.

Common versions:

  • Fake parcel notices — "scan to reschedule delivery", leading to a card-details form.
  • Parking and EV charging — stickers over legitimate payment codes on meters and chargers.
  • Workplace emails — "scan to re-authenticate your account", pointing at a convincing login page.
  • Fake WiFi — a code joining a network the attacker controls rather than the café's.

How to check one in two seconds

Both iPhone and Android show the destination in a banner before opening it. Most people tap through without reading it. Reading it is the entire defence.

  1. Read the domain, specifically the part just before the first single slash. In paypal.com.secure-login.xyz/verify the real domain issecure-login.xyz, not PayPal.
  2. Be suspicious of shorteners. A bit.ly or unfamiliar redirect hides the real destination behind another layer.
  3. Never enter credentials from a scan. If a code leads to a login, close it and navigate to the site yourself. This single habit defeats nearly all quishing.
  4. Check the physical code. Feel for a sticker edge. A code that looks newer or differently printed than the sign around it deserves suspicion.

Where scepticism is warranted

  • Unsolicited post and email. A code arriving unasked, especially with urgency attached, is the classic pattern.
  • Anything asking for payment or login. Legitimate organisations rarely need you to authenticate from a scan.
  • Public payment terminals. Parking meters and chargers are the most-targeted physical surfaces because the payment step feels normal.
  • Urgency. "Your account will be closed" is social engineering regardless of how it reaches you.

If you are the one making codes

You can make yours easier to trust:

  • Point at your own domain. When people preview the destination, they should see a name they recognise — not a redirect service.
  • Print the address alongside. It gives cautious people a way to reach you without scanning, and signals you have nothing to hide.
  • Say where it goes. "Scan to see our menu" beats a bare square.
  • Protect physical codes. Laminate or seal them, and check periodically that nobody has stuck something over them.
  • Never send codes to a login page. Even legitimately, it trains people into the habit that quishing depends on.

This is one of the underrated arguments for static codes. A code encoding your real address isinspectable — anyone can decode it and see exactly where it goes. A code that routes through a third-party redirect is opaque by design, which is the same shape as the attack.

Keeping it in proportion

QR codes are not dangerous in the way the occasional headline suggests. They are a display format for text, and billions are scanned harmlessly. The risk is ordinary phishing wearing a new costume, and the defence is the ordinary one: read where you are going before you enter anything.

Common questions

Can a QR code contain a virus?

No. A QR code holds a few thousand characters of text at most — it cannot carry an executable. The risk is entirely in where it sends you. A malicious code takes you to a page that tries to phish your credentials or prompts a download; the code itself is just text.

How can I check a code before opening it?

Both iPhone and Android show a preview of the destination before opening it — the small banner that appears after scanning. Read the domain in that banner rather than tapping straight through. Any scanner app that displays the raw content works too.

What is quishing?

QR phishing: a code that leads to a fake login page, usually for a bank, parcel service or workplace account. It works because a printed square hides the destination entirely, and because emails containing an image get past filters that would catch a text link.

Are stickers over existing codes common?

Common enough to check for. Parking meters, EV chargers and restaurant tables have all been targeted by placing a sticker over the legitimate code. Feel for a raised edge and look for a code that does not match the surrounding print quality.

Is a code I generate myself safe for others to scan?

It is exactly as trustworthy as its destination. A static code encoding your own address is transparent — anyone can decode it and see where it goes. Codes that route through a redirect are opaque by design, which is why some people distrust them regardless of who made them.

Make one that never expires

Free, no account, and generated entirely in your browser. Your destination goes straight into the pattern.

Open the generator

Keep reading

Or make a code