Free Event Check-In QR Code Generator

Paste your guest list to issue a unique code for every guest, print the sheet, then use the door check to admit each arrival once — and only once.

Your guest list never leaves this page. Both tools below run as JavaScript on your own device — no account, no upload, no server copy of who you invited. Load the page once and it keeps working offline.

Step 1 — Issue a code for every guest

Paste your guest list and each name gets its own random ticket code. Open the printable sheet to cut up and hand out, and download the CSV — that CSV is the only thing linking a code back to a name, so keep it.

Make check-in QR codes for your guest list

Paste one guest per line. Each gets a unique, random ticket code. Everything happens in your browser.

Step 2 — Check them in at the door

Load the CSV you downloaded, then scan or type each arriving code. Every code is admitted once. Scan it a second time and you get already used instead of a green light.

Check guests in at the door

Load the guest-list CSV, then scan or type each ticket code. Duplicates and codes that are not on the list are flagged. Everything stays in your browser.

How the check actually works

It helps to be clear about what a QR code can and cannot do, because a lot of event advice gets this backwards. A QR code is not a lock. It is a way of writing text down so a camera can read it. Whatever is encoded in a guest's code can be read by anyone who can see the code, and a photograph of it reproduces the data perfectly. No property of the image can stop a ticket being copied.

So the copy has to be defeated somewhere else, and there are only two places to do it:

  • Change the code faster than it can be shared. This is what large ticketing platforms do — the barcode in the app refreshes continuously, so a screenshot is stale almost immediately. It needs a live server, a signed payload and an app to display it, which is why those tickets will not open as a PDF.
  • Redeem each code once. The code can be copied as much as anyone likes; the first person through the door uses it up, and every later presentation of it is a duplicate. No server, no app, no rotation — just a door that remembers.

The second one is available to anybody running a 40-person workshop or a 300-person conference, and it is what this page implements. The full argument, and why a screenshot of a concert ticket behaves differently from a screenshot of your workshop ticket, is in can someone screenshot your ticket QR code?

The three answers at the door

Verdict What it means What to do
Admit On the list and not used yet. Let them in.
Already used This exact code has been through. Either a copy, or the same guest scanned twice. Check the name against ID or the invitation. Mis-scans happen, so "Undo last admission" is there.
Not on the list The code is not in your CSV at all — a forgery, a code from a different event, or the wrong CSV loaded. Confirm you loaded the right list, then handle it as a walk-up.

Details worth knowing

  • Codes are random, not derived. There is no sequence to guess: knowing one guest's code tells you nothing about any other. The flip side is that the CSV is the only mapping back to a name, so losing it loses the link.
  • The alphabet skips 0/O and 1/I. Codes get read aloud and typed in from printouts, and those are the four characters that get confused.
  • Comparison ignores case, spaces and punctuation. TKT-ABC234567, tkt abc234567 and TKTABC234567 are the same ticket, so a scanner that trims or re-cases its output cannot cause a false rejection.
  • Only alphanumeric characters are encoded, which keeps every code inside QR alphanumeric mode and therefore inside a small, fast-scanning symbol. The capacity calculator shows why that matters as payloads grow.
  • Limits: up to 500 codes per generated sheet, and up to 5,000 rows in the door check, so several sheets can be merged into one list for the night.
  • A duplicate code in your CSV is flagged on load. If two rows share a code, one scan admits both guests — the loader warns you rather than letting you find out at the door.

When this is the right tool

  • A free or invite-only event. Workshops, open days, private views, community meetups, school events. There is no money to protect, but you do need to know who came and to stop one invitation admitting six people.
  • A conference with sessions that have caps. Issue a code per attendee per session and the door check becomes the cap: once the room's list is used up, it is used up.
  • An event with no reliable internet at the venue. Church halls, farm weddings, basements. Everything here works offline once the page has loaded, which is more than can be said for most ticketing apps.
  • Anywhere a guest list should not leave your laptop. Patient groups, support organisations, HR events, anything where the attendee list is itself the sensitive thing.

When it is the wrong tool: paid tickets that will be resold, or anything where a copied ticket means lost revenue rather than an extra body in the room. That needs rotating codes and a live server — see static versus dynamic QR codes for the distinction, and use a ticketing platform.

Related guides and tools

Frequently Asked Questions

Can someone screenshot a check-in code and get in twice?

They can copy the code — a QR code is just encoded data, so a screenshot reproduces it perfectly and nothing about the image can prevent that. What stops the copy working is the door check on this page: the first scan of a code is admitted and every later scan of the same code is flagged as already used. The copy is only worth something if nobody is checking.

Is my guest list uploaded anywhere?

No. The generator, the printable sheet and the door check all run as JavaScript inside this page on your own device. A guest list is personal data — names, and often an implied relationship to your organisation — so it should not pass through anyone else’s server to solve a problem that does not need a server. You can load this page, go offline, and it still works.

What is actually encoded in each guest’s QR code?

A single random ticket code such as TKT-ABC234567 — nothing else. No name, no email, no event details. That matters twice over: a guest who shows their code to a stranger has leaked nothing personal, and the code stays short enough to encode in QR alphanumeric mode, which keeps every symbol small and quick to scan.

Why do I have to keep the CSV?

Because the codes are random, the CSV is the only thing that links a code back to a name. There is no pattern in the code to decode and no copy of the mapping anywhere else. Download the CSV when you generate the sheet, and load that same CSV into the door check on the night.

Can I run the door check on a phone or tablet?

Yes. Load this page on the device at the door, paste the CSV once, and the code field stays focused between scans. A Bluetooth barcode scanner paired to the device also works, since most send an Enter keystroke after the code, which submits the check automatically.

What happens if I scan the wrong code by mistake?

Use "Undo last admission". It checks that guest back out and lets the code be scanned again, so a mis-scan at a busy door does not lock out the person it belongs to. The scan log keeps the correction visible so you can see what happened.

How many guests can I issue codes for?

The generator issues up to 500 codes at a time, which is a practical ceiling for one printable sheet; split a larger list and run it twice. The door check reads up to 5,000 rows, so you can merge several sheets into one CSV for the night itself.

Do these codes expire, or do I need a subscription?

Neither. They are static codes with no redirect service behind them, so there is nothing to expire, nothing to renew and no per-scan fee. The trade-off is the one above: a static code can be copied, which is exactly why the door check exists. Rotating codes that change every few seconds need a live server and an app, which is how large ticketing platforms do it.

Can I use my own ticket codes instead?

Yes. The door check accepts any CSV with a ticket_code column, so codes from your own ticketing system work as long as you can export them. Comparison ignores case, spaces and punctuation, so TKT-ABC123, tkt abc123 and TKTABC123 all match the same ticket.

Scan the Door Queue with Your Phone

This page makes and reconciles the codes; reading 300 of them at a door is a camera job. The Scan & Generate app scans ticket QR codes fast, keeps a timestamped history of every scan, and exports it so you can match it against the attendance CSV.