UltKit

How to Make a QR Code That Scans Every Time, Free and Static

To make a QR code, pick what the scan should do (open a link, join Wi-Fi, save a contact), encode it as a static code with no expiry, export SVG for print or a 1000 px PNG for screens, and scan it with two different phones before you print. Size, contrast and the white border decide whether it works more than the generator does.

Jonas WeberJonas WeberWeb performance editor
Updated 11 min read
Black-and-white photo of an open hand holding out a smartphone that shows a QR code on a ticket-style screen, with a blurred tiled floor behind
Answer

What is the fastest way to make a QR code that keeps working?

Encode the link or details directly as a static code, keep the content short, print it at least 2 × 2 cm (or one tenth of the scanning distance) with a 4-module white border, dark code on a light background, and test it on an iPhone and an Android phone before printing.

What a QR code actually holds

A QR code is a two-dimensional barcode that stores a short piece of text, nothing more. Denso Wave, a Toyota group company, designed it in 1994 to track car parts on assembly lines, and it became the international standard ISO/IEC 18004 in 2000. The three large squares in the corners tell the scanner where the code is and which way up it sits; the small squares, called modules, carry the data. A link, a Wi-Fi login and a contact card are all just text in a particular format, and the phone decides what to do with it once decoded.

Codes come in 40 sizes called versions, from 21 × 21 modules (version 1) to 177 × 177 modules (version 40). The largest version holds 7,089 digits, 4,296 alphanumeric characters or 2,953 bytes. That 4,296 figure only applies to the restricted alphanumeric set: digits, capital letters, the space and eight symbols. A normal lowercase URL uses byte mode, so its real ceiling is lower, and every extra character pushes the code to a denser version with smaller modules.

Every code also carries Reed–Solomon error correction, which lets a scanner rebuild the message when part of the pattern is dirty, scratched or covered. The four levels recover roughly 7% (L), 15% (M), 25% (Q) and 30% (H) of the code. Higher levels cost space, because the recovery data is stored alongside your content. In practice the content length and the correction level together set how dense the pattern is, and density is what decides whether an old phone can read it from across a room or only from a few centimeters away.

How to format each kind of content

Phones recognize a handful of text formats and turn them into actions. A link starting with https:// opens the browser. A line starting with WIFI: offers to join a network, tel: offers a call, mailto: opens a new email and SMSTO: starts a text message. A contact goes in as a vCard (BEGIN:VCARD) or the shorter MeCard (MECARD:N:Weber,Jonas;TEL:+4930…;;), and a calendar entry uses the iCalendar BEGIN:VEVENT block. For app downloads, encode one web link that sends iPhones to the App Store and Android phones to Google Play rather than printing two codes. In India, a UPI payment code is a upi://pay?pa=name@bank&pn=Name link that any UPI app opens with the payee filled in.

You do not have to type these strings by hand. The free QR code generator builds them from form fields: choose the QR code type, fill in Link, Network name or Phone number, and press Generate. Knowing the raw format still helps when a code misbehaves, when you build a spreadsheet for bulk codes, or when a scanner app shows plain text instead of a Join button. The Wi-Fi string below is the one most people get wrong: the security type comes first, special characters such as a semicolon in the password need a backslash before them, and the line ends with two semicolons.

What the decoded text looks like for each content type
ContentText inside the codeWhat the phone offers
Website linkhttps://example.com/menuOpen in browser
Wi-Fi networkWIFI:T:WPA;S:CafeGuest;P:espresso42;;Join network
Contact (MeCard)MECARD:N:Weber,Jonas;TEL:+4930123456;;Save contact
Emailmailto:[email protected]?subject=OrderNew email
SMSSMSTO:+15551234567:Table 12 readyNew message
Calendar eventBEGIN:VEVENT … END:VEVENTAdd to calendar
Plain textAny text, up to about 300 characters for printShow text
Wi-Fi QR code format (replace name and password)
WIFI:T:WPA;S:name;P:pass;;

Static versus dynamic codes

A static code stores your content directly in the pattern. Nothing sits between the scan and the destination, so it cannot expire, cannot be switched off by a third party and costs nothing to keep. A dynamic code stores a short redirect link instead, such as a vendor's domain plus a few characters, and the vendor's server forwards each scan to whatever destination you set in your account. That is the entire trick. The editable part is the redirect, not the code, and the redirect only lives as long as the service and your account do.

