Calendar Event QR
A calendar event as a QR code, with times written in UTC so they survive travel.
Title
Starts
Ends
Location
How this processes your file
The event is encoded as an iCalendar VEVENT with the title, times and optional location and description, escaped according to the iCalendar rules — backslash first, then commas, semicolons and newlines, since escaping in the wrong order double-escapes everything after it. The decision worth explaining is the timezone: times are written in UTC with a Z suffix rather than as floating local times. A floating time is interpreted in whatever zone the scanner is in, so an event created in London and scanned in New York would land five hours out — and conference badges and event posters are scanned by travellers more than by anyone else.
What the results mean
- VEVENT
- The iCalendar block a calendar app reads to create an event.
- UTC times
- Written with a Z suffix so the event lands at the right moment regardless of where it is scanned.
- Floating time
- What a naive encoder produces. Interpreted in the scanner's own zone, which is wrong for travellers.
- Density
- VEVENT payloads are long. These codes need printing larger than a URL code.
Common problems and fixes
- Nothing happens when I scan it on an iPhone
- iOS often does not handle a raw VEVENT. For anything public, host an .ics file and encode its URL instead.
- The time is wrong for people in other countries
- It should not be — times are written in UTC here. A code built elsewhere with floating local times has exactly this problem.
- The code is too dense to scan
- VEVENT payloads are long. Shorten the description, drop the location, or print the code larger.
Frequently asked questions
Why are the times in UTC?
So the event lands at the right moment wherever it is scanned. A floating local time is interpreted in the scanner's own timezone, which puts an event five hours out for anyone who has travelled — and travellers are much of who scans an event code.
Will this work on every phone?
No. Android calendar apps generally handle a raw VEVENT and iOS frequently does not. For a public event, encode a link to a hosted .ics file instead.
Can I add multiple events?
Not usefully in one code. Each VEVENT makes the payload longer and the code denser, and a code too dense to scan helps nobody.