Every "add to calendar" button or downloaded invite you've ever clicked was really just handing your calendar app a small plain-text file. The format behind it is older and simpler than people expect — and understanding it explains a few quirks that otherwise seem like bugs.
What an .ics File Actually Contains
An .ics file follows the iCalendar standard, defined in RFC 5545, and it's genuinely just plain text — no binary data, no proprietary format. A single event is wrapped in a VEVENT block containing lines like SUMMARY (the title), DTSTART and DTEND (start and end time), LOCATION, and DESCRIPTION, all inside an outer VCALENDAR wrapper that identifies the file as calendar data. Because it's plain text, you can open one in any text editor and read exactly what it will add to a calendar before you even import it.
Why Time Zones Are the Trickiest Part
A date-time value in an .ics file can be expressed three different ways, and the difference matters. A UTC time ends with a trailing Z and means exactly the same instant no matter where it's opened. A time tied to a named time zone (via a TZID parameter) also stays unambiguous, but requires the file to include or reference time zone definition data. A floating time — no Z, no time zone reference — is the simplest to generate but is interpreted using whatever time zone the calendar app happens to be set to when it's opened. That's usually fine when the event creator and the person opening the file are in the same time zone, but it's exactly the kind of detail that causes a meeting to silently show up at the wrong hour across time zones.
Why the Same File Works Everywhere
Unlike a lot of "standards" that really only work well in one company's ecosystem, iCalendar is a genuinely open, vendor-neutral format — no single calendar provider owns it or controls how it's interpreted. That's why the exact same .ics file opens correctly whether the recipient uses Google Calendar, Apple Calendar, Outlook, or nearly any other calendar application on desktop or mobile: they're all reading the same plain-text structure, not translating between competing formats.
What UID Is For
Every VEVENT includes a UID — a unique identifier for that specific event, not just a random label. Its real purpose is letting a calendar app recognize an updated version of the same event later: if you send a revised .ics file with the same UID but a changed time or location, a calendar app that supports updates will replace the original event rather than creating a confusing duplicate. For a one-time import, the UID mostly goes unnoticed, but it's the mechanism that makes "this meeting got rescheduled" invites actually work as updates instead of new events.
What a Simple .ics File Can't Do
A basic, single-event .ics file is deliberately minimal — it doesn't include a recurrence rule or a built-in reminder by default. Recurring events use a separate RRULE property (for patterns like "every Monday" or "monthly on the 15th"), and reminders use a VALARM component, both of which are optional additions layered on top of the core VEVENT structure. Most calendar apps make it easy to add either one manually after importing a simple event, which is often simpler than trying to encode a recurrence pattern correctly by hand.
Try It Instantly
Generate a downloadable .ics file for any one-time event with our free Calendar Event Generator — fill in the title, time, and location, and it works with Google Calendar, Apple Calendar, and Outlook alike.
FAQ
What is an .ics file, technically? An .ics file is a plain-text calendar file following the iCalendar standard (RFC 5545), a format supported by virtually every calendar application — Google Calendar, Apple Calendar, Outlook, and many others. Opening one prompts your calendar app to add that specific event.
What's the difference between a floating time and a UTC time in an .ics file? A UTC time ends with a trailing Z and is unambiguous regardless of where it's opened, while a floating time — no Z, no time zone identifier — is interpreted using whatever time zone the calendar app opening the file is currently set to. A basic generated event using floating local time will show up correctly for the person who created it, but could shift by hours if opened in a different time zone.
What is the UID field for in a calendar event? UID is a unique identifier assigned to each event so a calendar app can recognize it as the same event again later — this is what allows an updated version of the same .ics file to correctly replace the original instead of creating a duplicate, rather than being used at all for a one-time import.
Can a simple .ics file include a recurring schedule or a reminder? A basic single-event .ics file doesn't include those by default — recurrence uses a separate RRULE property and reminders use a VALARM component, both optional additions to the format. Most calendar apps let you add a reminder or make an event repeat manually after importing it, directly within the app itself.