This is why many free generators that ask you to sign up so you can "edit later" are really selling that redirect. When the trial ends or the subscription lapses, the redirect stops and every printed code points to an error page or an upgrade screen. You can get the same flexibility without a vendor: encode a link on a domain you own, such as yoursite.com/menu, and change what that page shows or where it redirects. The dynamic QR code guide walks through setting that up with a 302 redirect.

Static

Content in the pattern

The link or details are written into the code itself.

  • Never expires, no account
  • Works offline for Wi-Fi, contacts and text
  • Changing the target means reprinting
Best for: Wi-Fi signs, business cards, packaging, anything printed in volume.
Dynamic

Short redirect link

The code holds a short URL that a server forwards.

  • Destination can change after printing
  • Scan counts come from the redirect logs
  • Stops working if the redirect service does
Best for: Campaigns where the landing page will change, run from your own domain.
A hand holding a smartphone that shows a black-and-white QR code on its screen, seen through a round cutout in a dark background
Photo: Unsplash

Size, distance and the quiet zone

The practical minimum for a printed code read at arm's length is about 2 × 2 cm (0.8 × 0.8 in), and only for short content; a dense code with a long link needs 3 cm or more. For anything read from further away, use the 10:1 rule: the code should be at least one tenth as wide as the scanning distance. A poster read from 2 m needs a 20 cm code, a window sign read from the pavement at 3 m needs 30 cm. Measure the code itself, not the artwork around it.

Around the pattern sits the quiet zone, a blank margin the standard sets at 4 modules on every side. Designers trim it to tighten a layout, and scanners then fail to find the edge, especially when the code sits on a busy photo. Keep Quiet zone at 4 and treat that white border as part of the code. Contrast matters just as much: dark modules on a light background, ideally black on white. Colored codes scan fine when the code color is clearly darker than the background, but gradients, patterned backgrounds and pale colors cut the margin.

Inverted codes, light modules on a dark background, look good on dark packaging and fail on a surprising number of scanners, including older phones and many point-of-sale readers. Never print one without testing it on the oldest device you can find. The same caution applies to logos placed over the center: set Error correction to Max (30%), keep the logo below about a fifth of the code's width, and remember that the logo uses up the recovery margin that would otherwise cover scratches and glare.

Pick a file format, then test on real phones

For print, export SVG. It is a vector format, so the code stays sharp at any size, and a printer can scale it from a business card to a banner without blurry module edges. PDF and EPS are vector too and suit designers working in InDesign or Illustrator. For screens, slides and emails, a PNG at 1000 px or more is plenty; set Image size higher for large displays. Never enlarge a small PNG or a screenshot of a code, because the resampled edges turn soft. If all you have is a PNG of a code or logo, converting PNG to SVG explains when tracing works. The SVG QR code generator opens with vector output selected.

Then test, on more than one phone. The iPhone camera has read QR codes natively since iOS 11 in 2017, and current Android phones read them in the stock camera or through Google Lens. Older Android models, budget phones and dedicated barcode scanners at shop counters are less forgiving, and they are exactly who will scan your menu. Test at the real size and distance, on the real material, under the real light. A proof print taped to the actual wall tells you more than a screen preview.

iPhone

  1. 01Open the Camera app and point it at the code; no app is needed.
  2. 02Tap the yellow banner and check the link or action before it opens.
  3. 03Repeat from your intended distance, not just up close.

Android

  1. 01Point the stock camera at the code, or open Google Lens.
  2. 02Tap the suggested link or action that appears over the code.
  3. 03Try a second, older Android phone if you can borrow one.

Scanners and print

  1. 01Print a proof on the final paper or material at full size.
  2. 02Scan it under the actual lighting, including glare from lamps.
  3. 03For counters, try the shop's own barcode scanner as well.

The mistakes that break printed codes

Most dead QR codes are not damaged codes. They are codes that were never going to scan at that size or on that surface, or codes that point to a link that no longer exists. The good news is that every one of these problems can be caught in testing before the print run, which costs a few minutes instead of a reprint. The list below covers the failures that show up most often on menus, flyers and product labels, roughly in order of how often they happen.

