apple calendariphoneics filesimporthow to

How to Add an ICS File to iPhone and Apple Calendar

By AddCal Team

Apple's calendar handling is the best of the major platforms in one respect and the most confusing in another. Opening a single .ics file on an iPhone is genuinely easy, easier than on Android or in the Google Calendar app. Working out where the event went afterwards, or why it landed on the wrong day, is where people get stuck.

Opening files on iOS and importing on macOS are covered below, along with how iCloud sync affects both and why a subscribed calendar behaves differently from an imported one.

How to add an ICS file to iPhone Calendar

iOS registers the text/calendar MIME type and the .ics extension against the built-in Calendar app, so in most contexts tapping the file is all it takes. The exact flow depends on where the file is.

From Mail

This is the smoothest route. Apple Mail renders calendar attachments inline as an event card rather than a generic file icon. Tap the card and you get an event preview with an Add to Calendar button, or Accept / Maybe / Decline if the file is an invitation carrying METHOD:REQUEST and an ATTENDEE line for your address.

Before confirming, tap Calendar in the preview to choose which calendar receives the event. The default is whatever you have set under Settings > Calendar > Default Calendar, which for most people is their main iCloud calendar.

From Files

If the file has been saved to iCloud Drive, Downloads, or another location in the Files app, tap it. Calendar opens with the same preview sheet. If nothing happens, long-press the file, choose Share, and pick Calendar from the share sheet.

From Safari

Tapping a link to a .ics file in Safari triggers a download rather than an immediate open, which trips people up. Tap the downloads arrow in the toolbar, then tap the file in the list, and Calendar takes over. Some sites serve ICS files with a Content-Type of application/octet-stream instead of text/calendar, which is exactly when Safari refuses to hand off to Calendar and you end up with a file you cannot open.

From third-party apps

Gmail on iOS usually offers its own event card that adds to your Google account. Slack, WhatsApp and others show a generic attachment: use the share sheet and pick Calendar, or save to Files first and open from there.

Add an ICS to Apple Calendar on macOS

On a Mac you have a real import command, which matters when you are dealing with a large file.

  1. Open the Calendar app.
  2. Choose File > Import from the menu bar.
  3. Select your .ics file and click Import.
  4. Pick the destination calendar from the dropdown, then click OK.

Double-clicking a .ics file in Finder does the same thing with fewer steps, though it will not always let you choose the destination calendar first.

For anything more than a handful of events, create a dedicated calendar before importing: File > New Calendar. A hundred conference sessions dumped into your personal calendar is very hard to unpick afterwards. A separate calendar can be hidden with a checkbox or deleted entirely in one action.

How iCloud sync affects this

If the destination calendar lives in your iCloud account, imported events sync to every device signed into that Apple ID within a minute or two. Import on your Mac and the events appear on your iPhone. This is the main reason to do bulk imports on a Mac rather than fighting with the phone.

The exception is the On My iPhone or On My Mac local calendar. Events added there stay on that one device and are not backed up to iCloud. If you import something on your Mac and it never appears on your phone, check whether it landed in a local calendar rather than an iCloud one. In the macOS Calendar sidebar, iCloud calendars are grouped under an "iCloud" heading and local ones under "On My Mac".

Similarly, if your default calendar is a Google or Exchange account added to iOS, imported events go to that provider's servers rather than iCloud, and sync at that provider's pace instead.

Subscribed calendars on iOS

For anything that changes, subscribing beats importing. Imported events are a snapshot: if the organiser moves the date, your copy stays wrong forever. A subscription re-fetches the source feed and reflects the change.

To add a subscription on iPhone:

  1. Open Settings, scroll to Apps and tap Calendar (on older iOS versions, Calendar is at the top level).
  2. Tap Accounts, then Add Account, then Other.
  3. Tap Add Subscribed Calendar.
  4. Paste the feed URL and tap Next, then Save.

