Developer QR codes

QR code generator

Web address
Version 2 · 33×33 · 20/26 bytes
Error correction
Higher levels survive more damage and make the code denser. M is the usual choice; use H only if the code will be printed small or partly covered.
Local · the data is in the code, not on a server
https://tooltiki.com

A QR code carries its data inside the pattern itself, so nothing sits between the scan and the result. This one encodes ten payload types, from a plain link to Wi-Fi credentials, a vCard or a calendar event. At error-correction level H a code still reads with 30% of it damaged.

How to make a QR code

1 Pick the payload type: link, text, Wi-Fi, phone, SMS, WhatsApp, email, contact card, location or calendar event.
2 Fill in the fields for that type. The code redraws as you type and the escaping is handled for you.
3 Raise the error correction if the code will be printed small, creased, or covered by a logo.
4 Download it as PNG for screens or SVG for print, where it stays sharp at any size.

Free QR services usually give you a short redirect link rather than your own data, which lets them count scans — and lets the code stop working when they change their pricing. A code with the destination inside it is larger and denser, and that is the trade: a longer link makes a busier code. Shorten the URL before generating if density matters, and check that the shortener is one you trust to still exist in five years.

What each type actually encodes

The picker is not cosmetic. Each type writes a different string into the code, and the scanning phone acts on that string rather than on anything a generator claims about it. A link is the URL and nothing else. Wi-Fi is a WIFI: record naming the security type, the SSID and the password, read straight from the camera by iOS since version 11 and Android since 10; the semicolons and backslashes in your password are escaped for you, which is where hand-written Wi-Fi strings almost always break. A phone number becomes a tel: URI and an SMS becomes SMSTO:number:message, which is the one SMS form phones handle consistently. WhatsApp becomes a wa.me link, which is why it wants the country code with no plus and no leading zero. Email writes a mailto: with the subject and body percent-encoded, so a subject containing a space or an ampersand survives instead of truncating the rest.

The three structured types are worth knowing individually. A contact is a vCard 3.0 rather than 4.0, because both iOS and Android parse 3.0 reliably from a camera and 4.0 support is patchy; it carries the name twice because the format requires a structured name and a display name. A location is a bare geo: pair in decimal degrees, so it opens in whichever maps app the phone already uses rather than pinning you to one vendor. An event is a VEVENT whose timestamps take the form YYYYMMDDTHHMMSSZ with no separators, where the trailing Z means UTC — leave it off and the scanning phone reads the time as local, which is what you want for an all-day event and misleading for anything else.

What L, M, Q and H are

Every QR code carries a copy of its own data in a form that survives damage. That is the error-correction level, and the four settings say how much of the code can be unreadable before a scanner gives up: L about 7 per cent, M 15, Q 25, H 30. The redundancy is not free: it is stored in the code itself, so raising the level at a fixed data length adds modules, and the pattern gets denser. Going from L to H on the same URL can push a code up several versions, which means smaller squares at the same printed size, which is its own kind of unreadable.

Which one to pick

M is the sensible default and what most generators use: it survives a scuff or a thumbprint and stays reasonably open. Use L when the code is on a screen or a clean flat print that nothing will touch, and you want the loosest possible pattern. A long URL at L is much easier to scan than the same URL at H. Use Q or H when the code will live in the physical world and take damage: a label that creases, a sticker on a curved bottle, a menu that gets wiped down, signage that will fade. H is also the level to use when you are putting a logo in the middle, because that logo is damage. You are deliberately covering modules, and only the redundancy makes it still readable. Keep the covered area under roughly the level you chose and test the finished code with a real phone before printing a thousand of them.

What people use it for

  • Wi-Fi details guests can join without typing the password
  • A contact card that scans straight into a phone
  • A WhatsApp chat that opens with a message ready
  • An email draft with the subject and body filled in
  • A phone number people scan rather than type
  • A text message pre-addressed to a keyword shortcode
  • Coordinates that open in whichever maps app the phone uses
  • An event people scan to add to their calendar
  • An app download link on a poster or a flyer

Questions

No. The data is in the pattern, so there is nothing to expire and nobody to keep paying.

ISO/IEC 18004, QR Code bar code symbology specification
Was this tool any good?
Internal signal only · I use it to find the tools worth rebuilding