If a code already in circulation stopped working, start with the destination. Open the encoded link on a computer: if the page is gone, the domain lapsed or a free trial expired, the pattern is fine and the fix is a new code or a restored page. If the link works but scanning fails, the problem is physical, and size, contrast or the quiet zone is almost always the cause. Hold a phone at different distances; if it reads up close but not from where people stand, the code is simply too small.

  • The link is too long

    Tracking parameters and long paths push the code to a dense version with tiny modules. Remove parameters you do not need, or encode a short page on your own domain.

  • The code is printed too small

    Keep at least 2 × 2 cm for close reading and apply the 10:1 distance rule for anything on a wall or window.

  • Low contrast or a gradient background

    Use a dark code color on a plain light background; gradients and photos behind the code confuse the finder patterns.

  • A shortened link that expired

    Free link shorteners and trial dynamic codes can stop redirecting. Encode a link you control, or the final destination directly.

  • Curved or glossy surfaces

    Bottles, cans and laminated cards distort or reflect the pattern. Print larger, use a matte finish, and keep the code on the flattest part of the surface.

  • The quiet zone was trimmed

    Restore a blank border of 4 modules on every side, even when the layout feels tight.

What a QR code can and cannot know about you

A static QR code is printed ink. It cannot record who scanned it, when or where, and it cannot run code on a phone or install anything. Scanning only decodes the text; the phone then shows what it found and asks before opening a link, dialing a number or joining a network. So the code itself knows nothing about you. What happens next depends entirely on the destination, exactly as if you had typed the address into the browser yourself, and the same judgment applies.

Tracking enters through the link. A dynamic code's redirect server logs each request, which typically includes the time, IP address (and with it an approximate location), device type and browser. Tracking parameters in the URL tell the website which poster or flyer the visit came from. That is ordinary web analytics, and as a code owner it is often what you want. As a scanner, read the preview before tapping: the domain tells you who will see the visit.

The real risk is substitution. Scammers paste their own code stickers over legitimate ones on parking meters and restaurant tables, sending people to fake payment pages, and the US Federal Trade Commission has warned consumers about it. If you put codes in public places, check them now and then and print the destination domain under the code. For Wi-Fi codes, remember the password is stored as plain text, so use a guest network; the Wi-Fi QR code generator builds that string for you.

Checklist for menus, posters, cards and packaging

Each surface fails in its own way. A menu card gets wet and wiped every evening, a poster is read from across a room or a platform, a business card is tiny and often glossy, and packaging curves around a bottle and then sits on a shelf for years after the campaign that printed it is over. The columns below collect the checks worth making for each surface before you sign off the print run, so the code still works after the first week of real use.

Menus and table cards

  • At least 3 × 3 cm at table distance
  • Link to a page you can update
  • Matte card stock and a line saying what the code opens

Posters and signs

  • Width at least one tenth of the reading distance
  • Eye height, away from glare
  • Error correction High or Max outdoors, domain printed below

Business cards and packaging

  • No smaller than 2 × 2 cm, vector file to the printer
  • Flat panel, never the curve or gloss lamination
  • A link that outlives the product, proof-scanned on the final material

Key takeaways

  • A QR code only holds short text; links, Wi-Fi logins and contacts are formats the phone recognizes.
  • Static codes never expire. A dynamic code is a redirect, and you can run your own on a domain you control.
  • Print at least 2 × 2 cm, follow the 10:1 distance rule and keep a 4-module white border.
  • Use SVG, PDF or EPS for print and a PNG of 1000 px or more for screens.
  • Test on an iPhone, an Android phone and an older scanner at the real size, distance and light.

Frequently asked questions

How long can the content of a QR code be?

The largest version holds up to 4,296 alphanumeric characters or 2,953 bytes at the lowest error correction. For printed codes, keep links under about 80 characters and plain text under about 300, so the pattern stays coarse enough for any phone.

Does a static QR code ever stop working?

The code itself never stops working, because the content is part of the pattern. It only fails when the destination changes, such as a deleted web page, a changed Wi-Fi password or a link shortener that shut down.

Can I make a QR code that opens an app?

Encode a web link to the app's store page or to a page that detects the device and sends iPhones to the App Store and Android phones to Google Play. One code then works for both.

Why does my QR code work on screen but not on paper?

The printed version is usually smaller, glossier or lower in contrast than the screen preview, or the white border was trimmed in the layout. Print a proof at final size and scan it under the real lighting.

Is it safe to scan QR codes in public places?

Scanning itself is harmless, since the phone only reads text. Check the domain in the preview before opening it, and be wary of stickers placed over existing codes on parking meters or payment signs.

Can I change the color of a QR code?

Yes, as long as the code stays clearly darker than its background. Avoid pale colors, gradients and inverted light-on-dark codes unless you have tested them on several phones.

Keep reading