Validador de Expressões Cron

Valide expressões cron e veja um detalhamento campo a campo

Experimente um exemplo

Expressão cron

minute hour day(month) month day(week)

Expressão cron válida

Detalhamento dos campos

Minute*/15(0–59)

Expande para: 0, 15, 30, 45

Hour0-6(0–23)

Expande para: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

Expande para: 1, 15

Month*(1–12)

Expande para: all (1–12)

Day of week1-5(0–6)

Expande para: 1, 2, 3, 4, 5

O Que É a Validação de Expressões Cron?

A validação de expressões cron é o processo de verificar se uma string cron segue as regras de sintaxe corretas antes de chegar a um agendador. Uma expressão cron usa cinco campos separados por espaços (minuto, hora, dia do mês, mês, dia da semana) para definir um agendamento recorrente. Se algum campo contiver um valor fora do intervalo permitido, um operador inválido ou um erro estrutural como número incorreto de campos, a expressão será rejeitada pelo agendador no momento da implantação ou falhará silenciosamente sem corresponder a nenhum horário.

Validar uma expressão cron online detecta erros mais cedo do que implantar em produção e aguardar um job perdido. Erros típicos incluem escrever 25 no campo de hora (intervalo válido: 0-23), usar um passo de zero (*/0, que é indefinido), inverter os limites de um intervalo (5-1 em vez de 1-5), ou adicionar campos extras que pertencem a formatos não padrão como o Quartz. Um verificador de sintaxe sinaliza esses problemas instantaneamente e indica exatamente qual campo está errado.

A validação cron difere da análise cron. Um analisador pega uma expressão válida e a converte em um agendamento legível. Um validador responde a uma pergunta mais simples: esta expressão está bem formada? Valide antes de analisar — não faz sentido passar uma expressão inválida para um agendador. Em pipelines de CI/CD, a validação automatizada de cron impede que agendamentos quebrados sejam incorporados a arquivos de configuração.

Por Que Usar Este Validador Cron?

Uma expressão cron tem regras de sintaxe estritas, e os agendadores fornecem mensagens de erro inconsistentes quando essas regras são violadas. Alguns rejeitam a expressão com um erro críptico; outros a aceitam silenciosamente e nunca a disparam. Este validador fornece um diagnóstico claro, campo a campo, antes de você implantar.

Verificação Instantânea de Sintaxe
Cole ou digite uma expressão cron e veja imediatamente se ela passa na validação. Sem envio de formulário, sem atraso. O resultado é atualizado enquanto você digita.
🔒
Processamento com Privacidade
A validação é executada inteiramente no seu navegador. Suas expressões cron e configurações de agendamento nunca são enviadas a um servidor nem armazenadas em lugar algum.
🔍
Relatório de Erros Campo a Campo
Quando uma expressão é inválida, o validador identifica qual campo causou o erro e por quê. Sem precisar adivinhar qual dos cinco campos tem o problema.
📋
Sem Cadastro Necessário
Abra a página e comece a verificar. Sem login, sem chave de API, sem instalação. Funciona em qualquer dispositivo com um navegador moderno, incluindo celular.

Casos de Uso do Validador Cron

Desenvolvedor Frontend
Valide expressões cron inseridas por usuários em interfaces de agendamento antes de salvá-las no banco de dados. Capture erros de sintaxe no lado do cliente em vez de aguardar uma rejeição do backend.
Engenheiro Backend
Verifique expressões cron em configurações de filas de tarefas (Celery beat, Hangfire, Quartz) durante revisões de código. Confirme que uma string de agendamento refatorada ainda passa na validação de sintaxe.
DevOps / SRE
Valide agendamentos cron em manifestos de Kubernetes CronJob e configurações de pipelines de CI/CD antes de aplicá-los. Evite que um erro de digitação em um agendamento de backup passe despercebido até que o backup seja perdido.
Engenheiro de QA
Teste se sua aplicação rejeita corretamente entradas cron inválidas. Gere expressões conhecidamente incorretas (valores fora do intervalo, número errado de campos) e confirme que o tratamento de erros funciona.
Engenheiro de Dados
Valide gatilhos cron para DAGs do Airflow e execuções agendadas do dbt. Confirme que os agendamentos de pipeline extraídos de arquivos de configuração YAML ou JSON estão sintaticamente corretos antes de implantar.
Estudante / Aprendiz
Experimente a sintaxe cron e obtenha feedback instantâneo sobre o que é válido e o que gera erro. Aprenda os intervalos de campos, operadores e casos extremos testando expressões e lendo as mensagens de erro.

