Inspect first.
Import elsewhere.
Purpose and boundaries
This tool inventories fields in a UTF-8 iCalendar file: calendar METHOD, record types, cancellation status, dates, timezone labels, organizer/attendee claims, attachment and URL references, alarms, recurrence fields, location and description. It does not import a calendar, send invitations, respond to an organizer, run alarms, open links or fetch a live feed. This is not a complete RFC validator, malware scanner, calendar renderer or guarantee of authenticity.
Recurring rules, additional dates, exclusions and overrides are listed, never expanded or reconciled. A record is not an occurrence or a confirmed appointment. Cancellation and invitation semantics depend on other calendar state, which this tool does not read. Some properties and component types are shown only by name; the JSON inventory is not a lossless source copy or an ICS file to import.
Dates and identities
Dates are displayed as parsed fields, not converted to your timezone or an absolute instant. UTC is labelled UTC. All-day dates have no timezone. A date-time without Z or TZID is labelled floating. A TZID with a matching VTIMEZONE is labelled as having a definition, not validated or converted. Without a matching definition, it is marked not resolved, even if a calendar app might recognize that timezone name. No external timezone database is consulted. Invalid or contradictory dates may still parse: this is an inventory, not date validation. End dates/times use iCalendar's exclusive-end convention.
Organizer and attendee names/addresses are claims within the file, not verified identities. Attachment and URL strings remain inert text, including alarm attachments. An embedded binary attachment may appear as data in the JSON; it is not decoded or executed. Read unfamiliar content with care. No claim that a file is safe follows from a successful inventory.
Limits
One VCALENDAR with VERSION:2.0, up to 1 MiB UTF-8 text, 20,000 physical lines, 64 KiB per unfolded logical line, 3,000 components, nesting depth eight and 1,000 non-timezone records. A ten-second worker timeout closes the file. Matching BEGIN/END boundaries and a supported hierarchy are required. Top-level event/todo/journal/free-busy/timezone records, event/todo alarms and timezone STANDARD/DAYLIGHT are supported; other nested components are refused rather than omitted. Duplicate start/end/due fields are refused. These bounds intentionally reject some valid files. No speed or memory guarantee is made for every device. A failed/new upload clears any previous inventory, avoiding a stale report.
Privacy and export
Files are parsed locally in a worker, then the worker is terminated. This build has no upload feature, analytics, tracking cookie, persistent file storage or remote runtime services. File values are displayed as text, not HTML. Clear removes the current inventory from the page. Browser downloads and recovery/extension behavior are outside this app. Hosting serves the app; no claim is made about hosting access logs.
The downloaded JSON contains personal data from the calendar, including contact claims and descriptions. It is not anonymized. Keep it private and retain the original ICS separately. No source or calendar is published by the app.
Open-source source and licence
Parser: ical.js 2.2.1, revision e6b2e61930d819ff72a7e5b399d52c8b92131106. The original MPL notices are retained. One change: time.js weekNumber is replaced with a throwing stub. This inventory does not use that method. Upstream credits its implementation to a separately MIT-licensed algorithm; that implementation is not distributed here. Recurrence iterators depend on it, so this modified library must not be used to expand recurrence. Full Mozilla Public License 2.0. They are served as source modules under vendor/ical/ and included in the complete app/source download, under MPL-2.0. Portions copyright Philipp Kewisch and the contributors named in those files. No runtime dependency, font or framework is bundled beyond ical.js.
The new, separate Chawso inventory/worker/UI files are MIT-licensed; full terms. Component notice. This larger work does not restrict recipients' MPL rights in the parser source. No warranty or support obligation is offered.
Revised November 13, 2026. Contact: contact@chawso.com.