cron expression generator

How to use the cron expression generator

  1. Pick how often the job should run from preset templates (every minute, hourly, daily, weekly, monthly) or build a custom schedule from scratch.
  2. Use the visual fields to set minute, hour, day-of-month, month, and day-of-week individually.
  3. The cron expression updates live in the output box — copy it straight into your crontab, GitHub Actions schedule, or systemd timer.
  4. Read the human-readable description below the expression to sanity-check what you built (e.g., "Every Monday at 03:30").
  5. Test edge cases by viewing the next 5 runs the expression would produce.

When to use it

Reach for it when scheduling backups, cleanup jobs, cron triggers in GitHub Actions / GitLab CI / Vercel Cron, or systemd timers. Cron syntax is famously easy to get wrong — the visual builder + next-runs preview catches the most common mistakes. Alternative: crontab.guru is the classic web reference; this tool adds a build-from-scratch UI and the next-runs preview.

Example

Common cron expressions:

0 0 * * *       — every day at midnight
*/15 * * * *    — every 15 minutes
0 9 * * 1-5     — weekdays at 9 AM
30 3 1 * *      — 3:30 AM on the 1st of every month
0 */6 * * *     — every 6 hours

Frequently asked questions

What does the cron expression `0 0 * * *` mean?
Run the job at minute 0 of hour 0, every day, every month, on any day of the week — i.e., daily at midnight (server time).
What's the difference between `*/5` and `0,5,10,15`?
Functionally equivalent for most fields. `*/5` is shorter and means "every 5". `0,5,10,15` is an explicit list. Use whichever your environment supports — some legacy crons don't accept step syntax.
Why does my cron job run an hour late twice a year?
Daylight saving time. The clock skips or repeats one hour. For DST-sensitive jobs, run them in UTC or use a scheduler that handles it (systemd timers, Kubernetes CronJobs in `Etc/UTC`).
Does GitHub Actions support 6-field cron with seconds?
No — GitHub Actions uses POSIX 5-field cron (minute, hour, day-of-month, month, day-of-week). Quartz-style 6-field expressions don't work there. The builder defaults to 5-field.
How do I run a job on the last day of the month?
Standard cron has no `L` (last) syntax. Run the job daily and check `[ "$(date -d tomorrow +%d)" = "01" ]` inside the script — or use a scheduler like Quartz that supports `L` natively.
Can I schedule a job for 'every weekday at 9 AM'?
Yes: `0 9 * * 1-5`. Day-of-week 1-5 = Monday through Friday (0 or 7 = Sunday in standard cron).

Related tools

Last updated: 2026-04-27