Generador de expresiones cron
Expresión
Campos
Preajustes
Próximas 5 ejecuciones
- lun, 05/10/2026, 08:07
- lun, 05/10/2026, 08:08
- lun, 05/10/2026, 08:09
- lun, 05/10/2026, 08:10
- lun, 05/10/2026, 08:11
Cómo funciona
Escribe una expresión cron arriba o usa los editores visuales de cada campo que hay debajo. Cada campo tiene un desplegable con todos los valores válidos y los operadores abreviados (* cualquiera, */N cada N, 1-5 rango, 1,3,5 lista). La herramienta muestra tres cosas en vivo: la expresión original, una descripción en español (“Cada 15 minutos, en las horas 9–17, de lunes a viernes”) y las cinco próximas ejecuciones concretas, en la zona horaria de tu equipo.
Una expresión cron tiene exactamente 5 campos separados por espacios. Es el mismo formato del crontab de Unix, de los CronJob de Kubernetes, del schedule de GitHub Actions, de GitLab CI, de AWS EventBridge y de casi cualquier otro planificador que te encuentres:
┌──────── minuto (0–59) │ ┌────── hora (0–23) │ │ ┌──── día del mes (1–31) │ │ │ ┌── mes (1–12) │ │ │ │ ┌ día de la semana (0–7, domingo = 0 o 7) │ │ │ │ │ * * * * *
Algunas expresiones de referencia que conviene saber de memoria: • `0 * * * *`: en el minuto 0 de cada hora (cada hora) • `0 0 * * *`: todos los días a medianoche • `*/15 * * * *`: cada 15 minutos • `0 9 * * 1-5`: a las 9:00 de lunes a viernes (día laborable típico) • `0 0 1 * *`: el día 1 de cada mes, a medianoche • `0 2 * * 0`: los domingos a las 2:00 (habitual en copias de seguridad semanales) • `30 6 1-7 * 1`: a las 6:30, en los primeros siete días del mes y en lunes (mira la advertencia de más abajo)
La herramienta incluye una biblioteca de preajustes con los horarios más comunes para que no tengas que recordar la sintaxis exacta. El cálculo de las próximas ejecuciones avanza desde ahora campo a campo hasta encontrar la siguiente fecha que coincide, como hacen las implementaciones estándar de crontab.
Una trampa que merece aviso: cuando el día del mes y el día de la semana están restringidos a la vez (ninguno es *), el cron estándar ejecuta la tarea si coincide cualquiera de los dos, no los dos. Así, `0 0 15 * 1` se ejecuta el día 15 de cada mes y todos los lunes, no solo los lunes que caen en día 15. A todo el mundo le pilla al menos una vez.
Preguntas frecuentes
¿Qué formato de cron usa?
- El crontab estándar de Unix con 5 campos: minuto, hora, día del mes, mes y día de la semana. Admite todos los operadores habituales: * (cualquiera), */N (cada N), rangos como 1-5, listas como 1,3,5 y combinaciones como */2,15-20. Es el mismo formato del crontab de Unix, de los CronJob de Kubernetes, de GitHub Actions, de GitLab CI y de AWS EventBridge.
¿Admite segundos?
- No. Es una herramienta de 5 campos. El cron de 6 campos (con una columna inicial de segundos) es una extensión propia de Quartz y Spring que usan los planificadores de Java. Si editas un @Scheduled de Spring o un trabajo de Quartz, la mayoría de los planificadores aceptan la forma de 5 campos con 0 segundos implícitos.
¿Cómo se calculan las próximas ejecuciones?
- Con la misma lógica que las librerías estándar de cron: la herramienta avanza desde ahora, campo a campo, hasta encontrar la siguiente fecha y hora que coincide. Las horas se muestran en la zona horaria local de tu navegador; cambia la zona horaria del reloj de tu sistema y recarga para verlas, por ejemplo, en UTC.
¿Qué diferencia hay entre 0 0 * * 1-5 y */5 9-17 * * 1-5?
- La primera se ejecuta a medianoche de lunes a viernes (cinco veces por semana). La segunda se ejecuta cada 5 minutos entre las 9:00 y las 17:00 de lunes a viernes (unas 600 veces por semana). Lee siempre en voz alta tus expresiones cron: la línea de descripción de la herramienta detecta la mayoría de los errores antes de que lleguen a producción.
¿Por qué mi tarea se ejecuta el doble de veces de lo esperado?
- Es la trampa clásica: cuando el día del mes y el día de la semana están restringidos a la vez, el cron estándar ejecuta la tarea si coincide CUALQUIERA de los dos, no los dos. `0 0 15 * 1` significa “a medianoche el día 15 O a medianoche cualquier lunes”, no “solo los lunes que caen en día 15”. Deja uno de los dos campos como * para tener una sola condición.
¿Sirve para Kubernetes CronJob, GitHub Actions y GitLab CI?
- Sí. Los tres usan el formato estándar de 5 campos que genera esta herramienta. Un detalle que conviene comprobar: GitHub Actions se ejecuta en UTC estés donde estés, así que “0 9 * * *” en un workflow de GitHub se dispara a las 9:00 UTC, no a las 9:00 de tu hora local.
¿Se envía la expresión cron a algún sitio?
- No. El análisis, la validación y el cálculo de las próximas ejecuciones se hacen como JavaScript en la pestaña de tu navegador. La pestaña Red de las herramientas para desarrolladores confirma que no sale ninguna petición. No se guarda ni se registra nada.
¿Cómo escribo una expresión cron que se ejecute el último día del mes?
- El cron estándar de 5 campos no tiene el operador “L” (último): es una extensión de Quartz y Spring. Con cron estándar no se puede hacer con una sola expresión. La solución habitual es ejecutar la tarea los días 28, 29, 30 y 31 con un script que compruebe `[ "$(date -d tomorrow +%d)" -eq 1 ] && hacer-la-tarea`. En Quartz y Spring (`@Scheduled`) puedes escribir directamente `0 0 0 L * ?`.
¿Qué diferencia hay entre 0 */2 * * * y 0 0,2,4,6,8,10,12,14,16,18,20,22 * * *?
- Ninguna: las dos se ejecutan cada dos horas en el minuto 0. La forma `*/2` es una abreviatura de “cada 2 valores a partir de 0”. Para desfases impares (por ejemplo, “cada 2 horas a partir de la 1:00”) necesitas la lista explícita `0 1,3,5,7,9,11,13,15,17,19,21,23 * * *`, porque */2 siempre empieza en 0.
¿Puedo usar nombres de meses y de días de la semana en lugar de números?
- En la mayoría de los planificadores sí: JAN-DEC para los meses y SUN-SAT para los días de la semana, sin distinguir mayúsculas, así que `0 9 * * MON-FRI` significa lo mismo que `0 9 * * 1-5`. AWS EventBridge exige la forma con nombres para los días de la semana. Este editor solo valida dígitos y los operadores * - / , así que escribe aquí `0 9 * * 1-5`; la forma numérica es, además, la más segura entre plataformas.
Chuleta de expresiones cron: horarios habituales
Referencia para copiar y pegar con los horarios que más escribes. Todas las expresiones usan el formato estándar de crontab de 5 campos: minuto hora día-del-mes mes día-de-la-semana.
| Expresión | Se ejecuta | Uso típico |
|---|---|---|
| * * * * * | Cada minuto | Comprobar que tu planificador está vivo |
| */5 * * * * | Cada 5 minutos | Consultas frecuentes, recogida de métricas de monitorización |
| */15 * * * * | Cada 15 minutos | Precalentar cachés, recogida de métricas |
| 0 * * * * | Cada hora en punto (:00) | Resúmenes cada hora, rotación de logs |
| 30 * * * * | Cada hora y media (:30) | Escalonar tareas para evitar los picos de la hora en punto |
| 0 */2 * * * | Cada 2 horas | Procesos por lotes de frecuencia media |
| 0 9 * * * | Todos los días a las 09:00 | Informe de la mañana, resumen diario por correo |
| 0 0 * * * | Todos los días a medianoche | Agregaciones de fin de día, rotación de logs |
| 0 2 * * * | Todos los días a las 02:00 | Copias de seguridad (ventana de poco tráfico) |
| 0 9 * * 1-5 | 09:00 de lunes a viernes | Avisos en días laborables, recordatorios de reunión diaria |
| 0 9 * * 1 | Lunes a las 09:00 | Informe semanal del lunes por la mañana |
| 0 2 * * 0 | Domingo a las 02:00 | Copia de seguridad semanal, limpieza semanal |
| 0 0 1 * * | Día 1 de cada mes, 00:00 | Facturación mensual, archivo mensual |
| 0 0 1 1 * | 1 de enero, 00:00 (anual) | Reinicio anual, informe de fin de año |
| 0 0 1 */3 * | Cada 3 meses, día 1 | Tarea trimestral |
| @hourly | Al principio de cada hora | Atajo de `0 * * * *` (no todos los planificadores lo admiten) |
| @daily | Cada día a medianoche | Atajo de `0 0 * * *` |
| @weekly | Domingo a las 00:00 | Atajo de `0 0 * * 0` |
| @monthly | Día 1 de cada mes, 00:00 | Atajo de `0 0 1 * *` |
| @yearly | 1 de enero, 00:00 | Atajo de `0 0 1 1 *` |
| @reboot | Al arrancar el planificador | Una vez cada vez que arranca el demonio de cron (solo cron de Unix) |
Formato estándar de 5 campos definido por el crontab de POSIX. Los atajos con @ (@hourly, @daily, etc.) son una extensión de Vixie cron que admiten la mayoría de los cron de Unix, los temporizadores de systemd en Linux mediante OnCalendar y node-cron, pero NO los CronJob de Kubernetes, GitHub Actions, AWS EventBridge ni Quartz. Usa la forma explícita de 5 campos para que funcione en todas las plataformas.