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 Viewer
On this page
1. Confirm the input and destination2. Check the envelope3. Check each event4. Check destination limits5. Verify the repairReferences

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.

References