Both https:// and webcal:// URLs work here. Tapping a webcal:// link in Safari skips the whole settings journey and jumps straight to the subscribe prompt, which is why publishers offer them. There is a fuller explanation of the scheme in the webcal and subscription URL guide.

On macOS, the equivalent is File > New Calendar Subscription.

The refresh interval problem

Apple lets you choose how often a subscribed calendar refreshes, which is unusual and genuinely useful. Go to Settings > Apps > Calendar > Accounts, tap the subscribed calendar, and set Refresh to every 5 minutes, 15 minutes, hourly, daily or weekly.

Two caveats. First, the default is often weekly, which for a fast-changing feed is far too slow. Change it deliberately. Second, iOS treats the interval as a hint. Background refresh is deferred aggressively on battery, in Low Power Mode, or when the device has not been unlocked recently. Opening the Calendar app forces an immediate fetch.

Compared with the alternatives, Apple is the most flexible here. Google polls external feeds roughly daily with no user control at all, as covered in the Google Calendar import guide, and Outlook's behaviour varies by version.

One more thing worth knowing: subscribed calendars are read-only. You cannot edit or delete individual events in them. If you need to change something, you have to import instead and accept that it will not stay in sync.

Troubleshooting: opening an ICS on iPhone

Nothing happens when you tap the file

Usually the file was not served with the right content type, so iOS never associated it with Calendar. Try saving it to Files first, then opening it from there. If Files also refuses, open the file in a text editor or drop it into the ICS viewer to confirm it is really an iCalendar document and not, say, an HTML error page that got saved with a .ics extension.

Another cause: the file has no valid VEVENT at all. Files containing only VTODO or VFREEBUSY components will open with nothing to show.

The event is on the wrong date or an hour off

This is a timezone issue nearly every time. Check three things in order.

First, whether Time Zone Override is on. Settings > Apps > Calendar > Time Zone Override forces all events to display in one fixed timezone regardless of where you are. It is useful when travelling and baffling when you have forgotten it is enabled.

Second, whether the file uses floating times. A DTSTART with no trailing Z and no TZID parameter is interpreted in your device's local timezone, so a 9am event created in New York shows at 9am in London.

Third, whether the file references a TZID without including the matching VTIMEZONE block. Apple is fairly good at recognising standard IANA identifiers like Europe/London even without the definition, but bespoke identifiers such as Customized Time Zone, which some Microsoft exporters emit, will not resolve.

All-day events have their own trap. DTEND for a date-valued event is exclusive, so a one-day event on 19 January must end on the 20th. Files that get this wrong show up as either one day short or spilling into the next day. The complete guide to the iCalendar format covers date handling in detail.

Duplicate events

The usual cause is having the same account connected twice, for example an iCloud calendar that also syncs to a Google account you have separately added to iOS. Check Settings > Apps > Calendar > Accounts for overlapping sources.

The other cause is importing the same file more than once from a generator that emits a new UID each time. Apple deduplicates on UID, so stable identifiers mean re-importing safely updates in place. Randomised ones mean a second copy of everything.

A subscribed calendar has stopped updating

Check the refresh interval first, then confirm the source URL still returns a valid feed. Feeds behind an authentication wall, or ones whose tokens have expired, fail silently on iOS: the calendar simply stops changing rather than showing an error. Paste the URL into a browser and see what comes back.

When to skip the file entirely

If you are sending events to other people rather than receiving them, the failure modes above are all yours to own. Some recipients will tap the attachment and get nothing. Others will import it and never see your later correction.

A single link that detects the recipient's platform avoids both problems: iOS users get the native handler, Google users get a Google deep link, Outlook users get an Outlook one, and everyone stays pointed at a source you can still edit. That approach is described on the add to calendar links page, and for recurring or ongoing schedules the subscription calendars approach fits better.

Need a file for one specific event? Build a clean one in the free ICS generator, or generate a link that works everywhere with the add to calendar link generator. Both take about a minute.

Last updated on July 22, 2026

Continue reading

Browse all articles