event→ics

How to create an .ics file, and what is inside one

An .ics file is a plain-text calendar event in the iCalendar format (RFC 5545) that Google Calendar, Outlook and Apple Calendar can all open. You can create one by exporting an event from your calendar app, by writing the few required lines in a text editor, or with an online generator that fills in the fiddly parts for you.

People reach for an .ics file when an event has to cross from one calendar system to another: a meeting sent to a client on a different platform, a webinar sign-up page, a list of deadlines for a team. Below are the four ways to make one, then what is inside the file and the mistakes that make one import wrong.

1. Export one from Outlook

In classic Outlook for Windows, open the appointment, choose File → Save As, and pick iCalendar Format (*.ics) as the file type. To export a whole calendar instead, go to the calendar view and use File → Save Calendar, which lets you pick a date range and how much detail to include.

The new Outlook and Outlook on the web do not save single events as files. The closest equivalent is publishing a calendar from the calendar settings, which gives you an .ics link other people can subscribe to rather than a file to attach.

2. Export one from Google Calendar or Apple Calendar

Google Calendar exports whole calendars, not single events. Open Settings → Import & export → Export to download a zip holding one .ics file per calendar, or open one calendar’s own settings and choose Export calendar. There is no one-click download for a single event.

Apple Calendar on a Mac is the easiest of the three: drag an event out of the calendar onto the desktop and it becomes an .ics file. For a whole calendar, select it and use File → Export → Export….

3. Write one by hand

An .ics file is short enough to type. This is a complete, valid one-hour event:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Your Name//Your App//EN
METHOD:PUBLISH
BEGIN:VEVENT
UID:2027-project-review-01@example.com
DTSTAMP:20270301T120000Z
DTSTART:20270315T140000Z
DTEND:20270315T150000Z
SUMMARY:Project review
LOCATION:Room 4\, second floor
DESCRIPTION:Agenda: budget\, timeline\, next steps.
END:VEVENT
END:VCALENDAR

Save it with an .ics extension. What each line is doing:

LinePurpose
BEGIN/END:VCALENDARThe wrapper. One file can hold many events.
VERSION:2.0Required, and always 2.0.
PRODIDRequired. Names whatever made the file; any unique text works.
METHOD:PUBLISHMarks it as an event to add, not an invitation to reply to. Without it Outlook may show accept and decline buttons for an event nobody sent.
UIDRequired. A permanent, globally unique ID for the event. Reuse it to update the same event later; change it and you get a duplicate.
DTSTAMPRequired. When the file was made, in UTC.
DTSTART / DTENDStart and end. The trailing Z means UTC.
SUMMARYThe event title.

4. Generate one

Hand-writing is fine for one event and error-prone for anything else, because of the details in the next section. The .ics file generator takes a title, a date, a time and a time zone, and writes the file with the conversions, escaping and line lengths already handled — in your browser, with nothing uploaded. For a series of dates, the recurring dates generator writes one file containing every occurrence.

The details that make an .ics file import wrong

All-day events end the day after

For an all-day event the end date is exclusive. A one-day event on 15 March is written like this:

DTSTART;VALUE=DATE:20270315
DTEND;VALUE=DATE:20270316

Write 20270315 as the end and some applications show a zero-length event or drop it; a three-day conference written with its last day as the end shows up a day short. This is the single most common .ics bug.

Time zones: three ways to write a time

  • UTC20270315T140000Z. Exact, and every application shows it in the viewer’s own zone. The safe choice for a one-off event.
  • With a zoneDTSTART;TZID=Europe/London:20270315T140000. Keeps its local time through daylight saving changes, which matters for repeating events, but is only valid if the file also contains a VTIMEZONE block defining that zone’s rules. Leave it out and importers either reject the event or guess.
  • Floating20270315T140000, no Z and no zone. 14:00 wherever the reader happens to be. Right for “take medication at 8 a.m.”; wrong for a meeting between two cities.

Commas, semicolons and new lines need escaping

In text fields — the title, description and location — a comma, semicolon or backslash must be preceded by a backslash, and a line break is written as \n. An unescaped comma in a location is a classic reason for an address to be cut off at the first comma.

Long lines must be folded at 75 bytes

No line may be longer than 75 bytes. A longer one is split, and each continuation line starts with a single space. The limit is bytes, not characters, so a description with accented letters or emoji reaches it sooner — and splitting in the middle of a multi-byte character corrupts it. The file should also use Windows-style line endings (CRLF); most applications tolerate plain line feeds, but not all.

Repeating events

A repeating event is one VEVENT with an RRULE line such as RRULE:FREQ=WEEKLY;BYDAY=MO. The rule has its own vocabulary and a few surprises — see RRULE in plain English.

Opening and sharing the file

Double-clicking an .ics file opens it in the computer’s default calendar. In Google Calendar, use Settings → Import & export → Import and choose which calendar to add it to. An imported file is a copy: if the event changes later, people need a new file with the same UID.

To publish events that stay up to date — a club fixture list, a release schedule — host the .ics at a URL and have people subscribe to it instead. Serve it with the content type text/calendar. Be aware that subscribed calendars refresh on the calendar app’s schedule, not yours, and some check only a few times a day.

To make a single event without touching any of the syntax above, use the .ics file generator. It also gives you a Google Calendar link for people who would rather click than download.

Put it to work

Free, no signup, and it runs in your browser — nothing you enter is uploaded.

More guides