# Free QR code generator

> Make a QR code without an account. Plain codes never leave your browser. Need one that stops on a date, stops after a number of scans, or can be changed after printing? Sign in with an emailed code. Free.

- **Page** - https://iotready.com/qr

## Two ways to use it

**No account.** Pick what the code holds and download it. A plain code is drawn in your browser, so what you type never reaches us, and the code never expires because there's nothing of ours behind it. You can also make a code that expires on a date or works once. Those are signed, so a screenshot of one is worth nothing.

**A free account.** Sign in with a code we email you. No password. Now a printed code can be changed later, stopped after a number of scans, started and stopped on dates, and counted. A coupon that should end on Friday ends on Friday. If the sale runs on, you move the date and the same poster keeps working.

An account holds up to 500 editable codes and counts up to 100,000 scans a month. Plain fixed codes you can save as many of as you like, within reason.

## What we keep

For a plain code: nothing. For a code that expires: nothing either. The address and the dates are inside the code, signed with our key, and when someone scans it we check the signature and the dates and show them where it leads. For a code that works once without an account: a random ID, until the code expires, because a signature can't tell whether someone already used a code. We don't keep the address, who made it or who scanned it.

For an account: your email, the codes you save, and the dates and limits you set. When someone scans an editable code we count it against the day, the country and whether the phone was an iPhone, an Android or something else. That's the whole record. We don't keep IP addresses, we don't set cookies for people who scan, and we don't keep a log of individual scans. Link-preview bots and mail scanners open every link they see, so we leave them out of the count.

## What that means for the people who scan

Codes that expire, work once or come from an account point at a page on iotready.com, not straight at your address. Scan one and, depending on the code, it either redirects at once or shows where it leads and asks for a click. A code that can only be scanned a number of times always asks, so a mail scanner can't use it up. A code from an account under a day old does too, because that's the cheapest way to run a phishing campaign. If a code is reported we look at it, and we block ones that lead somewhere harmful.

## When to use which

A plain code is right for a menu, a Wi-Fi password or a business card. Use an expiring code for a ticket, a coupon or a guest pass, anything that shouldn't work next month. Use a one-time code for something that should be spent once: a voucher, a download link, a handover. Make an account when you need to change it after it's printed, cap it at a number of scans, or see how often it's used.

None of these stops someone photographing a code and using it first. They make the copy worth less. We wrote up why in [QR codes that can't be copied](https://iotready.com/insights/qr-codes-that-cant-be-copied.md), and how the squares work in [How do QR codes work](https://iotready.com/insights/how-do-qr-codes-work.md).

## Using it from Claude

The same codes are available over MCP, so you can ask Claude to make them. There's a version that needs no account and stores nothing, and a version that signs in and manages the codes in your account. [How to connect](https://iotready.com/docs/platform/qr-mcp.md).

## When it stops being enough

A code that opens a page is the start. If you're labelling stock, assets or batches, and you want each scan to be a record that something is where it should be, that's what [IoTReady Engine](https://iotready.com/docs/platform.md) is for. The form inside your account goes to us and we reply by email. For labelling at volume see our [QR hardware](https://iotready.com/hardware/family/qr) and [labelling](https://iotready.com/hardware/family/labeling).
