Cron Expression Generator & Explainer
Type or paste a cron expression to read it in plain English and see exactly when it will run next. Includes ready-to-paste snippets for a Kubernetes CronJob and a GitHub Actions schedule.
Free, no signup. Runs entirely in your browser; nothing you enter is sent anywhere.
“At 09:00, Monday through Friday”
Calculating…
apiVersion: batch/v1
kind: CronJob
metadata:
name: my-job
spec:
schedule: "0 9 * * 1-5"
timeZone: "Etc/UTC"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: job
image: busybox:1.36
command: ["sh", "-c", "date"]on:
schedule:
- cron: "0 9 * * 1-5" # always UTCHow to read a cron expression
A standard cron expression has five fields: minute hour day-of-month month day-of-week. Each field takes a single value (5), a list (1,15), a range (1-5), a step (*/15) or * for every value. Months and weekdays also accept names such as JAN and MON, and both 0 and 7 mean Sunday.
The rule that trips people up: when both day-of-month and day-of-week are restricted, cron runs when either matches. 0 0 1 * 1 runs on the 1st of every month and every Monday, not only on Mondays that fall on the 1st. This tool follows that rule, so the next-run list shows what cron will really do.
Time zones: where schedules go wrong
GitHub Actions schedules always run in UTC, and scheduled workflows can start late when GitHub is busy, so don't rely on them for exact timing. Kubernetes CronJobs use the controller's time zone unless you set spec.timeZone; set it explicitly so a cluster migration doesn't silently move your 02:00 backup. If you're choosing between cron and systemd for a host, read systemd timers vs cron.
Questions people ask
What does */5 * * * * mean in cron?
It runs every 5 minutes: at minute 0, 5, 10 and so on, every hour of every day. The */5 in the minute field means every fifth value starting from 0.
How do I run a cron job every weekday at 9 a.m.?
Use 0 9 * * 1-5. The 0 is the minute, 9 is the hour, and 1-5 in the day-of-week field means Monday through Friday. Check which time zone your scheduler uses: GitHub Actions uses UTC.
What time zone do GitHub Actions cron schedules use?
Always UTC. A schedule of 0 9 * * * runs at 09:00 UTC, which is a different local time in summer and winter for most of the world. Convert your intended local time to UTC when writing the expression.