How it works
- Add your list. Upload a CSV or Excel file with column names in the first row, or paste one value per line. You see a preview of the first rows straight away. Not sure how to lay it out? Download a sample: product links, contacts or Wi-Fi networks.
- Choose what goes into each code. Encode a column exactly as it is, or build the content from a template such as
https://shop.example.com/p/{{SKU}}. Presets handle Wi-Fi logins, contact cards, emails, text messages and phone numbers, including the fiddly escaping. - Check, then download. Every row is validated, the first 24 codes are previewed, and you download a ZIP of images named after your data, or a PDF laid out for your label sheets.
What people make with it
- Product labels and SKUs Link every product to its page, manual or reorder form. File names come from the SKU column, so artwork teams can drop codes straight into packaging.
- Asset tags and inventory Give each laptop, tool or shelf bin a code that opens its record in your asset system, printed on standard sticky labels.
- Event badges and tickets One code per attendee, carrying a ticket reference or a link to their schedule, with the name printed as a caption.
- Restaurant tables A code per table that opens the menu or ordering page with the table number already filled in:
…/menu?table={{Table}}. - Business cards and vCards Turn a staff list into contact codes that save name, phone, email and company to a phone in one tap.
- Wi-Fi cards Hotels, offices and holiday lets can print a join-the-network card for every room or site. See the bulk Wi-Fi guide.
- Inventory and stock counts Codes on bins and shelves that link to the right spreadsheet row or form speed up counts and reduce typing errors.
- Classrooms and libraries Link worksheets, videos or book records; printing on labels makes it easy to stick codes into books and handouts.
Static codes that never expire
There are two kinds of QR code. A static code stores your link or text inside the pattern itself. A dynamic code stores a short link to someone else’s server, which then redirects the scanner to your real destination.
Dynamic codes let a provider count scans and change the destination later – but they only work while that provider keeps the redirect running. Many “free” QR sites create dynamic codes and then switch them off after a trial period or unless you subscribe, which breaks codes that are already printed on packaging, menus and signs.
Every code made here is static. There is no redirect in the middle, nothing to renew and nothing that can be switched off. If you need the flexibility of a dynamic code, you can have it without a subscription: point your codes at pages on your own website and change those pages (or their redirects) whenever you like.
Printing tips so every code scans
- Size. About 2 cm (0.8 in) square is a sensible minimum for a short link. As a rule of thumb, make the code at least a tenth of the distance it will be scanned from, so a poster read from 2 m needs a code about 20 cm wide.
- Keep content short. Every extra character makes the pattern denser and each square (module) smaller. A short link prints smaller and scans faster than a long one with tracking parameters you don’t need.
- Contrast. Dark code on a light background is the safest choice. Pale colours, busy backgrounds and light-on-dark (inverted) codes fail on some phones; the tool warns you when a colour pair is risky.
- Quiet zone. Leave the blank border (four modules is the standard) and don’t let text, borders or artwork touch the code.
- Error correction. Level M suits most printing. Choose Q or H for labels that will be handled, scuffed or exposed to weather, and L to keep very long content as small as possible.
- Print at 100%. Turn off “fit to page” so label sheets line up, and prefer matte labels: glossy ones can reflect light into the camera.
- Test before the big run. Print one sheet, scan several codes with two or three different phones, and check they open the right thing. It takes two minutes and can save a box of labels.
Your data stays on your device
Spreadsheets often contain things you would rather not hand to a stranger: customer names, internal links, Wi-Fi passwords. This tool never uploads them. Your file is opened by your own browser, the QR codes are drawn by your own computer or phone, and the ZIP or PDF is assembled locally before your browser saves it.
Your settings (not your data) are remembered in your browser so the tool is set up the way you left it next time. The page does load a few open-source components, such as the spreadsheet reader, from a public code library, but nothing you type or upload is sent with those requests. The privacy policy explains the details, including how advertising on this site works.
Frequently asked questions
Is it really free? Are there limits or watermarks?
Yes. There is no account, no daily limit, no watermark and no paid tier. The site is paid for by adverts shown in the article below the tool, never inside it.
Will my QR codes stop working?
No. These are static QR codes: the link or text is stored inside the code itself, not behind a redirect service. They keep working for as long as the destination exists, even if this website disappears.
Are my files uploaded anywhere?
No. Your spreadsheet is read by your own browser, and the codes, ZIP and PDF are created on your device. Nothing you add to the tool is sent to our server or anyone else’s.
How many QR codes can I make at once?
There is no fixed limit. Thousands of codes work well on a normal laptop. Above 5,000 codes the tool shows a warning, because very large batches depend on your device’s memory; splitting a huge job into a few files is the most reliable approach.
Which files can I upload?
CSV and TSV files in any common encoding, Excel workbooks (.xlsx and older .xls) and OpenDocument spreadsheets (.ods). From Google Sheets or Apple Numbers, export or download as CSV or Excel first. You can also paste a list or cells copied from a spreadsheet.
Can I see how many people scanned my codes?
Not from the code itself, because static codes have no tracking server in between. If your codes point to your own website, add campaign parameters such as ?utm_source=qr&utm_medium=label to the link template and your normal website analytics will show the visits.
What size should I print them?
For a short link, about 2 cm (0.8 in) square is a sensible minimum; longer content makes a denser code that needs more space. A useful rule is that the code should be at least one tenth of the scanning distance. The PDF step shows the printed module size and warns when it gets too small.
Can I change where a code points after printing?
Not for a static code, because the destination is printed into it. If you might need to change it later, point the code at a page on a website you control and set up a redirect there.