Skip to content
ICS guide · Format

What is an ICS file?

An .ics file is a plain-text calendar file in the iCalendar format. It carries one or more events, with their times, places, and repeat rules, so that Apple Calendar, Google Calendar, Outlook, and every other calendar app can read the same file.

Published · Updated · Photo2Calendar Editorial Team

What an ICS file is

ICS stands for “iCalendar”, the standard that describes how calendar data is written down. The standard is published as RFC 5545, the files end in .ics, and the internet media type is text/calendar. Because the format is a public standard, a file exported from one calendar can be imported into any other.

Inside, an .ics file is ordinary text: one property per line, written as NAME:VALUE. You can open one in any text editor and read it. That makes it easy to inspect when an import goes wrong, and easy to write by hand or in code when you need a file without a calendar app.

One file can describe a single event (a concert, a flight), a whole calendar (every event of the school year), or a recurring series (training every Tuesday). It can also carry to-dos, free-busy information, and journal entries, but almost every .ics you meet in practice holds events.

What is inside

A complete one-event file, using the school concert from our image extraction guide:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example//Winter Concert//EN
BEGIN:VEVENT
UID:winter-concert-2026@example.com
DTSTAMP:20261016T090000Z
DTSTART;TZID=America/New_York:20261210T173000
DTEND;TZID=America/New_York:20261210T193000
SUMMARY:Winter Concert – Grades 3 to 5
LOCATION:Maple Street Elementary, Main Hall
DESCRIPTION:Doors 5:30 pm\nBring a canned food donation.
BEGIN:VALARM
TRIGGER:-PT60M
ACTION:DISPLAY
DESCRIPTION:Winter Concert in one hour
END:VALARM
END:VEVENT
END:VCALENDAR

Blocks start with BEGIN and end with END. The outer VCALENDAR block holds the file-level lines; each VEVENT holds one event. These are the lines you will see most often:

LineWhat it means
BEGIN:VCALENDAR / END:VCALENDARWraps the whole file. Everything else sits inside.
VERSION:2.0The iCalendar version. Always 2.0 for files made today.
PRODIDWhich program wrote the file. Required, but calendars ignore the value.
BEGIN:VEVENT / END:VEVENTOne event. A file can hold one or many.
UIDA unique ID for the event. Importing the same UID twice updates the event instead of duplicating it in most calendars.
DTSTAMPWhen this copy of the event was written. Required in every event.
DTSTART / DTENDStart and end. The format decides the time zone (see below). An all-day event uses a date without a time.
SUMMARYThe title shown in the calendar.
LOCATIONFree text. Calendar apps try to map it, so a full address works best.
DESCRIPTIONNotes. Line breaks are written as \n.
RRULEA repeat rule, for example FREQ=WEEKLY;COUNT=10.
BEGIN:VALARMA reminder, such as 30 minutes before the start.
BEGIN:VTIMEZONEThe definition of a named time zone used by DTSTART, including daylight-saving rules.

Two details matter when you write a file yourself: lines end with CRLF (carriage return plus line feed), and a line longer than 75 characters is “folded” onto the next line, which then starts with a space. Calendar apps handle both when they export; a text editor does not.

How times and zones are written

Most wrong-time problems come from this one line. DTSTART can be written four ways, and each means something different.

Written asMeaning
DTSTART:20270115T203000ZUTC. The trailing Z means “universal time”. Every calendar shows it converted to the viewer’s zone. Safest for flights and online meetings.
DTSTART;TZID=America/New_York:20270115T203000Local time in a named zone. Best for in-person events: the time stays 8:30 pm in New York no matter where the viewer is.
DTSTART:20270115T203000“Floating” time with no zone. Shows as 8:30 pm in whatever zone the viewer is in. Fine for “lunch at noon”, wrong for anything across zones.
DTSTART;VALUE=DATE:20270115All-day event. No time, no zone. DTEND is the day after the last day.

When a file uses TZID, it should also include a VTIMEZONE block that defines that zone. Many calendars know the common zone names and cope without it; a strict importer may not.

Where ICS files come from

