Cron Parser
Parse cron expressions to human language. See next 10 scheduled runs. Browser-only.
Cron Parser
5 fields: minute hour day month weekday
- 2026-06-01T00:00:00.000Z
- 2026-06-02T00:00:00.000Z
- 2026-06-03T00:00:00.000Z
- 2026-06-04T00:00:00.000Z
- 2026-06-05T00:00:00.000Z
- 2026-06-06T00:00:00.000Z
- 2026-06-07T00:00:00.000Z
- 2026-06-08T00:00:00.000Z
- 2026-06-09T00:00:00.000Z
- 2026-06-10T00:00:00.000Z
Runs entirely in your browser. Your input never leaves your device.
What next?
How it works
Sintaxe cron
Uma expressão cron clássica tem 5 campos:
* * * * *
│ │ │ │ │
│ │ │ │ └── dia da semana (0–6, 0=domingo, ou SUN-SAT)
│ │ │ └──── mês (1–12, ou JAN-DEC)
│ │ └────── dia do mês (1–31)
│ └──────── hora (0–23)
└────────── minuto (0–59)
Cada campo aceita: número (5), lista (1,15,30), range (0-12), step (*/15 a cada 15), ou combinações (0-30/5).
Algumas implementações (Quartz, AWS EventBridge, Kubernetes recentes) adicionam segundos como sexto campo opcional ou ano como sétimo.
Aliases comuns
@yearlyou@annually=0 0 1 1 *(à meia-noite de 1º janeiro)@monthly=0 0 1 * *@weekly=0 0 * * 0@dailyou@midnight=0 0 * * *@hourly=0 * * * *@reboot= a cada boot (não tem next execution previsível)
O gotcha do dia do mês + dia da semana
Quando ambos os campos estão especificados (não *), a maioria dos parsers (Vixie cron, padrão Linux) usa OR: execute se for o dia do mês OU o dia da semana. Quartz usa AND. Esta ferramenta segue Vixie (mais comum).
Exemplo: 0 0 15 * 1 no Linux = todo dia 15 OU toda segunda. Em Quartz = apenas dia 15 que cai numa segunda.
DST e fuso horário
Cron roda no fuso horário do servidor. Em zonas com DST, a hora 02:30 pode não existir (spring forward) ou existir duas vezes (fall back). Comportamento varia por implementação:
- Vixie cron: pula a hora que não existe; executa duas vezes na hora repetida (geralmente indesejado)
- systemd timers: trata melhor com
OnCalendar=e timezone explícito - Kubernetes CronJob: usa UTC por padrão (
spec.timeZonedesde 1.27)
Recomendação geral: configure jobs em UTC para evitar surpresas.
Casos de uso
- Backup diário às 3 AM:
0 3 * * * - A cada 15 min em horário comercial seg-sex:
*/15 9-18 * * 1-5 - Primeira segunda do mês: complicado — não é direto em cron padrão; em Quartz:
0 0 9 ? * MON#1 - Última sexta do mês: também não-trivial; geralmente requer wrapper de aplicação
Próximas execuções
Esta ferramenta calcula as próximas N execuções (default 5), útil para validar visualmente que sua expressão faz o que você quer antes de deployar no k8s ou crontab.
Bibliotecas
cron-parser (cálculo de próximas execuções) + cronstrue (descrição em linguagem natural). Ambas rodam no navegador.
FAQ
Cron suporta segundos?
Não no padrão Unix (5 campos). Variantes como Quartz (Java) e Spring Cron usam 6 ou 7 campos com segundos e ano. Indique no controle qual flavor está usando se aceitarmos múltiplos.
Como rodar em um fuso específico?
Cron rodando no servidor segue o TZ do servidor (/etc/timezone). Para Kubernetes CronJob, use spec.timeZone: "America/Sao_Paulo" (k8s 1.27+). Para systemd timers, OnCalendar= com hora local + [Timer] PersistentTime=true.
*/0 ou */100 é válido?
Não. Step deve ser maior que 0 e menor que o range do campo. */0 é erro de sintaxe. */100 para minutos é inválido (max 59).
Como agendar para a última sexta do mês?
Cron padrão não suporta. Soluções: rodar diariamente e verificar dentro do job se "hoje é a última sexta do mês". Ou usar Quartz expressions 0 0 18 ? * 6L (L = last).
Por que job não rodou no horário do DST?
Spring forward (avança hora): 02:30 não existe; cron pula. Fall back: 02:30 existe duas vezes; pode rodar duas vezes. Sempre prefira UTC para jobs críticos.
Cron é a melhor escolha?
Para tarefas simples agendadas, sim. Para fluxos complexos com retries, dependências, ou observabilidade, considere Airflow, Temporal, ou Cloud Scheduler. Cron é poderoso mas opaco quando falha.