---
title: How to create an ICS file, step by step
description: "Create an ICS file in any text editor: the exact lines to type, how to save it so calendar apps accept it, and a free generator when you'd rather not."
image: https://www.eventenginepro.com/hubfs/How%20to%20create%20an%20ICS%20file.jpg
---

[Skip to main content](https://www.eventenginepro.com/blog/how-to-create-an-ics-file#main-content)

[![ee-logo](https://www.eventenginepro.com/hubfs/ee-logo.svg) ![ee-logo](https://www.eventenginepro.com/hubfs/ee-logo.svg)](https://www.eventenginepro.com/)

- [Interactive Demo](https://www.eventenginepro.com/interactive-demo)
- [Pricing](https://www.eventenginepro.com/pricing)
- [Help Center](https://www.eventenginepro.com/help)
- [Blog](https://www.eventenginepro.com/blog)
- Show submenu for Free tools Free tools 
  
    - [Free ICS file generator](https://www.eventenginepro.com/free-ics-file-generator)
    - [Free ICS file viewer](https://www.eventenginepro.com/free-ics-file-viewer)

Open main navigation

Close main navigation

- [Interactive Demo](https://www.eventenginepro.com/interactive-demo)
- [Pricing](https://www.eventenginepro.com/pricing)
- [Help Center](https://www.eventenginepro.com/help)
- [Blog](https://www.eventenginepro.com/blog)
- Show submenu for Free tools Free tools 
  
    - Free tools
    - [Free ICS file generator](https://www.eventenginepro.com/free-ics-file-generator)
    - [Free ICS file viewer](https://www.eventenginepro.com/free-ics-file-viewer)
- [Book a Demo](https://www.eventenginepro.com/demo)
  
  [Get Started](https://app.eventenginepro.com/)

[Book a Demo](https://www.eventenginepro.com/demo)

[Get Started](https://app.eventenginepro.com/)

![How to create an ICS file, step by step](https://www.eventenginepro.com/hs-fs/hubfs/How%20to%20create%20an%20ICS%20file.jpg?width=1200&height=820&name=How%20to%20create%20an%20ICS%20file.jpg)

# How to create an ICS file, step by step

An ICS file is how you hand someone a calendar event without sending a meeting invite. You can create an ICS file in any text editor: type the event's details in iCalendar format and save the file with an .ics extension. Google Calendar, Outlook and Apple Calendar will all open it, and so will every other calendar app you're likely to meet.

If you just want the file, our [free ICS file generator](https://www.eventenginepro.com/free-ics-file-generator) will build one in under a minute, timezone handled, nothing to install or sign up for.

Doing it by hand once is still worth it, though. An ICS file is plain text, and after you've typed one you can read anyone else's, or fix a broken one without hunting for a tool. It's a 10 minute skill and it doesn't expire.

## Type the file, line by line

Open a text editor. Notepad on Windows, TextEdit on a Mac (with one setting changed, covered below), or any code editor if you have one.

Type this, changing the details to your own event:

```
BEGIN:VCALENDARVERSION:2.0PRODID:-//Your Company//Events//ENBEGIN:VEVENTUID:planning-day-nov-2026@yourcompany.comDTSTAMP:20260901T090000ZDTSTART:20261112T100000ZDTEND:20261112T160000ZSUMMARY:Team planning dayDESCRIPTION:Agenda to follow by emailLOCATION:Birmingham officeEND:VEVENTEND:VCALENDAR
```

What each part does, briefly.

BEGIN:VCALENDAR and END:VCALENDAR wrap the whole file, and BEGIN:VEVENT and END:VEVENT wrap the event. Miss one of the END lines and most calendar apps will refuse the file without telling you why.

VERSION is always 2.0. PRODID says what made the file, and the convention is that dashed format, but nothing checks it against reality. Put your company name in the middle and move on.

UID is the event's identity. Make it unique, anything@yourdomain works, and keep it the same if you ever edit and re-send the file, because calendar apps use it to recognise an event they've already got.

DTSTAMP is when you made the file. The two lines that matter most are DTSTART and DTEND: year, month, day, the letter T, then hours, minutes and seconds. The Z on the end means the time is UTC, so a 10am event in London during November is 100000Z, but the same event in July would be 090000Z, because British Summer Time sits an hour ahead of UTC. Get this wrong and the file works perfectly and puts the event in everyone's calendar an hour out, which is the failure you won't spot by testing it in the same country you built it in.

SUMMARY is the title people see. DESCRIPTION and LOCATION are optional, and worth filling in.

That's the whole file. The standard has plenty more fields, recurrence rules and alarms and timezone blocks among them, and the point at which you want those is roughly the point at which typing files by hand stops being sensible. The [where .ics files go wrong](https://www.eventenginepro.com/free-ics-file-generator) section on the generator page covers the traps in the deeper fields.

## Saving it so a calendar app accepts it

The file's name must end in .ics, and it must be plain text. Both of the standard editors will fight you a little on this.

On Windows, Notepad's save dialog wants to add .txt. Change "Save as type" to "All files", name the file something like planning-day.ics, and keep the encoding as UTF-8. Then check what you actually got: Windows hides file extensions by default, so a file quietly saved as planning-day.ics.txt displays as planning-day.ics and refuses to work. Turning on "File name extensions" in Explorer's View menu settles the question.

On a Mac, TextEdit starts new documents as rich text, and a rich text file full of formatting codes is no use to a calendar app however correct the lines look. Go to Format, then Make Plain Text, before you save, then save with the .ics name. You can set plain text as the default in TextEdit's settings if you'll be doing this again.

Strictly, the iCalendar standard also wants each line to end with a Windows-style line break. In practice every mainstream calendar app accepts ordinary line endings, so this only matters if some stricter system refuses your file. Worth knowing about, though you're unlikely to ever need it.

## Test it on yourself first

Before the file goes anywhere near other people, put the event in your own calendar.

On a Mac, double-click the file and Apple Calendar offers to add it. On Windows, double-clicking opens whatever calendar app is associated with .ics files, usually Outlook. Google Calendar is the fussy one: it won't take a double-click or a drag, so you go to Settings, then Import and export, and upload the file there.

The generator page has full import instructions for all 3, and if the file won't open at all, [how to open an ICS file](https://www.eventenginepro.com/blog/how-to-open-an-ics-file) covers new Outlook, phones and the usual faults.

Check the event landed on the right day at the right time. Time is the one to look at hardest, for the UTC reason above.

If nothing happens at all, or the app says the file can't be read, it's nearly always one of 2 things: the file isn't really called .ics (the hidden extension trap), or a line inside is malformed, usually a date with a digit missing or an END line that never got typed. Open it back up in the text editor and read it slowly. The file is short enough that the fault is usually visible. Or drop it into our [free ICS file viewer](https://www.eventenginepro.com/free-ics-file-viewer), which lists every event in the file and flags the faults that would stop a calendar app reading it.

## When to stop doing this by hand

For the occasional event, keep the file you just made as a template and change 5 lines each time. It takes a couple of minutes and there's nothing to sign up for.

The by-hand approach runs out of road when the events do more. Reminders, recurring events and proper timezone handling (where the event moves with the clock change instead of being pinned to UTC) all mean extra fields that are easy to get subtly wrong, and if you're making files regularly the UTC arithmetic will catch you out eventually. That's what the [free ICS file generator](https://www.eventenginepro.com/free-ics-file-generator) is for: same file, with the timezone thinking done for you.

And if the events live in HubSpot, the calendar file is only one of the links each event email needs. [Add-to-calendar links in HubSpot event emails](https://www.eventenginepro.com/blog/add-to-calendar-links-hubspot-event-emails) covers that end to end. [EventEngine](https://www.eventenginepro.com) generates the .ics from the HubSpot event record itself, so the file always matches whatever the event currently says.

## Questions that come up

**Can I create an ICS file in Notepad?**  
Yes. Notepad, TextEdit in plain text mode, or any code editor. Type the iCalendar lines, save the file with an .ics extension and UTF-8 encoding, and any calendar app will open it. On Windows, check the file didn't save as .ics.txt with the extension hidden.

**Why won't my ICS file open?**  
Check 3 things in order: the file really ends in .ics rather than .ics.txt, every BEGIN line has a matching END line, and the dates follow the 20261112T100000Z pattern exactly. Between them those cover nearly every failure in a hand-typed file.

**How do I create an ICS file from Excel?**  
Excel has no .ics export. For a handful of events, make each file by hand or with a free generator. For a whole spreadsheet of them, you would script it, or use a system that generates calendar files from event records directly.

**Can I edit an ICS file after I've made it?**  
Yes, in the same text editor, keeping the UID line the same so calendar apps recognise it as the same event. But anyone who already imported the old file keeps their copy; the edit only reaches people who import the new one.

**Does an ICS file update when the event changes?**  
No. An imported .ics file is a copy, and nothing connects it back to you. Only real meeting invites sent through a mail system, with the same UID and METHOD:REQUEST, can move an event in other people's calendars. If your event changes, send the corrected file and say so plainly in the email.

![Phill Burrows](https://www.eventenginepro.com/hs-fs/hubfs/IMG_1114.jpg?width=120&height=120&name=IMG_1114.jpg)

**[Phill Burrows](https://www.eventenginepro.com/blog/author/phill-burrows)**  
 Sep 3, 2026, 10:26:56 AM

 Phill Burrows runs Burrows Consultancy. He's been building for the web since 2001, as a webmaster in the original sense: servers, DNS, databases, migrations and the plumbing between systems, with search running underneath all of it. He came into HubSpot through agency work and it became the platform he spent most of his time in, implementing it, extending it and working around whatever it won't do out of the box for clients across the UK and Europe. The software he builds came from solving the same problems for client after client. He still does the implementation work, and most of what he writes here starts as one of those problems.

[Follow me on LinkedIn](https://www.linkedin.com/in/phill-burrows/)

[![ee-logo](https://www.eventenginepro.com/hubfs/ee-logo.svg)](https://www.eventenginepro.com)

- [Interactive Demo](https://www.eventenginepro.com/interactive-demo)
- [Pricing](https://www.eventenginepro.com/pricing)
- [Help Center](https://www.eventenginepro.com/help)
- [Blog](https://www.eventenginepro.com/blog)
- Free tools 
    - [Free ICS file generator](https://www.eventenginepro.com/free-ics-file-generator)
    - [Free ICS file viewer](https://www.eventenginepro.com/free-ics-file-viewer)

©2026 EventEngine    [Privacy](https://www.eventenginepro.com/privacy) | [Terms and Conditions](https://www.eventenginepro.com/terms-of-service)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Phill Burrows",
    "url" : "https://www.eventenginepro.com/blog/author/phill-burrows"
  },
  "dateModified" : "2026-10-08T13:59:48.017Z",
  "datePublished" : "2026-09-03T09:26:56.000Z",
  "headline" : "How to create an ICS file, step by step",
  "image" : [ "https://www.eventenginepro.com/hubfs/How%20to%20create%20an%20ICS%20file.jpg" ],
  "mainEntityOfPage" : {
    "@id" : "https://www.eventenginepro.com/blog/how-to-create-an-ics-file",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://www.eventenginepro.com/hubfs/ee-logo.svg"
    },
    "name" : "Burrows Digital Consultants Ltd"
  }
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "FAQPage",
  "mainEntity" : [ {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Yes. Notepad, TextEdit in plain text mode, or any code editor. Type the iCalendar lines, save the file with an .ics extension and UTF-8 encoding, and any calendar app will open it. On Windows, check the file didn't save as .ics.txt with the extension hidden."
    },
    "name" : "Can I create an ICS file in Notepad?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Check 3 things in order: the file really ends in .ics rather than .ics.txt, every BEGIN line has a matching END line, and the dates follow the 20261112T100000Z pattern exactly. Between them those cover nearly every failure in a hand-typed file."
    },
    "name" : "Why won't my ICS file open?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Excel has no .ics export. For a handful of events, make each file by hand or with a free generator. For a whole spreadsheet of them, you would script it, or use a system that generates calendar files from event records directly."
    },
    "name" : "How do I create an ICS file from Excel?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Yes, in the same text editor, keeping the UID line the same so calendar apps recognise it as the same event. But anyone who already imported the old file keeps their copy; the edit only reaches people who import the new one."
    },
    "name" : "Can I edit an ICS file after I've made it?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "No. An imported .ics file is a copy, and nothing connects it back to you. Only real meeting invites sent through a mail system, with the same UID and METHOD:REQUEST, can move an event in other people's calendars. If your event changes, send the corrected file and say so plainly in the email."
    },
    "name" : "Does an ICS file update when the event changes?"
  } ]
}
```