Meeting invitations
Outlook, Google Calendar, and Apple Calendar attach an .ics (often named invite.ics) to invitation emails. METHOD:REQUEST inside tells the receiving calendar to show Accept and Decline.
Ticket and booking confirmations
Event and travel sites offer an “Add to calendar” link that downloads a one-event .ics.
Calendar exports
Apple Calendar, Google Calendar, and Outlook can export a whole calendar as one file with every event.
Calendar subscriptions
A webcal:// or https:// link to an .ics that your calendar re-downloads on a schedule, such as a team fixture list or a school year calendar.
Converted images
A photo or screenshot of a schedule, read by an app like Photo2Calendar and exported as .ics after you review the fields.

How to open one

  • Apple Calendar on iPhone: tap the file in Mail and add the events. From Files or Safari it depends on the iOS version; see how to open an ICS file on iPhone.
  • Apple Calendar on Mac: double-click the file, or use File > Import. Apple’s calendar guide covers both.
  • Google Calendar: on a computer, Settings > Import & export (Google’s steps). The phone app cannot import; see the Google Calendar guide for the workarounds.
  • Outlook: on the web, Add calendar > Upload from file. In Outlook for Windows, File > Open & Export > Import/Export.
  • Just reading it: any text editor. Notes on iPhone, TextEdit on Mac, Notepad on Windows.

ICS, iCal, .ical, .vcs, webcal

  • iCalendar is the format; .ics is its file extension.
  • iCal was the name of Apple’s calendar app until 2012. “iCal file” and “iCal format” mean an .ics file.
  • .ical is an unusual extension for the same content. If a file will not open, rename it to .ics.
  • .vcs is vCalendar, the 1990s predecessor. Some calendars still open it; otherwise convert it with a calendar app that can import .vcs and export .ics.
  • webcal:// is not a file but a link to an .ics on a server. Apple devices and some other calendars treat it as “subscribe to this calendar”. The same link with https:// usually works too.
  • .ifb carries free-busy information only, with no event details.

Common problems

  • Wrong time after import: floating time, a missing VTIMEZONE, or the exporting app’s zone was wrong. Check the DTSTART line.
  • Duplicates: each import of a file with new UIDs adds a fresh copy. Import once, or into an empty calendar you can delete.
  • Repeats turned into single events: the exporting app wrote every occurrence as its own VEVENT. Nothing is lost, but there is no series to edit at once.
  • Strange characters: the file was not saved as UTF-8. Re-export, or re-save it as UTF-8 in a text editor.
  • “Could not read the file”: usually a missing END line, a missing UID or DTSTAMP, or Windows and Unix line endings mixed. Validate it with an online iCalendar validator before fixing by hand.
  • The event never updates: you imported a copy. Subscribe to the link instead when the organizer publishes one.

Make your own

Our guide to creating an ICS file covers four ways: export from a calendar you already use, fill in an online generator, write the file by hand, or start from an image. For the last one, Photo2Calendar reads a photo, screenshot, or paper schedule, shows every field for you to check, and exports the reviewed events as .ics.

Frequently asked questions

Is an ICS file the same as iCal?

Almost. iCalendar is the format, .ics is the file extension, and iCal was the old name of Apple’s Calendar app. People say “iCal file” for all three. An .ical extension is rare; renaming it to .ics usually lets it open.

Can I open an ICS file on iPhone?

Yes. Tap the file in Mail and the Calendar app offers to add the events. From other apps it depends on the iOS version; our iPhone guide covers Mail, Files, Safari, and chat apps.

Does an ICS file update itself?

An imported file is a one-time copy. A subscribed calendar link re-downloads the file, so changes by the organizer show up. If you need updates, subscribe instead of importing.

Why does the event show at the wrong time?

The file used floating time or the wrong zone. Open it in a text editor and look at DTSTART: a trailing Z means UTC, a TZID names a zone, and neither means the time floats. Fix the file or correct the event after import.

Can one ICS file contain several events, or a repeating event?

Yes to both. A file can hold any number of VEVENT blocks, and a single event can carry an RRULE for weekly, monthly, or custom repeats. Some apps export each repeat as its own event instead.

Is it safe to open an ICS file?

The file is plain text and cannot run code. The risks are the same as any email: links inside the description, and spam invitations that appear on your calendar. Decline unknown invitations rather than clicking their links.

Format details from RFC 5545. Questions about the app: see the Photo2Calendar FAQ.