ICS File Generator
Makes the .ics file and the pre-filled Google and Outlook links — because a downloaded file alone does not work for half your visitors.
- SECURE
- NO UPLOADS
- NO SIGNUP
- BROWSER BASED
- FREE
- FOREVER.
Support us with a link or a share
Give the event a title and a start time. The file and both calendar links appear here as you type — nothing is uploaded.
A duration instead of an end time
Used while Ends is empty. Examples: PT45M, PT2H, P1D.
Updating an event you already published
Re-downloading normally updates the existing entry, because the identifier is derived from the title, start and location. If you have changed any of those, paste the old identifier here and raise the sequence — that is the signal calendars use to replace an entry rather than add one.
An ICS file generator has to hand you links as well
This is the thing that separates a calendar button that works from one that quietly fails for half your audience, and almost nobody mentions it. There are two mechanisms for getting an event into somebody's calendar, and each covers a different half of the internet.
A downloaded .ics file is the elegant one. On iPhone, on macOS Calendar
and in the Outlook desktop app, opening it puts the event straight into a confirmation
dialog. Then there is Google Calendar, which does not do that at all — it will not
import a file you simply open. A Google Calendar user has to go into Settings, find
Import, and pick the file they just downloaded, and in practice they close the tab
instead.
So the fix is a pre-filled link. calendar.google.com/calendar/render?action=TEMPLATE…
opens a new event with your title, times and location already filled in, one click, no
file involved. Outlook Web has an equivalent. Both are produced here alongside the
file, carrying exactly the same times, and you put all three on your page.
The .ics format, in brief
| Full name | iCalendar |
|---|---|
| Extension |
.ics, .ical, .ifb
|
| Format type | Plain text calendar events, RFC 5545 |
| MIME type |
text/calendar
|
Timezones are where these files usually go wrong
Write DTSTART:20260812T140000 into a calendar file and you have specified
a floating time. It means two o'clock wherever the reader happens to be — two
in Stockholm, two in Denver, two in Tokyo. For a webinar that might even be what you
meant. For a talk in a room it is wrong, and it is wrong in the least detectable way
possible: the person who built the page lives in the right timezone, so it looks
perfect to them and to everyone they ask to check it.
Here the time you type is treated as wall-clock time in the zone you select, converted
to UTC, and written with a Z. Everybody's calendar then does the local
conversion itself and shows the correct moment. The conversion is printed on screen as
you type — 14:00 Europe/Stockholm → 12:00 UTC — because it is the one setting
that can silently ruin the file, and a number you can see is a number you can check.
The detail that saves you when the event moves
Conferences reschedule. Somebody who added your keynote in March and adds it again in
May should end up with one entry, updated — not two entries an hour apart. Whether
that happens is decided by a single field, UID, and by whether it stayed
the same between the two files.
Most generators put a fresh random identifier in every file they produce, which
guarantees duplicates. This one derives the identifier from the event itself, so the
same event produces the same UID every time with nothing stored anywhere.
If you have changed the title or the time — the very things the identifier is built
from — paste the previous UID into the field under the advanced section
and raise the sequence number. That combination is the actual, specified way to say
this replaces what I sent you before.
A UUID is appropriate when an application truly needs a new independent identifier, but it is the wrong default for an update that must find an existing event. The UUID generator explains that distinction and offers v4 or time-sortable v7 for the cases that actually need a fresh ID; this calendar form keeps its stable UID behavior instead.
All-day events and the off-by-one everybody hits
In iCalendar, the end of an all-day event is exclusive. A conference on the 12th runs from the 12th to the 13th, and writing the 12th in both fields produces an event that is zero days long — which different calendars then render differently, usually by not showing it. Tick the all-day box and this is handled; the point of mentioning it is that if you are hand-writing these files, this is the bug you have.
A few other specification details are handled quietly because they break real files: a comma inside a description has to be escaped or it reads as a field separator, lines have to be wrapped at 75 octets rather than characters — which matters the moment your venue is called Malmö — and the whole file needs CRLF line endings, which strict parsers enforce.
What gets published, and what does not
The file, the links and a snippet of HTML to paste on your page are all produced here in the browser. Nothing is sent anywhere, which is less about secrecy than about the fact that there is no reason for a server to be involved in writing a text file.
The one thing that does travel is a single credit line at the end of the description,
pointing back to the calendar tools. It is on by default and
the checkbox turns it off, and it is shown in full before you download anything —
because it ends up in your visitors' calendars, and finding it there would be a poor
way to learn about it. The PRODID field names this tool either way; that
field is required by the specification, every calendar file has one, and no calendar
application shows it to anybody.
A file is the right answer when the event is going on a page or into an email footer for anyone to take. It is the wrong one when you are inviting named people and expect replies, because a downloadable file cannot collect them — sending a calendar invite covers that case, including why an attachment from a personal address so often lands without the accept and decline buttons.
Questions
Why do I get links as well as a file?
Because a downloaded .ics only works cleanly for about half your visitors. On iOS, macOS Calendar and Outlook desktop, opening the file adds the event in one step. Google Calendar does not do that — it will not import a file you simply open, so an Android user or anyone living in Google Calendar has to go into Settings and import it manually, which almost nobody does. The pre-filled links solve that half: one click opens a new event with everything already filled in.
How are timezones handled?
The time you type is treated as wall-clock time in the timezone you pick, and written into the file as UTC. That means an event at 14:00 in Stockholm shows as 14:00 to someone in Stockholm and 08:00 to someone in New York — which is correct, because it is the same moment. Most free generators write a floating time instead, which means "14:00 wherever you are", and the person who built the page never notices because they live in the right timezone.
What happens if I change the event later and people re-download it?
Their existing entry is updated rather than duplicated, provided the title, start and location still match — the identifier is derived from those, so the same event produces the same UID every time without anything being stored. If you have changed the time and want to be certain, paste the previous UID into the field and raise the sequence number; that is the signal calendars use to replace an entry instead of adding one.
Can I make a whole conference schedule at once?
Yes, but on its own page: Excel to Calendar takes a whole program at once, either pasted as a table or dropped in as a .csv or .xlsx. It is the same builder underneath, so you get one combined file for people who want the lot and one file per session for individual buttons on each page. The columns are matched by name, a header row of title, start, end and location is enough to get going, and if your events sit on a later tab of the workbook it finds that tab and tells you which one it read. This page stays what it is — one event, filled in by hand.
What is that line at the end of the description?
A one-line credit pointing back here, on by default and removable with the checkbox next to it. It is shown in full before you download anything, because it goes into your visitors' calendars and you should not discover it there. Turning it off changes nothing else about the file. The PRODID field still names this tool either way — that field is required by the spec, every .ics has one, and no calendar shows it to anybody.