
Privacy NotesPlease do not use the free conversion service, if you don't accept the terms
- When debugging, I log geolocation and the size of the original ics file.
If You Do Choose To Convert- To protect the privacy of your data, the converted file has a generic title.
- You will be prompted to save it on your machine as soon as conversion completes.
- Data encryption (https) is enabled.
- I don't keep copies of your ics files.
- I don't collect or resale your events' information.
- This is a private hobby and I don't receive any financial benefits.
- If you find the conversion tool helpfull and want to support me maintaining it, feel free to bye me a coffee.
Upload ICS files
(15MB max)
Or enter a URL
Columns Selection
Essentials only |
All |
Restore Defaults
SUMMARY
DTSTART
DTEND
DUE
(required for Reminder Events)
NOTES
ATTENDEE
LOCATION
PRIORITY
URL
CALENDAR
UID
ORGANIZER
CATEGORIES
DURATION (calculated as DTEND - DTSTART in hours)
CREATED
Additional Options
Repeats (until the end of next year)
Remove CANCELLED repeated events
Do not convert UTC times
Conversion Notes
You may select another separator, the desired date format, how time in events should be handled and whether the complete calendar should be converted or only the current year/quarter/month. Per Default following columns will be converted: SUMMARY, DTSTART, DTEND, DUE, NOTES, ATTENDEE, LOCATION, PRIORITY, URL. Should you need more or less columns, just enable or disable them.
- Comma separated csv files open easily in EXCEL.
- Tab separated csv files are easier to be viewed in simple text editors.
- Converted file will be a double quoted in Unicode (UTF-8) text file, ending in '.csv'.
Credits and thanks for the original idea to this converter go to ProjectWizards GmbH.
Feel free to send your issues or feedback hereto…
Buy me a coffee
549055 files converted so far…
Last modified on: November 2025
Last Changes
- Detected an issue with events not saved with a DTEND entry. Now those cases are handled more graciously.
- Changed the default conversion range from 'Complete Calendar' to 'Current Year'. Calendar apps have been around for some time, and ICS files contain meanwhile various past events that may or may not be required for conversion. However, the converter would try to create them, wasting resources and conversion time. If you need all events of the complete calendar, just select it before converting. I would appreciate your feedback on this, too.
- Reorganized the options and the page to remove clutter and to simplify the page layout. I would appreciate your feedback.
- Inserted a new option 'Duration Decimals'. You can now select between . and , as a symbol for the decimals. Thanks David for suggesting it
- Added options 'Essentials only | All | Restore Defaults' for quick enabling and disabling optional columns and reset back to the default enabled set.
- LANGUAGE tags with only two letters on SUMMARY info wouldn't get recognized as such and the converter would create untitled events. Thanks Terneny for reporting this.
- Custom RRULES with events starting on one date and ending on another wouldn't always calculate correct end dates in the repeats. Thanks Chris for reporting this.
- Better way detecting EXDATEs and RECURRENCE-IDs for events with RRULES. First fix for Jessie's report.
- New column: 'CREATED' of the event. As of now you can convert the CREATED column as well. It respects the Split date and time option. Thanks Yves for suggesting it.
- Converting a small range from a long ics file with many RRULES could stall. The events are now checked against the selected conversion range before conversion, rather than after. This should make processing smaller ranges quicker. Thanks Marianna for reporting it.
Show older changes…
- Moved events would sometimes come in addition to the events created by the repeating rule. This should be working better now. Thanks Ivan for reporting it.
- Notes entered by Thunderbird have a special format and they wouldn't be detected correctly, so they were missing on the converted CSV file. This should be working better now. Thanks Maxime for letting me know.
- Detecting X-… Tags and removing them from SUMMARY, LOCATION, etc is a big task and hopefully works better now. Thanks Kieran for reporting this.
- Some custom repeat rules for last day of the month wouldn't work or wouldn't create repeated events. Thanks Theresa for letting me know.
- Inserted a conversion range option of 'Last Year'. Complying to a request of Alexander.
- Events created by a repeating rule like 'RRULE:FREQ=WEEKLY;COUNT=…;BYDAY=' were not detected correctly and caused the converter to show a white screen. Thanks Alexander for reporting it.
- Events created by a repeating rule like 'RRULE:FREQ=MONTHLY;BYMONTHDAY=…;UNTIL=' were not detected correctly and caused the converter to show a white screen. Thanks Alan for reporting it.
- Events created by a repeating rule could get removed by enabled option 'Remove CANCELLED repeated events', in case they weren't moved but just renamed. Thanks Kevin for reporting it.
- ICS calendar files saved in UTF-8 with BOM wouldn't get recognized as valid ICS calendars. Should be fixed now.
- In some cases CANCELLED events would somehow appear in the csv even by enabled option 'Remove CANCELLED repeated events'. Thanks Kenny for reporting it.
- Inserted Info about the max downloadable ics file size 15MB.
- Regression issue by DAILY Repeated events. Should be fixed now.
- Better error handling in case the csv file cannot be created. Reported by Joe and Thomas.
- Big ics files with many repeat rules needed a great deal of calculation time, rendering the system unresponsive. This should be much better now. Thanks Joe for reporting it.
- Better detection of X-MICROSOFT tags and their removal from the SUMMARY.
- Better fix for the issue of repeat rules by MONTH and MONTHDAY reported by Neil.
- Removed some PHP 7 deprecated features and done some cleaning up.
- Switching to PHP 8 caused an issue for events having repeat rules by MONTH and MONTHDAY rules. This should be fixed now. Thanks Peter for reporting it.
- Switching to PHP 8 caused some issues for events having repeat rules. This should be fixed now. Thanks Len, Thomas and Neil for reporting it.
- There was an issue with the page on PHP 8. This is now fixed.
- Rescheduled single events wouldn't remove or report the event they replaced. This should work better now. Thanks Ryan for reporting this.
- The option 'Repeats (until the end of next year)' is now checked per default. This does not change the conversion performance for calendars without repeat rules, but it ensures better conversion for those having some.
- Inserted a conversion range option of 'Last Month'. Complying to a request of Tiffany.
- My last change outputting a 'CALENDAR' name if this isn't existing in the ics file, broke the conversion of ics files handled by their URL. This is now fixed. Thanks Colin for reporting this.
- If the 'CALENDAR' option was used, but the Calendar name was missing in the ics file, the conversion would output an empty value for the name. As of now the ics file name will be rendered into the CSV in such case. Thanks Christian for mentioning this.
- Weekly repeat rules on Sunday could be sometimes off. Thanks Kevin for letting me know.
- Better fix for issue where the option 'Current Month' would omit sometimes events on the last day of the month. Thanks Julie for letting me know that this was still not always working.
- In calendars where there was no time zone info, time conversion happened according to the time zone of the web server (Europe/London). Now the converter first searches for the time zone of the browser and defaults to the time zone of the web server only if the info couldn't get retrieved. Thanks Jason for reporting it.
- New column: 'CATEGORIES' of the event. Thanks Adelle for suggesting it.
- Sometimes, when many events were scheduled on the same date and time some rows might get omitted. Thanks Jonathan for reporting this.
- The option 'Current Month' would omit sometimes events on the last day of the month. This is fixed now. Thanks Mauricio for letting me know.
- Inserted a conversion range option of 'Current Quarter'. It will deliver events of the last 3 months until the end of the current month. Complying to a request of Gustavo.
- Inserted an option to convert the complete or just some range of the calendar. Suggested by Funny.
- The option 'Remove CANCELLED repeated events' removes now also events which had been moved and replaced by another event on other dates. Thanks Frank for suggesting this.
- Moved recurring events show now in an extra column 'REPLACES RECURRENT EVENT FROM' the date of the event they replace. Thanks Frank for your feedback.
- Events with a SUMMARY starting with uppercased strings followed by ':' could create rows with "untitiled" events. This should be fixed now. Thanks James for reporting it.
- Handling event without a UID could lead to issues, of the UID columns was enabled. This should be fixed now.
- Events or Todos without DTSTART, DTEND or DUE would get a nill date - ie Jan 1st, 1970 - in the according columns. This should be now working better.
- New column: 'DURATION (calculated in hours as DTEND - DTSTART)' which calculates the difference in hours between DTEND and DTSTART.
- New column: 'ORGANIZER' of the event. Thanks Göran for suggesting it.
- There is a limit of 20 to the amount of files you can convert at once. Now the converter reflects the limit and warns if you exceed it by your selection. Thanks Tim for pointing this out.
- Long DESCRIPTION texts could show up in the converted NOTES columns without required spaces between some words. Thanks Russ for your feedback, this should work much better now.
- Sometimes the CALENDAR name wasn't correctly outputted in repeated rows. Thanks Bruce for pointing this out.
- Inserted the option 'Remove CANCELLED repeated events' to control omitting deleted events in the CSV. If disabled, the deleted events will be outputted along with a note that those events were CANCELLED.
- Excluded dates in repeat rules (EXDATE) are now also supported and deleted events will be omitted in the CSV. Thanks Bruce for mentioning this missing feature.
- Handling for DESCRIPTIONS with custom 'Description' tags (such as 'CUST CONTACT', 'PHONE #', 'ADDRESS', 'UNIT #', etc) as requested by Perry and Evan.
- Inserted an option to convert files by their URL. Currently it only converts URLs containing the 'ics' string. Please contact me, if it should also work for other endings.
- Increased the limit for Repeats by one year. Thanks Jacque for asking this.
- Sometimes, sorting the rows by their DTSTART didn't work. This should be fixed now.
- Some Repetition rules without INTERVAL would cause the conversion to stall. This is fixed now. Thanks Corné for sending me your ics file to debug the issue.
- Better RRULES logging in the Notes by disabled 'Repeats (until the end of this year)' option.
- Custom repetition rules such as every 2 month on the 3rd Thursday of the month wouldn't create repetitions. Conversion now creates repeats. Thanks Lisa Marie for reporting it.
- New option: 'Do not convert UTC times' which leaves UTC times as they have. Suggested by Eric.
- You can now optionally also output the UID of the event. Thanks Levin for suggesting it.
- Repetition rules BYDAY, BYMONTHDAY are now also supported.
- Better sorting, even when outputting additional rows due to repetition rules.
- Better calendar name detection.
- Now omitting the X-LOTUS-UPDATE-SEQ property which was erroneously outputted sometimes in the 'Location' column.
- Removed time zone acronyms (such as CDT, CEST, BST, EDT …) from times. Importing into EXCEL should be easier now.
- Some ongoing conversion issues for UTC times to the calendar's timezone are now solved. Thanks Ron for pointing this out.
- DTEND PM times on rows created due to repetition riles could sometimes be off. This is now hopefully working better in most of the cases.
- Repetition rules without INTERVAL would produce identical events with wrong times. Conversion now assumes in such cases that the INTERVAL equals 1.
- Repetition rule options such as BYDAY, BYMONTHDAY are now also respected.
- The converter now respects repetition rules. By a selected 'Repeats (until the end of this year)', events with repetition rules will be outputted in extra rows. To avoid endless loop, rules without an explicit end date, will stop at the end of the current year. Thanks David and Hiroshi for asking this feature :-)
- The CALENDAR column outputs now the CALENDAR name incase it is included in the ics file. If not, the ics file name will be outputted.
- Sometimes a correct otherwise converted file if inserted into EXCEL, would show NOTES in more than one columns of data. To avoid EXCEL mixing up the separator with colons or quotes contained in the text, I inserted pipe (also known as vertical bar/line) as new type of separator. Select the "|" separator before converting and when importing the csv into EXCEL.
- Sometimes the URL was outputted in more than one rows of data. This is now hopefully working better in most of the cases.
- You can now optionally also output the name of the Calendar.ics file in a CALENDAR column of the todos. Thanks Hiroshi for your suggestion :-)
- You can now select more than one ics files to be converted at once. Please note that this surely takes longer when having selected many files containing many events. Thanks Marco C. for suggesting it :-)
- You can now define the name of the csv file if you call the converter by customName (example: https://www.indigoblue.eu/ics2csv/?customName=myfile)
- Data encryption (https) is now enabled.
- Repetition rules were ignored. First step; should there be any repetition rules, the rule will now appear in the Notes column. Thanks David for asking for this feature :-)
- Better handling of events with alert settings.
- The converter was always expecting a DTEND with a specific value in the events data. So end dates could be off if converting an ics with some events without an end date. This is now solved. Thanks Marco P. for finding it :-)
- Sometimes the ATTENDEES would get outputted in more than one rows of data. This is now hopefully working better in most of the cases.
- Sometimes the text in the NOTES would get outputted in more than one rows of data. This is now hopefully working better in most of the cases.
- Events without a SUMMARY value would result in wrong event dates to following events. Those events are now listed as untitled and their dates or those of following events are now correct.
- You can now omit some columns' conversion if you don't need them in the csv file.
- Events scheduled on the same date are not anymore ommitted while sorted.
- Events of calendars with language definition in the SUMMARY are now converted.
- Now omitting the TRUE X-MS-OLK-FORCEINSPECTOROPEN property which was erroneously outputted sometimes in the 'Location' column.
- Events are now sorted by 'Start' date (DTSTART).
- HTML in 'Description' defined by X-ALT-DESC;FMTTYPE=text/html: was not stripped. Now only the plain text in 'Description' gets converted.
- PM or AM for 12-hour clock times is now perserved when splitting date and time.
- Better 'Description' handling for formatted QUOTED-PRINTABLE cases.
- 'Priority' column for reminder events is now also supported.