Add to Outlook calendar link
Outlook is really three different products wearing the same name, and each one wants something slightly different. Outlook.com for personal accounts, Outlook on the web for work and school accounts, and the desktop app. Here is what works where.
Rather not build the URL by hand? The generator does all of this, including the encoding.
Generate a linkOutlook.com, for personal accounts
https://outlook.live.com/calendar/0/deeplink/compose
?path=/calendar/action/compose
&rru=addevent
&subject=Q4+product+webinar
&startdt=2026-09-10T12:00:00Z
&enddt=2026-09-10T13:00:00Z
&body=A+45+minute+session
&location=https%3A%2F%2Fmeet.example.com%2Fabc
Note the parameter names: subject rather than title, body rather than description. They come from the mail composer the calendar shares its plumbing with.
Outlook 365, for work and school accounts
Identical parameters, different host:
https://outlook.office.com/calendar/0/deeplink/compose?...
The two are not interchangeable. A personal account clicking an outlook.office.com link gets an error page, and a work account clicking an outlook.live.com link gets asked to create a personal Microsoft account. There is no reliable way to detect which one a visitor has, so offer both. Label them plainly, something like "Outlook.com" and "Outlook (work)".
Which time format to send
Outlook accepts an ISO 8601 timestamp in startdt and enddt. UTC with a trailing Z is the most reliable choice, because Outlook renders the event in the viewer's own timezone and does not need to be told which zone you meant.
An explicit offset such as 2026-09-10T14:00:00+02:00 also works, though it has been flakier across Microsoft's routing changes over the years. If you only support one format, support UTC.
For an all-day event, send plain dates and add allday=true. The end date is exclusive here too.
&startdt=2026-09-10&enddt=2026-09-13&allday=trueDesktop Outlook
There is no URL scheme that reliably prefills the installed Outlook app. What works is an .ics file: Windows associates text/calendar with Outlook by default, so the file opens straight into the event window with everything filled in.
So for desktop users, the answer is not a deeplink at all. Serve the file with the right headers and let the operating system route it:
Content-Type: text/calendar; charset=utf-8
Content-Disposition: attachment; filename="webinar.ics"Why Microsoft links break more often than the others
Microsoft has changed the deeplink route several times: /calendar/action/compose, /calendar/0/deeplink/compose, and /calendar/0/action/compose have all been the recommended form at some point. Sending both path=/calendar/action/compose and rru=addevent alongside the deeplink/compose route covers the widest range, which is what this tool does.
If you hard-code Outlook links yourself, test them once a quarter. It is the one provider where a format that worked last year may quietly stop working.