Event QR Code Generator

Get your event into their calendar.

Enter a title and a start time below. Scanning offers to add the event to the phone's calendar — which is the difference between someone intending to come and someone being reminded on the day.

Customize

Type
Encodes a website URL. Opens in the phone's browser when scanned. Encodes plain text. Displays as-is when scanned — no link, no app needed. Encodes a contact card. Phones can save it directly as a new contact. Encodes Wi-Fi credentials. Phones can join the network directly by scanning — no typing a password. Encodes an email address. Opens a pre-filled draft in the phone's mail app when scanned. Encodes a phone number. Opens the phone's dialer, pre-filled, when scanned. Encodes a text message, pre-addressed. The message itself may not always pre-fill depending on the recipient's phone — this varies by device. Opens a WhatsApp chat with the number pre-filled, and the message too if you add one. Requires WhatsApp installed (or web.whatsapp.com). Encodes a map coordinate. Opens the phone's default maps app, centered on that point, when scanned. Encodes a calendar event. Phones can add it directly to their calendar app when scanned.
Embeds your logo in the QR code's center. Every code is generated at error correction level H, the highest, which is what makes a logo possible at all — but a logo is still deliberate damage, so keep it at or below 15% of the code's area and test before printing.
Quick color templates

Pick a preset to fill in the dot and background colors below, or skip this and choose your own.

Light backgrounds
Dark backgrounds

Light dots read fine on dark backgrounds on screen, but most scanners are tuned for dark-on-light -- test before printing at volume. Scan reliability tips.

Dot color
Background
Shape
Fits the whole code inside a circle — the pattern shrinks slightly to stay inside it, so it may be a little harder to scan from a distance.

Preview

Generated QR code — press and hold to save or share
Log in to save QR codes to your account. Sign up free to get 2 dynamic QR codes you can edit after printing.

Generated in your browser — nothing is uploaded or saved.

Read this before you print: how time zones work

This is the one behaviour worth understanding properly, because it is invisible until it bites.

The times you enter are written into the code as local wall-clock times with no time zone attached. A scanning phone interprets them in its own time zone. So an event you set for 7pm shows as 7pm to a phone in Berlin and 7pm to a phone in Denver — not the converted equivalent.

For a physical event this is exactly right, and it is why the format works this way. Everyone scanning your poster is standing in the same time zone as the venue, so "7pm" means the same thing to all of them, regardless of where their phone was last set.

For a remote or international event it is wrong. Someone in another country will get an entry at the wrong absolute moment and will miss it. For those, link to an event page that states the time zone explicitly instead of using this type.

Start and end times

A start date and time is all you need. Leave the end blank and the event defaults to lasting one hour, which is right often enough to be a sensible default and easy to override when it is not.

The end must be after the start. If it is not, the generator shows an error and blocks downloading and saving until it is fixed — an event that ends before it begins is not valid, and calendar apps handle that in several different broken ways rather than one predictable one, so it is refused outright rather than shipped.

You can also leave the dates blank entirely while you work: the preview uses a sample event, so you can style the code before the date is confirmed and fill it in later.

Keep the description to one line

The description is encoded in full inside the pattern, so a paragraph makes the code substantially denser and harder to scan from a poster at walking pace. Use a line, not a brief.

If there is more to say — a schedule, a lineup, parking, accessibility, ticket terms — put a URL in the description and let people follow it. The calendar entry then carries a tappable link into the event page, which is more useful than a wall of text nobody reads in a calendar app anyway.

The location field is worth filling in properly, though. Most calendar apps make it tappable straight through to maps, which quietly solves the "where is it again?" problem on the day.

Where it earns its place

Posters and flyers for a one-off event, conference session signage, wedding invitations and save-the-dates, class and workshop schedules, gallery openings, fixture lists, term dates on a school newsletter.

Its value scales with how far away the event is. For something tonight, a poster is enough. For something in six weeks, the entire problem is that people intend to come and then forget, and a calendar entry with a reminder is the only intervention that actually addresses it.

Conference programmes are the strongest case of all — one code per session, on the printed schedule, and attendees build their own day without typing anything.

Frequently asked questions

Does it work on iPhone and Android?

Yes. Both recognise the standard calendar format this produces and offer to add the event — Android typically opens the calendar app pre-filled, iOS usually shows an event preview to confirm first.

Can I make it a recurring event?

Not from here — this produces a single dated event. For a weekly class or a fixture list, either print one code per date, or link to a page with a subscribable calendar feed, which handles changes as well as repeats.

What if the event date changes after printing?

The date is inside the printed pattern, so every code already out there is wrong and cannot be corrected. If a date might move, point a dynamic code at an event page instead — you update the page and every printed poster is right again.

Does adding it to a calendar tell me who is coming?

No. The entry is created entirely on the person's own device and nothing is reported back — this type never contacts a server. If you need attendance numbers, use a dynamic link to a registration page and read the scan analytics.

Can I include an all-day event?

Set the start at the beginning of the day and the end at the end of it. Most calendar apps will show that as spanning the day, though whether they label it as a true all-day event varies between them.