Create

QR code security

A QR code is not dangerous in itself — it is just text written in squares. What is dangerous is that you cannot see that text in advance. This page explains how to look at it before you tap.

Fraud through QR codes

Known as quishing — phishing via a QR code. The principle is old, it has only moved from email to paper: the code leads to a page that looks like a bank, a courier or a parking meter, and asks for your login details or card number.

It works better than email phishing for two reasons. First, you cannot see the address in advance. Second, a code on a physical object feels trustworthy: what is stuck on the machine surely belongs to the machine.

Where it happens most

The simplest attack is a sticker. It needs no technical skill — print your own code and stick it over the original. With outdoor machines it is worth running a finger over the code to check whether something is underneath.

How to spot a fraudulent code

  1. Check whether it has been stuck over. Sticker edges, different paper, different colour, uneven surface.
  2. Check that it fits its surroundings. A well-made machine with a crooked office-printed code is suspicious.
  3. Read the address before you tap. Most phones show it. If yours does not, use a reader that does.
  4. Never enter login details. Not even into a page that looks right. Log into your bank through its own app, not a link from a code.
Our reader never opens a link on its own. It shows the full address, highlights the domain and warns about known tricks. The decision stays with you — and that is the whole difference from a camera that immediately offers to open it.

What to look at in an address

The only part that matters is the domain — what comes before the first slash. An attacker can write the rest however they like.

Look-alike characters

A domain can use letters from another alphabet that look identical. Cyrillic а is indistinguishable from Latin a but leads elsewhere. This is a homograph attack.

Browsers often show such a domain starting with xn--. If you see that on an address that should be an ordinary company, something is wrong.

A name before the @ sign

The address https://bank.com@thief.com/login leads to thief.com, not the bank. Everything before the @ is discarded. It is an old trick that still works because people read addresses from the left.

Shorteners

A shortened link hides the real destination until you open it. On a code in a public place, a shortener is reason for caution — an honest business has no reason to hide where it leads.

Payment codes

With a QR payment your phone does not move money by itself — it opens the banking app with the details filled in. Read those details before you confirm.

A fake invoice is the most expensive variant. The letter looks like it is from a real supplier, the amount matches, only the account number is different. For new suppliers and unusually large amounts, verify the account by another route — a phone number you already know, not the one on the letter.

Wi-Fi codes

A Wi-Fi code joins a network without typing the password. Convenient in a café, risky with a code of unknown origin: whoever runs the network can see where you connect and may try to divert your traffic.

I scanned something odd

Scanning a code will not harm you by itself. Harm comes from what you do next.

If you only opened a page:

If you entered login details:

If you paid:

For businesses: protect your codes

With static codes, the content has no way out either. When you create a payment code here, the account number never reaches our server — it is computed in your browser. You can verify that in your developer tools, Network tab.

What next

For how to make codes that work, see the QR code guide.

Last updated 1 September 2026.