How to Create an ICS File (3 Ways, 2026)
An .ics file is the universal calendar format. Every major calendar app reads it, which makes it the way to send an event to someone without sharing an account or knowing what software they use.
There are three ways to make one, depending on whether you want it fast, exported from a real event, or built precisely.
1. Use a generator (fastest)
Fill in the event and download the file. Our free ICS file generator does this with no signup and converts your chosen time zone to UTC so the invite travels correctly. It also covers the parts most generators skip:
- Recurring events. Every second Tuesday, the last Friday of the month, the first Monday of every September, ending after 12 times or on a date. The tool shows you the next five dates the rule actually produces, so you can check it before you send it.
- Bulk attendees. Paste a whole list, including a copied
To:line in the formEmily Carter <emily@company.com>, and it splits the names from the addresses and drops duplicates. - Multiple reminders, a busy or free setting, private visibility, and an event link.
- A preview of the event as a calendar shows it, next to the raw file text.
This is the right option when you want an invite for a webinar, a class, or a launch, and you want to attach it to an email or put it behind a download link.
2. Export from a calendar you already have
If the event already exists, export it rather than rebuilding it.
Google Calendar: open the event, click the three-dot menu, and choose Download ICS or Export event. To export an entire calendar, go to Settings, pick the calendar, and use Export calendar, which gives you a zip of .ics files.
Outlook desktop: open the event, click File, then Save As, and choose iCalendar Format (.ics). You can pick whether to include full details or just availability.
Outlook on the web: open the event, click the three dots, then Save to calendar or use Export from calendar settings.
Apple Calendar: drag the event from the calendar window straight onto your desktop. That produces an .ics file. For a whole calendar, use File, Export, Export.
3. Write it by hand
An .ics file is plain text, so a text editor is enough. Save it with a .ics extension.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Your Company//Event//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:a1b2c3d4@yourcompany.com
DTSTAMP:20260826T090000Z
DTSTART:20260901T140000Z
DTEND:20260901T150000Z
SUMMARY:Quarterly planning
LOCATION:Zoom
DESCRIPTION:Agenda and dial-in in the invite.
END:VEVENT
END:VCALENDAR
Every line is a property and a value. DTSTART and DTEND carry the times, SUMMARY is the title, and UID uniquely identifies the event.
The five rules that break invites
Hand-written files fail in predictable ways. These are the ones worth knowing.
UID must be unique and stable. It is how calendar apps tell an update from a new event. Reuse a UID and you will overwrite someone’s existing event. Change it on an update and they get a duplicate.
Use UTC unless you have a reason not to. A time ending in Z, like 20260901T140000Z, is unambiguous everywhere. If you write a local time with a TZID, the file should also carry a matching VTIMEZONE block, and skipping it is a common cause of events landing an hour off.
All-day events end the next day. An all-day event on September 1 is written as DTSTART;VALUE=DATE:20260901 and DTEND;VALUE=DATE:20260902. The end date is exclusive. Set it to the same day and the event may not appear at all.
Escape the special characters. Inside a text value, commas, semicolons, and backslashes must be escaped as \, \; and \\, and line breaks written as \n. An unescaped comma in a description silently truncates it in some clients.
Fold long lines. The spec caps lines at 75 octets. Longer values continue on the next line starting with a single space. Most clients tolerate long lines, but strict parsers do not.
Our generator handles all five of these for you.
Once you have the file
Opening an .ics file and getting it onto the right calendar is its own job, and it differs on every platform. We cover each one, including the file that opens in Notepad instead of a calendar, in how to open an ICS file.
Sending the file to someone else
Attach it to an email and most clients show an Add to calendar button without the recipient doing anything else. Two habits make that go better: name the file after the event rather than invite.ics, and put the date and time in the body of the email as text, because anyone whose client hides the attachment still needs to know when the thing is.
If you want a calendar that stays current instead of a one-off event, you want a subscription URL rather than a file. See how to get your Google Calendar ICS URL and the Outlook version. Subscribed calendars refresh on the host’s schedule, which our note on the Google Calendar ICS refresh rate covers.
When you are making these by hand too often
Generating an ICS file is fine once. Doing it every time someone asks for a meeting is a sign the process is backwards, because you are still the one picking the time, writing the details, and chasing the confirmation.
Carly flips it. You share a booking page and the other person picks a slot, at which point the real event is created on your real calendar and the invite goes out automatically. Carly reads across every calendar you connect, so a slot only appears when you are genuinely free everywhere, and you get unlimited booking pages and connected calendars.
For recurring event work, a workflow can create and send the invites on a trigger rather than on your attention. Carly connects to thousands of apps, so the same run can update your CRM or file the details. Free Zapier-style workflows; AI agents from $35/month.
FAQ
How do I create an ICS file for free?
Use the ICS file generator, fill in the event, and download it. No signup and nothing to install.
How do I open an ICS file?
Double-click it and your default calendar app opens it. For the per-platform import steps, and what to do when it opens in Notepad instead, see how to open an ICS file.
Can one ICS file hold several events?
Yes. Put multiple VEVENT blocks inside a single VCALENDAR. Each needs its own unique UID.
Why is my ICS event showing the wrong time?
Almost always a time zone problem. Either use UTC times ending in Z, or include a VTIMEZONE block matching the TZID you used. The generator writes UTC for you.
Why did my attendees disappear when I imported the file?
Google Calendar strips guest lists on import by design, and it does not send invitations for imported events. Attendees in an .ics file work when the file is emailed to those people and each of them adds it, not when one person imports the file on everyone’s behalf.
Can I make a recurring event in an ICS file?
Yes. Recurrence is one RRULE line, such as RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE;COUNT=8 for every second Monday and Wednesday, eight times. The generator builds the rule from dropdowns and lists the dates it produces so you can check it.
What is the difference between an ICS file and a calendar subscription?
A file is a snapshot, so later edits never reach the recipient. A subscription URL keeps updating. Use a file for a one-off invite, and a booking page when you want the event created on your calendar directly.
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


