Explicador de expressões cron
Cole uma expressão cron e receba uma explicação em linguagem natural. Suporta os formatos padrão de 5 e 6 campos (com segundos).
Exemplos (clique para experimentar)
0 0 * * *— diariamente à meia-noite*/5 * * * *— a cada 5 minutos0 9 * * MON-FRI— manhãs de dias úteis às 9h0 0 1 * *— dia 1 de cada mês à meia-noite0 0 * * 0— todo domingo à meia-noite15 2 * * *— diariamente às 2h150 */6 * * *— a cada 6 horas30 3 1-7 * 1— primeira segunda-feira do mês às 3h30
- Digite ou cole uma expressão cron no campo acima.
- Leia a explicação em português que aparece logo abaixo.
- Clique em qualquer exemplo para colocá-lo no campo e ver a decodificação.
- Corrija qualquer erro mostrado em vermelho e itere até a explicação corresponder à sua intenção.
O que ele faz?
O explicador recebe uma expressão cron Unix padrão (5 campos) ou uma expressão no estilo Quartz com segundos (6 campos) e devolve uma descrição em linguagem humana, por exemplo, "às 09:00, de segunda a sexta". Suporta os operadores comuns — *, ",", -, e / — além de meses nomeados (JAN-DEC) e dias da semana nomeados (SUN-SAT). O resultado é atualizado a cada tecla digitada, permitindo iterar rapidamente.
Exemplo
Um trabalho típico em horário comercial:
0 9 * * MON-FRI Decodificado:
às 09:00, de segunda a sexta Uma expressão Quartz de 6 campos mais específica, com segundos:
0 30 2 ? * MON Decodificado (toda segunda-feira às 02:30:00).
Formato cron
┌───────── minuto (0 - 59) │ ┌─────── hora (0 - 23) │ │ ┌───── dia do mês (1 - 31) │ │ │ ┌─── mês (1 - 12, ou JAN-DEC) │ │ │ │ ┌─ dia da semana (0 - 6, ou SUN-SAT; 0 e 7 representam domingo) │ │ │ │ │ * * * * *
Por que o cron "0 0 * * *" dispara à meia-noite UTC e não no meu horário local?
A maior parte dos problemas reais de cron cai em algumas armadilhas recorrentes:
- Desvio de fuso horário. 0 0 * * * dispara à meia-noite no fuso horário do agendador. No Kubernetes CronJob e no GitHub Actions isso é UTC por padrão — defina spec.timeZone, ou converta a hora para UTC por conta própria.
- Confusão entre 5 campos e 6 campos. Colar 0 0 9 * * MON-FRI (6 campos) num agendador de 5 campos faz o primeiro 0 ser lido como minuto e o 0 seguinte como hora, fazendo o job disparar à meia-noite, não às 09:00.
- Dia do mês e dia da semana juntos. 0 0 15 * MON roda todo dia 15 e toda segunda-feira — não apenas quando o dia 15 cai numa segunda. É a semântica OR do Vixie-cron.
- step não reinicia a cada deploy. */10 * * * * dispara em :00, :10, :20, :30, :40, :50 do relógio — não dez minutos depois do seu último deploy.
- Usar ? em cron padrão. O curinga ? é uma extensão do Quartz. O Unix cron o rejeita — use * no lugar.
- Dia da semana 0 vs 7. Ambos significam domingo no cron clássico, mas alguns parsers (BSD antigo) aceitam só 0. Se a portabilidade importa, use SUN.
Operadores
*— qualquer valor,— lista de valores (ex.: MON,WED,FRI)-— intervalo (ex.: 1-5)/— valores step (ex.: */15 = a cada 15)
Perguntas frequentes
Qual a diferença entre cron de 5 e de 6 campos?
O cron POSIX padrão tem 5 campos: minuto, hora, dia do mês, mês, dia da semana. A variante de 6 campos adiciona um campo de segundos no início e é usada pelo Quartz, Spring @Scheduled e muitas bibliotecas cron do Node. Uma expressão de 6 campos como "0 0 9 * * MON-FRI" dispara às 9:00:00 em dias úteis, enquanto a de 5 campos "0 9 * * MON-FRI" dispara às 9:00.
Ele suporta extensões do Quartz como L, W e #?
Este explicador suporta o dialeto comum Unix / Vixie cron mais um campo inicial opcional de segundos. Tokens exclusivos do Quartz (L para último, W para dia útil, # para n-ésimo dia da semana, e o curinga ?) não fazem parte do cron padrão e não têm análise garantida. Se você depende deles, confira a expressão na documentação do agendador específico.
Por que 0 0 * * * dispara em um horário diferente do que espero?
Expressões cron não têm fuso horário. O job roda à meia-noite no fuso horário da máquina ou contêiner que executa o agendador. No Kubernetes CronJob, GitHub Actions e AWS EventBridge isso é UTC por padrão. Se quiser meia-noite local, configure o fuso horário do agendador explicitamente (spec.timeZone no CronJob, variável TZ, chave timezone no cron.yaml).
Posso combinar dia do mês e dia da semana?
No Vixie cron padrão, se dia do mês e dia da semana estiverem ambos restritos, o job dispara quando qualquer um casar — é um OR, não um AND. Portanto "0 0 15 * MON" roda no dia 15 de cada mês e em toda segunda-feira. O Quartz inverte isso e exige que um dos campos seja "?" para remover a ambiguidade.
Como funcionam valores step?
Um step usa a sintaxe intervalo/step. "*/15 * * * *" dispara a cada 15 minutos a partir de :00. "10-50/20" no campo de minutos dispara em :10, :30, :50. step não significa "a cada N a partir de agora" — as bordas estão sempre alinhadas ao início do intervalo, então step não anda com a hora atual.
Vocês salvam as expressões cron que eu testo aqui?
Não. Não guardamos nenhum registro do que você digita. Tudo que você cola ou experimenta é descartado ao fechar ou atualizar a página — sem logs, sem analytics sobre os agendamentos em que você trabalha. Se quiser confirmar, basta olhar nas ferramentas de desenvolvedor do seu navegador.