Fix an ICS file that will not import
Isolate structure, line-format, metadata, and client-limit failures before changing event meaning.
Updated · Applies to: ICS ViewerOn this page
1. Confirm the input and destination
Verify that the file is plain-text ICS, not HTML or a renamed download error. Record the destination client and its exact error. Test with a small non-production calendar.
2. Check the envelope
The file needs one balanced VCALENDAR container and normally includes VERSION:2.0 and PRODID.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Publisher//Product//EN
…
END:VCALENDAR
Then check balanced component boundaries, CRLF line endings, valid folding, and escaped text. These are usually mechanical repairs.
3. Check each event
Every event needs stable identity and a meaningful start. Inspect UID, DTSTAMP, and DTSTART; then confirm that end or duration, time-zone references, recurrence rules, and exceptions agree.
Do not invent missing times, zones, or identities. Ask the publisher when intent is unavailable.
4. Check destination limits
If CalendarLint parses the file but the client rejects it, try a minimal subset. A successful subset points to a specific event, unsupported extension, size limit, or client behavior. Importing and subscribing are separate workflows; confirm which one the client expects.
5. Verify the repair
Compare the repaired version with the original, confirm no unrelated event changed, then test the exported copy. Escalate when the source is truncated, identities conflict, or recurrence intent cannot be reconstructed.

