QR code safety: what a code can hide

A QR code is unreadable to a human, which is exactly what makes it useful to fraudsters. How to scan safely, and what to think about before you print one.

You cannot tell what a QR code does by looking at it

This is the whole problem in one sentence. A link written out can be inspected before you click it. A QR code is an opaque pattern: the only way to find out where it goes is to point a camera at it, by which time your phone may already be loading the page.

Fraud that exploits this has its own name now — "quishing" — and it is effective precisely because a printed code carries an air of officialdom. The commonest form could not be simpler: a sticker with a malicious code placed over the legitimate one on a parking meter, a restaurant table, an EV charger or a posted notice.

Scanning safely

None of this means avoiding QR codes. It means treating a code the way you would treat a link in an unexpected email.

  1. Look at the physical code first. A sticker over printed material, a peeling edge, or a code that does not match the surrounding print quality are all warning signs.
  2. Read the address your phone previews before opening it. Check the domain itself, not the words around it: a convincing brand name in the path means nothing.
  3. Be suspicious of shortened links in a physical code. There is rarely a good reason to hide a destination on a printed sign.
  4. Never enter passwords, card details or one-time codes on a page you reached from a code you did not print yourself. Navigate to the organisation’s site directly instead.
  5. Treat a code that immediately asks you to install an app, grant a permission, or "verify" an account as hostile until proven otherwise.
  6. On a parking meter or charger, prefer the operator’s official app or a typed address over the sticker.

Wi-Fi codes are written-down passwords

A Wi-Fi QR code contains the network name and the password in plain text. Anyone who can photograph it can join the network, and they can do it from across the room or from a photo someone else posted.

That is fine for a guest network that is isolated from everything that matters. It is not fine for the network your till, your NAS or your work laptops sit on. If you are printing a Wi-Fi code for customers, put it on a guest network with client isolation enabled, and change the password on a schedule you actually keep.

Bear in mind that a printed code in a public space is readable by everyone who passes, not only by customers.

Contact cards contain more than you think

A vCard QR code embeds every field you filled in — name, phone number, email, postal address, notes — in plain text, permanently, in an image you may hand out widely. There is no way to revoke it once printed.

Put your business contact details in it, not your home address. And remember that a conference badge photographed by a stranger is a contact card they now keep.

Why this tool has no shortener and no tracking

Many QR generators route your code through their own domain so they can count scans, change the destination later, or show you an upgrade prompt. That means a third party sits between your code and its destination, sees everyone who scans it, and can break every code you have printed by going out of business or changing their terms.

This tool encodes the exact value shown in the payload box, and that is the only thing the code contains. There is no redirect, no shortener, no scan counter and no analytics. The trade-off is real and worth stating: you cannot change the destination after printing, and you will not get scan statistics. In exchange, your codes keep working regardless of what happens to us, and nobody is logging the people who scan them.

Nothing you type reaches a server. The code is generated in your browser, and you can verify that by watching your browser’s network panel while you use the tool.

If you are printing codes for other people

Print the destination in readable text next to the code. It costs a line of space and lets people verify the code before scanning — and it is the single most effective defence against sticker-over-code fraud.

Prefer a domain you control and that people recognise. Use https. Keep the destination stable, because printed codes outlive websites.

Check your codes in place, periodically. If someone has covered one with a sticker, you want to be the one who notices.

Frequently asked questions

Is it dangerous to scan a QR code?
Scanning one does not by itself compromise a modern phone. The risk is what you do next: the page it opens can be a convincing fake asking for credentials, or a prompt to install something. Read the address before opening it, and be sceptical of anything asking for details.
Can a QR code contain a virus?
Not in a meaningful sense. It holds a short string of text. The danger is that the string is a link to a malicious page, or instructions your phone acts on — joining a network, composing a message, adding a contact. The code is the delivery mechanism, not the payload.
Why does this tool not offer a short link?
Because a shortener puts a third party permanently between your code and its destination: they see every scan, and your printed codes stop working if they do. If you want a short address, use a short path on a domain you control.
Can I change where a code points after printing it?
Not with a code from this tool — the destination is encoded in the image itself. If you need that, point the code at a URL on your own domain and change what that URL serves. That keeps control with you rather than with a generator.
Do you count how many times my code is scanned?
No. There is nothing to count with: the code goes straight to your destination, and this tool has no server, no analytics and no record that you ever used it.

What this tool will not do