Visualizador de calendários ICS

Cole um arquivo .ics ou escolha um do disco e clique em Analisar calendário: as entradas, as propriedades do calendário e todos os problemas encontrados ficam na página e podem ser copiados ou baixados em JSON.

Funciona localmente no seu navegador
·
Fonte do calendário
Events and tasks

Como ler um arquivo de calendário sem enviá-lo

Cole um arquivo .ics na caixa ou escolha um do disco — até 5 MB, com o tamanho ao lado do nome — e clique em Analisar calendário. O calendário é lido na aba, então nada é enviado, e a exportação JSON funciona do mesmo jeito. O resumo traz o calendário, seu PRODID e sua versão e conta os eventos, as tarefas e os problemas encontrados; cada entrada aparece abaixo como um cartão com data, local, regra RRULE e descrição.

Basta que o arquivo se pareça com iCalendar. As linhas são desdobradas primeiro, então uma linha de continuação que começa com espaço ou tabulação se junta à anterior; nomes de propriedade podem estar em minúsculas; CN="Doe; John" mantém o ponto e vírgula dentro do parâmetro entre aspas; e \, \; \n e \\ são decodificados antes de o valor aparecer. Uma linha que o analisador não consegue dividir em propriedade e valor é informada com o seu número, em vez de interromper o arquivo inteiro.

  1. Cole o texto do calendário ou escolha um arquivo .ics local — a área de soltar e o campo de arquivo carregam o texto na caixa.
  2. Clique em Analisar calendário. Eventos e tarefas são contados, desenhados como cartões e gravados no resultado.
  3. Leia a linha Problemas. Campos UID, DTSTART ou SUMMARY ausentes, um DTEND anterior ao DTSTART, uma data que o visualizador não consegue ler, um END sem BEGIN e linhas que não puderam ser divididas aparecem um a um, cada qual com seu evento, sua tarefa ou o número da linha.
  4. Copie ou baixe o JSON para levar o resultado como calendar.json: as propriedades do calendário, cada evento e tarefa — componentes aninhados como VALARM ficam em components —, a lista de problemas e o número de linhas lidas. Sem resultado, os dois botões avisam.

O que o analisador verifica e onde ele para

Datas, fusos horários e dias inteiros

Quatro formatos de data são lidos: 20260901T090000Z como UTC, 20260901T090000 como hora local flutuante, 20260901 como data de dia inteiro e um valor com fuso no parâmetro TZID. O nome do fuso é impresso ao lado do valor — DTSTART;TZID=America/New_York:20260901T090000 aparece como 2026-09-01 09:00:00 (America/New_York) — e a hora fica exatamente como escrita, porque a página não tem base de fusos horários para converter. Um valor que não se encaixa em nenhum desses formatos é informado na linha Problemas com o nome da propriedade e o texto original.

Dias inteiros aparecem como datas. Um evento sem DTSTART mostra um travessão no lugar da data, e a lista de problemas nomeia o campo ausente.

Eventos, tarefas e o resultado JSON

VEVENT e VTODO ficam separados: o cartão de um evento traz o intervalo de datas, o local, a regra RRULE e a descrição; o de uma tarefa, a data de vencimento. Uma propriedade repetida guarda todos os valores (duas linhas ATTENDEE viram um array) e componentes aninhados como VALARM vão junto do pai em components no JSON.

RRULE é exportada como texto e não é expandida: uma regra semanal com COUNT=6 continua sendo um evento com a regra escrita por inteiro.

Onde as verificações param

Este é um leitor com uma lista curta de verificações, não um teste de conformidade. Ele confere os campos citados e o formato do arquivo; não percorre a RFC 5545 propriedade por propriedade, não busca uma URL de assinatura e não conserta um arquivo danificado. O que não consegue ler ou dividir é nomeado com o número da linha ou a entrada de origem, de modo que um arquivo analisado pela metade pode ser corrigido exatamente onde quebrou.

Ferramentas recentes: