# ICS Viewer

> Open an .ics calendar file in your browser: event times, locations, attendees, a month view and a CSV export. The file is never uploaded anywhere.

- URL: https://bytescope.dev/en/ics-viewer/
- Locale: en · Also: [ja](https://bytescope.dev/ja/ics-viewer.md) · [zh-Hant](https://bytescope.dev/zh-Hant/ics-viewer.md)
- Runs: The calendar is read here, on your machine. Events, attendees and locations are parsed in the page and never sent anywhere — no upload, no account, and nothing is added to your own calendar.
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

An `.ics` file is what Google Calendar, Outlook, Apple Calendar and every conference booking system hand you when they attach an invitation or export a schedule — and double-clicking it usually means importing it into your own calendar before you have even seen what is inside. Drop it here instead and it is parsed in the page: one row per event with its start, end, location, organizer, attendees and status, plus a month view that shows how a schedule actually falls across the weeks.

The file never leaves this machine. A calendar export names who you meet, when and where, which is not something to hand to a stranger's server just to read it — so the parsing, the month grid and the CSV are all built in your browser, and there is no upload endpoint to send the file to even by accident.

Recurring events are expanded only where the answer is certain. `FREQ=DAILY`, `FREQ=WEEKLY` and `FREQ=MONTHLY` with `INTERVAL`, `BYDAY`, `COUNT` and `UNTIL` are computed and drawn on the calendar. Anything past that subset — `BYSETPOS`, `FREQ=YEARLY`, a rule this parser does not fully understand — is listed with its raw rule text and left uncomputed, because a calendar that quietly invents the wrong dates is worse than one that admits the rule is complicated.

Times are shown exactly as the file writes them. There is no timezone database in the page, so a value carrying `TZID=Europe/Berlin` or a trailing `Z` is labelled with that frame rather than silently shifted into yours — the difference between the two is where double-booked meetings come from. The CSV export uses the same rule, one row per event as written, with the recurrence rule kept in its own column so nothing about the schedule is lost on the way into a spreadsheet.

## Limits

Does not subscribe to calendar feeds or edit events; it previews an .ics file.

## FAQ

### Is my calendar file uploaded anywhere?

No. The browser reads the file off your own disk, parses it in the page and builds the CSV locally. There is no server involved, no account, and closing the tab leaves no copy behind.

### How do I open an .ics file without importing it into my calendar?

That is exactly what this page is for. Drop the file here and you get the event list and a month view without touching your own calendar — nothing is added to Google Calendar, Outlook or Apple Calendar, because the page has no access to them.

### Which recurring events are expanded onto the calendar?

The common shapes: `FREQ=DAILY`, `FREQ=WEEKLY` and `FREQ=MONTHLY`, with `INTERVAL`, `BYDAY`, `COUNT` and `UNTIL`. Those are computed exactly, including the rule that a monthly event on the 31st simply skips the months that have no 31st instead of sliding to the 30th.

### What happens to a recurrence rule the tool does not support?

It is listed separately with its raw `RRULE` text and the reason it was refused, and only the event's own `DTSTART` is drawn. No approximate series is invented — a plausible-looking wrong date on a calendar is the one failure that costs you a meeting.

### Are the times converted to my timezone?

No, and that is deliberate. The page carries no timezone database, so a `TZID=` value or a UTC value ending in `Z` is shown as written and labelled with its frame. Converting with a guessed rule set would be worse than showing you what the file actually says.

### Can I get the events into Excel or Google Sheets?

Yes. Pick the columns you want and download the CSV — UID, summary, start, end, all-day flag, location, description, status, organizer, attendees, categories and the recurrence rule. Keep the byte-order mark option on so Excel reads non-English titles correctly.

### Does the CSV contain one row per repeat of a recurring event?

No. The CSV mirrors the file: one row per `VEVENT` as written, with the `RRULE` in the recurrence column. The month view is where the repeats are drawn out, so nothing in the export depends on how far into the future you happened to scroll.

### What if the file is broken or is not really a calendar?

It says so specifically. A file with no `BEGIN:VCALENDAR` line, a block that was never closed, an unparseable date and a malformed duration each get their own message with the line number that caused them, and events that parsed fine are still shown rather than thrown away with the rest.

## Related tools

- [VCF to CSV Converter](https://bytescope.dev/en/vcf-to-csv.md) — Turn a .vcf contact export into a CSV Excel opens cleanly.
- [Timestamp Converter](https://bytescope.dev/en/timestamp.md) — Convert Unix timestamps and ISO dates in both directions.
- [File Type Identifier](https://bytescope.dev/en/file-type.md) — Identify a file by its bytes when the extension is wrong or missing.
