Event calendar QR code ICS
SmartQRCode editorial · Updated October 2026
Event calendar QR code ICS is a hosted landing that downloads a calendar file. Times are floating calendar times. All-day uses DTEND exclusive all-day. Rescans should hit a stable UID on rescan. This is not a maps pin. If the date cannot slip, a Canva static file is enough.
Event calendar QR code ICS
The Event type is a landing page, not a redirect. A calendar entry is added by downloading an ICS file. There is nothing to 302. The page exists so the guest can read title and time before saving. Times are written floating, with no Z suffix and no TZID. Guessing a zone would move the gig. All-day events use a DATE value. DTEND exclusive all-day means a one-day event on the 1st carries an end on the 2nd so it does not disappear in strict calendars. UID is hashed from the code so a later scan updates the same row.
The form walkthrough is how to make an event QR code. This page is the file. Do not describe this type as opening Maps. D67 is maps-app behaviour for location codes. It does not apply. Where is a text field folded into the ICS. Tickets still belong on a Website URL. Paid options are $1.99, $29, $97, or $197. There is no unpaid tier. A one-off date that cannot move can live in Canva.
Floating times, not a TZID guess
- Create an Event code. Set Event Name and Starts.
- Type the venue wall clock into Starts. Do not convert to UTC in your head. The file will not attach a TZID.
- Add Ends after start, or omit it. Timed events with no end default to one hour in the file so the entry is not a blip. All-day starts (date only) default the exclusive next day.
- Put a human address in Where. Do not paste a maps URL and expect a pin.
- Optional Details and ticket link. Newlines are escaped in the file. Keep details short enough to read.
- Pay, scan, download. Confirm the hour on a calendar that is not already set to a travel zone you forgot about. The unpaid preview is /qr-preview.
- Export SVG or 300 dpi PDF of the symbol. Print at least 2 cm across at about 30 cm. Badges flex. Prefer a posted sheet at the door.
- If the gig slips, edit Starts. Re-scan. The UID should update the existing entry.
The event generator is the tool. Text is a paragraph, not a VEVENT.
Why times are floating instead of a TZID
why times are floating instead of a TZID is honesty. We ask for 7pm. We do not know which IANA zone you meant. Attaching the wrong TZID moves the event for everyone. UTC conversion has the same risk. floating calendar times mean that 7pm in the file is 7pm on the phone's calendar date. Tell guests the city in Where or Details if the audience is flying in.
Line folding in the file is 75 octets, not characters. You do not set that. Emoji in a title is four bytes. The writer handles it. You should still keep titles boring.
What all-day DTEND means
what all-day DTEND means is the exclusive end on a DATE. A gig on 1 August that is all-day must end on 2 August in the file or some calendars show nothing. Timed events are not that rule. A missing timed end becomes one hour. Do not mix an all-day start with a timed end. The writer will take the date part.
A malformed file is not offered. If title or start cannot build a VEVENT, there is no download button with a broken attachment. That is deliberate. Calendars will accept junk and then you cannot delete it cleanly.
Rescans should update the same UID
stable UID on rescan is the point of seeding UID from the short code. A random UID per request would duplicate every scan. If a guest sees two entries, they saved twice from two codes, or an old static ICS sits beside the new one. One hosted Event code, one UID family.
This is still not a maps pin. If you need Maps, use Location. If you need shop hours, use Business. If you need a paragraph of house rules, use Text.
What the guest sees before they save the file
The landing shows title, time, place, and a download. That page is why Event is not a silent file hop. Guests can refuse the calendar. They cannot refuse a 302 they never saw. Tickets still belong on a Website URL if you need a shop.
Line folding is 75 octets. You do not set it. Emoji in a title is four bytes. Keep titles boring anyway. ORGANIZER is not collected. We do not emit a fake mailto.
Export SVG or 300 dpi PDF of the symbol. Print at least 2 cm across at about 30 cm. Lanyards flex. A posted A4 at the door beats a wrinkled badge. Pause cancels the page. Archive keeps the flyer live. A hosted ICS landing lasts as long as we resolve it.
After you export, open the ICS on a second phone that does not already have the event. Confirm the title, the floating start, and that a second scan updates the same UID instead of stacking a duplicate. If the flyer also carries a maps pin, that is a second code or a URL type, not a field on this ICS.
When a static ICS in Canva is enough
when a static ICS in Canva is enough is a date that cannot slip, a print you will not count, and a file you are willing to trap in the modules. Generate a static QR in Canva or host a .ics URL yourself and encode that URL statically. Changing the start then means a new print.
Use the hosted Event type when the door might move, when you want scan totals, or when you want the landing plus a clean ICS. Export a printer file. Keep /qr-preview off the plate. Do not promise Google Maps. Do not promise a ticket.
Questions this raises
Floating calendar times mean the wall clock you typed. A guessed TZID would shift the gig in every attendee calendar.
On a DATE value, DTEND is exclusive. A one-day event on the 1st ends on the 2nd in the file so it does not vanish.
When the date cannot slip and you do not need scan counts. Encode a static file. You cannot edit the start after print.
It should update. UID is seeded from the code so a stable UID on rescan replaces the old row instead of adding a second.
No. It is not a maps pin. Where is a text field in the ICS. Use the Location type if you need a maps app.
Keep going
The tools and playbooks this post refers to, one click away.
Make the code this post is about
$1.99 for 7 days, then a paid plan. Pick a type, brand it, and edit the destination whenever you like, even after it is printed.