Analizador de Expresiones Cron

Analiza expresiones cron y obtén descripciones legibles con una vista previa de las próximas ejecuciones

Prueba un ejemplo

Expresión cron

minute hour day(month) month day(week)

Descripción en lenguaje natural

At 9:00 AM, Mon, Tue, Wed, Thu, Fri

Desglose por campo

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

Próximas 10 ejecuciones programadas

12026-03-26 09:00:00
22026-03-27 09:00:00
32026-03-30 09:00:00
42026-03-31 09:00:00
52026-04-01 09:00:00
62026-04-02 09:00:00
72026-04-03 09:00:00
82026-04-06 09:00:00
92026-04-07 09:00:00
102026-04-08 09:00:00

¿Qué es el análisis de expresiones cron?

Una expresión cron es una cadena de cinco campos separados por espacios que define una programación recurrente. El formato tiene su origen en el demonio cron de Unix, escrito por primera vez por Ken Thompson para Version 7 Unix en 1979. Cada campo representa una unidad de tiempo: minuto, hora, día del mes, mes y día de la semana. Analizar una expresión cron significa convertir esta notación compacta en una descripción legible y en una lista concreta de las próximas ejecuciones.

El formato estándar de cinco campos es utilizado por crontab en Linux y macOS, por plataformas de CI/CD como GitHub Actions y GitLab CI, por los planificadores en la nube de AWS (EventBridge), Google Cloud Scheduler y Azure Functions, y por las librerías de planificación de tareas en todos los lenguajes de programación principales. Algunos sistemas extienden el formato a seis o siete campos añadiendo un campo de segundos o de año, pero el esquema de cinco campos definido por POSIX sigue siendo la base que todas las implementaciones comparten.

Analizar expresiones cron a mano es propenso a errores. La interacción entre campos genera programaciones no evidentes: 0 9 1-7 * 1 no significa 'cada lunes de la primera semana', sino 'los días 1 al 7 de cada mes O cualquier lunes'. Un analizador de cron elimina esta ambigüedad expandiendo cada campo, aplicando las reglas de combinación y produciendo los timestamps reales en los que se ejecutará la tarea.

¿Por qué usar este analizador de cron?

Leer una expresión cron como 30 */6 1,15 * * en un archivo de configuración y saber exactamente cuándo se ejecuta requiere hacer cálculos mentales sobre cinco campos. Este analizador hace ese trabajo de forma inmediata.

Análisis instantáneo
Escribe o pega una expresión cron y obtén al instante la descripción en lenguaje natural y las próximas 10 ejecuciones programadas. Sin botón de envío, sin recarga.
🔒
Procesamiento con privacidad
Todo el análisis se ejecuta localmente en tu navegador. Tus expresiones cron y datos de programación nunca salen de tu dispositivo.
📋
Desglose campo por campo
Cada uno de los cinco campos se analiza y muestra de forma individual con los valores resueltos. Identifica de un vistazo qué campo controla la programación.
🔄
Sin cuenta requerida
Abre la página y empieza a analizar. Sin inicio de sesión, sin clave API, sin instalación. Funciona en cualquier dispositivo con un navegador moderno.

Casos de uso del analizador de cron

Desarrollador frontend
Verifica las expresiones cron en paneles de administración e interfaces de programación antes de enviarlas al backend. Confirma que la programación seleccionada por el usuario en un desplegable coincide con la cadena cron generada por el formulario.
Ingeniero backend
Depura tareas programadas que se ejecutan en momentos inesperados. Pega la expresión cron de tu configuración de cola de tareas (Celery, Sidekiq, Quartz) y comprueba si las próximas ejecuciones coinciden con lo esperado.
DevOps / SRE
Audita las programaciones cron en pipelines de CI/CD, Kubernetes CronJobs y configuraciones de planificadores en la nube. Verifica que las tareas de copia de seguridad, las renovaciones de certificados y los scripts de limpieza estén correctamente programados antes de desplegar.
Ingeniero de QA
Valida que las tareas programadas en el entorno de pruebas coincidan con la programación de producción. Detecta errores de desplazamiento en los campos de mes o día de la semana antes de que causen ejecuciones omitidas en prod.
Ingeniero de datos
Comprueba los disparadores cron de los pipelines ETL y las tareas de sincronización de datos. Confirma que las ventanas de extracción no se solapen y que las dependencias posteriores tengan suficiente margen de tiempo.
Estudiante / Aprendiz
Aprende la sintaxis cron experimentando con distintas expresiones y viendo los resultados en tiempo real. Desarrolla la intuición sobre cómo interactúan los comodines, los rangos y los valores de paso.

Referencia de sintaxis de expresiones cron

Una expresión cron estándar tiene cinco campos separados por espacios. Cada campo acepta enteros, comodines, rangos, listas y valores de paso. La tabla a continuación muestra el rango permitido y los operadores para cada campo.

CampoRangoOperadoresDescripción
Minute0–59* , - /Minute within the hour
Hour0–23* , - /Hour of the day (24-hour)
Day (month)1–31* , - /Day of the month
Month1–12* , - /Month of the year (or JAN–DEC)
Day (week)0–6* , - /Day of the week (0 = Sunday, or SUN–SAT)

Cuatro caracteres especiales controlan cómo se comparan los valores dentro de cada campo:

CarácterNombreComportamiento
*WildcardMatches every possible value in the field. * in the minute field means "every minute."
,ListSeparates individual values. 1,15 in the day field means "the 1st and 15th."
-RangeDefines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday."
/StepDefines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50."

Aquí tienes expresiones cron comunes que cubren la mayoría de las necesidades de programación:

ExpresiónProgramación
* * * * *Every minute
0 * * * *Every hour (at minute 0)
*/15 * * * *Every 15 minutes
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
30 2 * * 0Every Sunday at 2:30 AM
0 0 1 * *First day of every month at midnight
0 0 * * 1Every Monday at midnight
0 0 1 1 *January 1st at midnight (yearly)
0 */6 * * *Every 6 hours
5,35 * * * *At minute 5 and 35 of every hour
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, weekdays

Ejemplos de código

Cómo analizar expresiones cron y calcular las próximas ejecuciones en los lenguajes más populares:

JavaScript (Node.js)
import cronstrue from 'cronstrue';

// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"

cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"

// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';

const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC

// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
  console.log(interval.next().toString());
}
Python
from crontab import CronTab
from croniter import croniter
from datetime import datetime

# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run

# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
    print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps

# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)
Go
package main

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

func main() {
    // Parse a standard 5-field cron expression
    parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
    schedule, err := parser.Parse("0 9 * * 1-5")
    if err != nil {
        panic(err)
    }

    // Calculate the next 5 run times
    now := time.Now()
    for i := 0; i < 5; i++ {
        now = schedule.Next(now)
        fmt.Println(now)
    }
    // → next 5 weekday 09:00 timestamps
}
Bash (crontab)
# List current user's cron jobs
crontab -l

# Edit cron jobs interactively
crontab -e

# Add a job: run backup.sh every day at 2:30 AM
# (append to crontab via pipe)
(crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab -

# Check syntax with a dry-run parse (requires cronie or busybox)
# The system will reject invalid expressions when saving

# View cron logs on systemd-based Linux
journalctl -u cron --since "1 hour ago"

Preguntas frecuentes

¿Cuál es la diferencia entre las expresiones cron de 5 y 6 campos?
El formato cron estándar (POSIX) tiene 5 campos: minuto, hora, día-del-mes, mes, día-de-la-semana. Algunas herramientas como Quartz Scheduler y Spring añaden un campo de segundos al principio, pasando a 6 campos. AWS EventBridge usa 6 campos con un campo de año al final. Este analizador admite el formato estándar de 5 campos, compatible con crontab, GitHub Actions, Kubernetes CronJobs y la mayoría de las librerías de planificación.
¿Cómo gestiona cron los campos día-del-mes y día-de-la-semana juntos?
Cuando ambos campos están restringidos (no son *), cron usa lógica OR: la tarea se ejecuta cuando se cumple cualquiera de las dos condiciones. Por ejemplo, 0 9 15 * 1 significa 'a las 9:00 AM el día 15 de cada mes O todos los lunes'. Esta es una fuente habitual de confusión. Si ambos campos se establecen en *, la tarea se ejecuta todos los días.
¿Qué zona horaria usa cron?
El crontab tradicional se ejecuta en la zona horaria local del sistema. Los Kubernetes CronJobs usan por defecto la zona horaria del kube-controller-manager (normalmente UTC), pero admiten un campo opcional .spec.timeZone desde Kubernetes 1.25. AWS EventBridge y Google Cloud Scheduler permiten especificar la zona horaria por cada programación. Comprueba siempre qué zona horaria usa tu planificador antes de desplegar una tarea cron.
¿Puede cron ejecutar una tarea cada 30 segundos?
El cron estándar de 5 campos no admite programaciones por debajo del minuto. El intervalo mínimo es un minuto (*/1 o *). Para ejecutar algo cada 30 segundos, necesitas un cron de 6 campos con un campo de segundos (Quartz, Spring), un script que espere 30 segundos y se vuelva a ejecutar, o un mecanismo de planificación diferente como los temporizadores de systemd con OnCalendar.
¿Son equivalentes el 0 y el 7 en el campo día-de-la-semana?
En la mayoría de las implementaciones de cron, tanto 0 como 7 representan el domingo. Esta convención proviene del cron original de Unix. Sin embargo, algunos sistemas (Quartz) usan 1 para el domingo y 7 para el sábado. POSIX define el rango como 0-6 con 0 = domingo. Si tu planificador acepta nombres de días (SUN, MON), úsalos para evitar ambigüedades.
¿Qué ocurre si establezco un día-del-mes que no existe?
Si programas una tarea para el día 31 (0 0 31 * *), no se ejecutará en los meses con menos de 31 días. Cron no traslada la ejecución al mes siguiente. Febrero siempre se saltará, y abril, junio, septiembre y noviembre también. Para ejecutar una tarea el último día de cada mes, algunas implementaciones de cron admiten el modificador L (0 0 L * *), pero el cron estándar POSIX no lo contempla.
¿Cómo pruebo una expresión cron antes de desplegarla?
Usa un analizador online como este para ver las próximas ejecuciones y verificar que la programación coincide con tu intención. Para la validación en producción, la mayoría de las librerías cron ofrecen una función de cálculo de la próxima ejecución: cron-parser en Node.js, croniter en Python, robfig/cron en Go. Pasa la expresión por una de estas funciones en tu suite de pruebas para comprobar las próximas N ejecuciones antes de desplegar.