# iCal Event QR

> Source: https://docs.barcoder.ai/docs/standards/ical-event-qr
> research date 2026-06-03 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [RFC 5545 — Internet Calendaring and Scheduling Core Object Specification (iCalendar)](https://datatracker.ietf.org/doc/html/rfc5545)
- [Barcode Contents — ZXing Wiki](https://github.com/zxing/zxing/wiki/Barcode-Contents)

## Overview

**iCal Event QR** is the practice of encoding an **iCalendar calendar event** inside a standard [QR Code](https://docs.barcoder.ai/docs/standards/qr-code) symbol so that scanning the code lets a phone create a calendar entry — title, start, end and location — in one tap. The payload is an iCalendar object containing a `VEVENT` component, delimited by `BEGIN:VEVENT` and `END:VEVENT` <sup>[1][1]</sup>.

iCalendar itself is the IETF standard for calendaring data, defined by **RFC 5545** (*"Internet Calendaring and Scheduling Core Object Specification"*), published in **September 2009**, which obsoletes the earlier RFC 2445 <sup>[3][3]</sup> <sup>[4][4]</sup>. The QR carrier is a convention documented by ZXing, not part of the RFC <sup>[1][1]</sup>.

## History

iCalendar grew out of the **vCalendar** format created by the **Internet Mail Consortium (IMC)**, which carried the `.vcs` extension <sup>[4][4]</sup>. The IETF first standardized iCalendar as **RFC 2445 in 1998**; **RFC 5545 replaced RFC 2445 in September 2009** and remains the defining standard <sup>[3][3]</sup> <sup>[4][4]</sup>. The `text/calendar` MIME type and the `.ics` filename extension are used for iCalendar data <sup>[4][4]</sup>. ZXing documents embedding a single event (`VEVENT`) in a QR code as one of its calendar formats <sup>[1][1]</sup>.

## Technical specification

ZXing's example payload is <sup>[1][1]</sup>:

```
BEGIN:VEVENT
SUMMARY:Summer+Vacation!
DTSTART:20180601T070000Z
DTEND:20180831T070000Z
END:VEVENT
```

A `VEVENT` is "a grouping of component properties ... that represents a scheduled amount of time on a calendar," and may itself contain `VALARM` components <sup>[3][3]</sup>. Key event properties include `SUMMARY` (title), `DTSTART` and `DTEND` (timing), plus `LOCATION`, `DESCRIPTION` and `UID` <sup>[3][3]</sup> <sup>[4][4]</sup>. A canonical RFC 5545 event uses, e.g., `SUMMARY:Bastille Day Party`, `DTSTART:19970714T170000Z`, `DTEND:19970715T040000Z` <sup>[4][4]</sup>.

**Date-time format.** Timestamps follow an ISO-8601-style form such as `20180601T070000Z`, where a trailing `Z` denotes UTC <sup>[4][4]</sup>.

**Line folding.** Lines should be limited to **75 octets**; longer values continue on the next line, which must begin with a space or tab <sup>[4][4]</sup>.

**Text escaping.** In TEXT values, actual line feeds are encoded as a backslash followed by `n` or `N`, and the special characters comma, semicolon and backslash are backslash-escaped <sup>[4][4]</sup>.

A strictly conformant iCalendar object wraps the `VEVENT` inside `BEGIN:VCALENDAR` / `END:VCALENDAR` with a `VERSION` and `PRODID`; ZXing's compact QR convention shows the bare `VEVENT` block, and many scanners accept it directly <sup>[1][1]</sup> <sup>[4][4]</sup>.

## Use cases

- **Event flyers and posters.** A scan adds the date, time, title and venue of a concert, conference or meetup to the user's calendar without manual entry <sup>[1][1]</sup>.
- **Camera-native "add event."** Both iOS and Android trigger a system-level calendar-event action when a `VEVENT`/iCalendar payload is scanned <sup>[6][6]</sup>.
- **Invitations and tickets.** Reminders for appointments, classes and bookings can be distributed as a single scannable code <sup>[1][1]</sup>.

## Implementations

| Project | Lang | Stars | Last active | Notes |
|---|---|---|---|---|
| [zxing/zxing](https://github.com/zxing/zxing) | Java | ~34k | 2025 | Reference decoder; parses the `VEVENT`/iCalendar QR convention into a calendar result <sup>[1][1]</sup> <sup>[5][5]</sup> |
| iOS / Android cameras (system) | — | — | 2025 | Trigger a "calendar event" action for iCalendar QR payloads <sup>[6][6]</sup> |

## Comparison

- **iCal Event QR vs a plain text/URL QR.** A `VEVENT` payload populates the native calendar fields (title, start, end, location) directly, whereas a URL only links to a page that may or may not offer an "add to calendar" flow <sup>[1][1]</sup> <sup>[4][4]</sup>.
- **Bare `VEVENT` vs full `VCALENDAR`.** ZXing's compact convention omits the outer `VCALENDAR` wrapper to save QR characters; RFC 5545 conformance requires the wrapper, so very strict parsers may need it <sup>[1][1]</sup> <sup>[4][4]</sup>.

## Fun facts

- The format that fills your phone's calendar from a poster traces back to the same 1990s **versit / Internet Mail Consortium** lineage that produced vCard — vCalendar was the IMC ancestor of today's RFC 5545 iCalendar <sup>[4][4]</sup>.

## Status

**Active.** RFC 5545 is the current iCalendar standard, the `text/calendar` MIME type and `.ics` extension are in universal use, and scanning a `VEVENT` QR triggers an "add event" action on both major mobile platforms <sup>[3][3]</sup> <sup>[4][4]</sup> <sup>[6][6]</sup>.

## Sources

[1]: https://github.com/zxing/zxing/wiki/Barcode-Contents
[3]: https://www.rfc-editor.org/info/rfc5545/
[4]: https://en.wikipedia.org/wiki/ICalendar
[5]: https://github.com/zxing/zxing
[6]: https://qrcodekit.com/news/qr-code-mobile-os-breakdown/

[1] [Barcode Contents](https://github.com/zxing/zxing/wiki/Barcode-Contents) — ZXing Wiki
[3] [RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar)](https://www.rfc-editor.org/info/rfc5545/) — IETF / RFC Editor, 2009
[4] [iCalendar](https://en.wikipedia.org/wiki/ICalendar) — Wikipedia
[5] [zxing/zxing](https://github.com/zxing/zxing) — ZXing project, GitHub
[6] [QR code mobile OS breakdown: iOS vs Android in 2026](https://qrcodekit.com/news/qr-code-mobile-os-breakdown/) — QRCodeKit, 2026

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
