Skip to content
C MakeCalendarLink

Add to Google Calendar link

Google Calendar accepts a prefilled event through a plain URL. No API, no key, no OAuth. Get the parameters right and one click drops your event into someone else's calendar with the title, time and location already filled in.

Rather not build the URL by hand? The generator does all of this, including the encoding.

Generate a link

The URL format

Every add to Google Calendar link is built on one endpoint:

https://calendar.google.com/calendar/render
  ?action=TEMPLATE
  &text=Q4+product+webinar
  &dates=20260910T140000/20260910T150000
  &ctz=Europe/Brussels
  &details=A+45+minute+session+with+live+Q%26A
  &location=https%3A%2F%2Fmeet.google.com%2Fabc-defg-hij

Only action=TEMPLATE, text and dates are required. Everything else is optional, and every value has to be URL encoded.

Every parameter

ParameterWhat it does
actionAlways TEMPLATE. Tells Google to open the event composer.
textEvent title.
datesStart and end, separated by a forward slash, in YYYYMMDDTHHmmSS form.
ctzIANA timezone, for example Europe/Brussels. Use it with local times, never with UTC times.
detailsDescription. Basic HTML is accepted, so a link inside it stays clickable.
locationAddress or a meeting URL.
recurA recurrence rule, prefixed with RRULE:, for example RRULE:FREQ=WEEKLY;COUNT=8.
addComma separated guest email addresses. Only works for accounts allowed to invite.
crmAvailability: BUSY, AVAILABLE or BLOCKING.

The timezone mistake almost everyone makes

This is the single most common bug in add to calendar links, and it is worth understanding because it looks fine in testing.

If you send UTC timestamps, so with a trailing Z, and a ctz parameter, Google converts the times correctly but labels the event (GMT+00:00) Coordinated Universal Time. The event lands at the right moment, yet anyone who opens it sees a timezone that has nothing to do with the event. People then "fix" it manually and end up at the wrong hour.

Two combinations are correct. Pick one:

  • Local time plus zone. dates=20260910T140000/20260910T150000&ctz=Europe/Brussels. No Z. This is what you want in almost every case: the event reads as 14:00 Brussels time, and every attendee sees it converted to their own zone.
  • UTC only. dates=20260910T120000Z/20260910T130000Z and no ctz at all. Correct, but the composer shows UTC while the person is deciding whether to save.

The wrong combination is UTC timestamps together with ctz.

All-day events

Drop the time part and use date-only values. The end date is exclusive, which trips people up constantly: an event that runs 10 to 12 September needs an end of the 13th.

&dates=20260910/20260913

Leave ctz off for all-day events. A date has no timezone, and adding one can shift the event by a day for attendees on the other side of the date line.

Recurring events

Google accepts a standard iCalendar recurrence rule through recur. The RRULE: prefix is required:

&recur=RRULE%3AFREQ%3DWEEKLY%3BBYDAY%3DTU%3BCOUNT%3D8

That gives eight weekly instances on Tuesdays. Common building blocks: FREQ=DAILY|WEEKLY|MONTHLY|YEARLY, INTERVAL=2 for every other one, COUNT=n for a fixed number, and UNTIL=20261231T000000Z for an end date.

Making the link on mobile behave

On Android, calendar.google.com links open in the Google Calendar app automatically. On iOS they open in the browser, and the visitor needs to be signed into their Google account for the event to save. That is out of your control, which is exactly why you should always offer an .ics download alongside the Google link. Apple Calendar users on iOS get a native "Add" sheet from the file, and nobody has to sign into anything.

Add to Google Calendar link: questions

Do I need a Google Calendar API key? +
No. This is a plain URL, not an API call. Nothing needs to be registered and there is no quota.
Can I prefill guests? +
Use add=someone@example.com, comma separated for several. Google only honours it when the signed-in account is allowed to invite others, so treat it as a nice-to-have rather than something to rely on.
Why is my description showing raw HTML tags? +
The value was double encoded somewhere. Encode each parameter value exactly once, and remember that & inside a description or URL has to become %26.
Is there a length limit? +
No documented one, but browsers and email clients start truncating around 2000 characters. Keep the description short and put the detail behind a link.

Other calendars