ICS calendar event generator

Make .ics events with time zones, repeats, reminders, CSV import and calendar links.

Calendar

Recommended: the file carries the zone's rules (VTIMEZONE), so 09:00 stays 09:00 across daylight-saving changes and shows correctly for guests elsewhere.

Time zone
Ho Chi Minh City · Asia/Ho_Chi_Minh · GMT+7
Events
Event 1
Repeat
On
Reminders
Organizer and attendees (optional)

Names and emails are written into the file. Importing it does not send invitations: send the file yourself.

Import events from CSV

Columns: title, start, end, location, description, url. Dates as 2026-10-20 09:00, or 2026-10-20 for all-day.

Next occurrences
  1. Tue, Oct 20, 2026, 09:00 AM
  2. Tue, Oct 27, 2026, 09:00 AM
  3. Tue, Nov 3, 2026, 09:00 AM
  4. Tue, Nov 10, 2026, 09:00 AM
  5. Tue, Nov 17, 2026, 09:00 AM
  6. Tue, Nov 24, 2026, 09:00 AM
  7. Tue, Dec 1, 2026, 09:00 AM
  8. Tue, Dec 8, 2026, 09:00 AM
  9. Tue, Dec 15, 2026, 09:00 AM
  10. Tue, Dec 22, 2026, 09:00 AM

Dates that do not exist (31 April, 29 February in other years) are skipped, as the standard requires.

Add to an online calendar

Each link opens a pre-filled event. Outlook links cannot carry repetition.

1 of 1 events in the file.

What this tool does

Fill in an event, or several, and download one .ics file that Google Calendar, Apple Calendar, Outlook and Thunderbird can import. Each event can have a time zone, an all-day date range, a repeat rule (daily, weekly on chosen days, monthly on a date or on "the 2nd Tuesday", yearly; every N; ending after a number of times or on a date), reminders, a location, a link, a description, an organizer and attendees. You can import a list of events from CSV, see the next ten occurrences of a repeating event, and open the event pre-filled in Google Calendar or Outlook on the web. The file is built in your browser; nothing is sent anywhere.

A correct file, by the standard

The output follows RFC 5545, the iCalendar specification, in the details that make or break an import:

  • Line endings and folding. Lines end with CRLF and are folded at 75 octets (bytes, not characters) with a line break and a space. Vietnamese letters take 2 or 3 bytes in UTF-8 and emoji 4, so the tool folds between characters and never splits one in half, which is what turns "Họp" into "H�p" in careless generators.
  • Escaping. Commas, semicolons and backslashes in titles and descriptions are escaped, and line breaks become \n, so "Phòng 3, Tầng 5" stays one location.
  • Identity. Every event gets a unique UID and a DTSTAMP, so importing an updated file replaces the event instead of duplicating it.
  • All-day events use dates only, and their end date is the day after the last day, as the standard requires.

Time zones: three choices

  • In a time zone (recommended): times are written with TZID=Asia/Ho_Chi_Minh or whichever zone you pick, and the file includes a VTIMEZONE block built from your browser's time zone database, with every daylight-saving change between the first and last event. A weekly 09:00 meeting in New York stays at 09:00 when clocks change in March and November, and a guest in Hanoi sees it at the right local time.
  • In UTC: times end in Z. Simple, but a repeating event keeps the same UTC time all year, so it shifts by an hour on the local clock when daylight saving starts.
  • Floating: no zone; 09:00 means 09:00 wherever the calendar is. Right for "take medicine at 8:00", wrong for a call between two countries.

Repeats without surprises

The repeat rule (RRULE) is written in the form the standard requires: UNTIL in UTC when the event has a time zone, as a date for all-day events, and inclusive of the last date you pick. Some combinations do less than people expect, and the occurrence list shows it before you send the file: "monthly on the 31st" skips the months without a 31st, a yearly event on 29 February appears only in leap years, and "the last Friday" differs from "the 4th Friday" in months with five Fridays.

The Google Calendar link uses Google's documented template parameters (title, dates, time zone, details, location and the repeat rule). The Outlook links work for personal (outlook.com) and work (Microsoft 365) accounts but are not an official API and cannot carry a repeat rule. Links are handy for one event on a web page; the .ics file is better for several events, reminders and attendees.

For the pitfalls behind invitations that arrive an hour off, read how calendar invites and .ics files work. To check a time in another city, use the time zone converter; to count days between two dates, the date calculator.

Frequently asked questions

How do I add an .ics file to Google Calendar?

On a computer, open Google Calendar, Settings, Import and export, choose the file and the calendar to add it to. On a phone, open the file from your email or files app and choose your calendar app.

Why is my event an hour off after importing?

The file used UTC or floating times while you expected a fixed local time across a daylight-saving change, or the importing calendar is set to the wrong zone. Choose "in a time zone" so the file carries the zone's rules.

Does importing the file send invitations to the attendees?

No. Attendees are written into the file, but importing an .ics only adds the event to your own calendar. To invite people, send them the file or create the event in your calendar app and invite them there.

Can I create many events at once?

Yes. Add events one by one, or paste a CSV with a header row (title, start, end, location, description, url). All valid events go into one .ics file.

Will Vietnamese text display correctly?

Yes. The file is UTF-8 and long lines are folded between characters, never inside a multi-byte letter, so titles such as "Họp tổng kết quý" survive in every calendar that follows the standard.