Erros Comuns de Sintaxe Cron

A tabela abaixo lista os erros mais frequentes em expressões cron e o que os causa. São os erros que aparecem repetidamente em configurações de produção e pipelines de CI/CD.

Tipo de erroExemploO que deu errado
Too few fields0 9 * *Missing the day-of-week field. Standard cron requires exactly 5 fields.
Too many fields0 0 9 * * 1 2026Extra fields. Some tools add seconds or year, but standard cron uses 5.
Value out of range0 25 * * *Hour field accepts 0-23. Value 25 exceeds the maximum.
Invalid step base0 0 32/2 * *Day-of-month starts at 32, which exceeds the 1-31 range.
Step of zero*/0 * * * *Step value must be 1 or greater. Zero creates an infinite loop.
Empty field0 9 * * 1Double space creates an empty field. Each field needs a value.
Invalid character0 9 * * Mon-FryTypo in day name. Use three-letter abbreviations: MON, TUE, WED, THU, FRI, SAT, SUN.
Reversed range0 9 * * 5-1Range end (1) is less than start (5). Write 1-5 or use a list: 5,6,0,1.

Expressões Cron Válidas vs. Inválidas

Uma referência rápida de expressões bem formadas ao lado de erros comuns. Use para verificar sua expressão antes de colá-la em uma configuração de agendador.

Expressões válidas
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
Expressões inválidas
0 9 * *4 campos, precisa de 5
0 25 * * *hora máxima é 23
*/0 * * * *passo não pode ser 0
0 9 * * 8dia da semana máximo é 6
60 * * * *minuto máximo é 59
0 0 0 * *dia do mês mínimo é 1

Exemplos de Código

Como validar expressões cron programaticamente em JavaScript, Python, Go e Bash. Cada exemplo mostra como capturar sintaxe inválida e extrair uma mensagem de erro significativa.

JavaScript (Node.js)
import { parseExpression } from 'cron-parser';

// Validate a cron expression by attempting to parse it
function validateCron(expr) {
  try {
    parseExpression(expr);
    return { valid: true, error: null };
  } catch (err) {
    return { valid: false, error: err.message };
  }
}

console.log(validateCron('0 9 * * 1-5'));
// → { valid: true, error: null }

console.log(validateCron('0 25 * * *'));
// → { valid: false, error: "Constraint error, got value 25 expected range 0-23" }

// Validate with field-level detail using cron-validator
import { isValidCron } from 'cron-validator';

isValidCron('*/15 * * * *');           // → true
isValidCron('*/15 * * * *', { seconds: true }); // → false (expects 6 fields)
isValidCron('0 0 31 2 *');             // → true (syntactically valid, Feb 31 never fires)
Python
from croniter import croniter

# Validate by checking if croniter can parse the expression
def validate_cron(expr: str) -> dict:
    if croniter.is_valid(expr):
        return {"valid": True, "error": None}
    # Get a more specific error message
    try:
        croniter(expr)
    except (ValueError, KeyError) as e:
        return {"valid": False, "error": str(e)}
    return {"valid": False, "error": "Unknown error"}

print(validate_cron("0 9 * * 1-5"))
# → {'valid': True, 'error': None}

print(validate_cron("0 25 * * *"))
# → {'valid': False, 'error': '...out of range...'}

print(validate_cron("* * *"))
# → {'valid': False, 'error': 'Exactly 5 or 6 columns...'}

# Field-level validation
from crontab import CronTab

cron = CronTab(tab="")
job = cron.new(command="/bin/true")
try:
    job.setall("0 9 * * 1-5")
    print(job.is_valid())  # → True
except Exception as e:
    print(f"Invalid: {e}")
Go
package main

import (
    "fmt"
    "github.com/robfig/cron/v3"
)

// ValidateCron checks whether a 5-field cron expression is syntactically correct
func ValidateCron(expr string) (bool, error) {
    parser := cron.NewParser(
        cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow,
    )
    _, err := parser.Parse(expr)
    if err != nil {
        return false, err
    }
    return true, nil
}

func main() {
    exprs := []string{
        "0 9 * * 1-5",   // valid
        "0 25 * * *",    // invalid: hour 25
        "*/15 * * * *",  // valid
        "0 0 32 * *",    // invalid: day 32
    }

    for _, e := range exprs {
        ok, err := ValidateCron(e)
        if ok {
            fmt.Printf("%-20s  VALID
", e)
        } else {
            fmt.Printf("%-20s  INVALID: %v
", e, err)
        }
    }
}
Bash
#!/bin/bash

# Validate cron syntax using Python one-liner
validate_cron() {
  python3 -c "
from croniter import croniter
import sys
expr = sys.argv[1]
if croniter.is_valid(expr):
    print(f'VALID: {expr}')
    sys.exit(0)
else:
    print(f'INVALID: {expr}')
    sys.exit(1)
" "$1"
}

validate_cron "0 9 * * 1-5"     # → VALID: 0 9 * * 1-5
validate_cron "0 25 * * *"      # → INVALID: 0 25 * * *

# Quick regex pre-check (catches field count and obvious issues)
cron_regex='^([0-9*/,-]+\s+){4}[0-9*/,-]+$'
echo "*/5 * * * *" | grep -Eq "$cron_regex" && echo "passes basic check"
echo "* * *" | grep -Eq "$cron_regex" || echo "fails basic check"

Perguntas Frequentes

O que torna uma expressão cron inválida?
Uma expressão cron é inválida quando viola as regras de sintaxe do formato de cinco campos. Causas comuns: número errado de campos (menos de 5 ou mais de 5 para o cron padrão), um valor fora do intervalo permitido (ex.: hora 25, minuto 60, dia do mês 0), um passo de zero (*/0), limites de intervalo invertidos (5-1), ou caracteres não reconhecidos. A expressão deve ter exatamente cinco campos separados por espaços com valores e operadores válidos em cada um.
Uma expressão cron é válida se nunca disparar?
Sim, sintaticamente. Uma expressão como 0 0 31 2 * (31 de fevereiro) passa na validação de sintaxe porque cada campo contém valores dentro dos intervalos permitidos. Mas nunca será acionada porque fevereiro nunca tem 31 dias. A maioria dos validadores verifica apenas a sintaxe, não a correção semântica. Se precisar detectar agendamentos inalcançáveis, calcule os próximos N horários de execução e verifique se a lista está vazia.
Como validar uma expressão cron de 6 ou 7 campos?
O cron POSIX padrão usa 5 campos. O Quartz Scheduler adiciona um campo de segundos no início (6 campos) e um campo de ano opcional no final (7 campos). O AWS EventBridge usa 6 campos. Este validador verifica o formato padrão de 5 campos. Para validar expressões Quartz ou EventBridge, use uma biblioteca que suporte o formato estendido, como cron-parser com a opção extended no Node.js ou quartz-cron no Java.
Posso usar nomes de dias e meses em expressões cron?
A maioria das implementações cron aceita abreviações de três letras em inglês para meses (JAN-DEC) e dias da semana (SUN-SAT). Elas não diferenciam maiúsculas de minúsculas no crontab, mas podem ser sensíveis em outros sistemas. Valores nomeados nem sempre funcionam em intervalos em todas as plataformas: MON-FRI funciona no crontab, mas não em todas as bibliotecas. Se a portabilidade for importante, use valores numéricos (1-5 para segunda a sexta).
Por que minha expressão cron funciona no crontab, mas falha no Kubernetes?
Os CronJobs do Kubernetes usam o mesmo formato de 5 campos do crontab, mas são analisados pela biblioteca cron do Go, que tem validação mais rigorosa. Expressões que o crontab tolera (como espaço em branco no final, ou dia do mês e dia da semana ambos definidos com valores não coringa) podem se comportar de forma diferente. O Kubernetes também usa por padrão o fuso horário do controller-manager (geralmente UTC), não o fuso local do nó. Sempre valide a expressão contra o agendador específico em que você está implantando.
Como devo validar expressões cron em um pipeline de CI/CD?
Adicione uma etapa de validação que seja executada antes da implantação. Em um projeto Node.js, use cron-parser ou cron-validator em um arquivo de teste que lê strings cron da sua configuração e verifica se são analisadas sem erro. Em Python, use croniter.is_valid(). Em um script shell, chame a função de validação e saia com código diferente de zero em caso de falha. Isso captura erros de digitação e de copiar e colar antes que cheguem à produção.
Qual é a diferença entre validação e linting de cron?
A validação verifica se uma expressão está sintaticamente correta: número correto de campos, valores dentro do intervalo, operadores válidos. O linting vai além, verificando erros prováveis que são tecnicamente válidos: agendamentos que nunca disparam (31 de fevereiro), jobs sobrepostos, valores de passo que pulam intervalos esperados (*/7 reinicia a cada hora), ou agendamentos sem documentação de fuso horário. A validação responde 'isso será analisado corretamente?' O linting responde 'é isso que você provavelmente quis dizer?'