Cron Expression Generator

Valid cron schedule expressions with human description

Build valid 5-field cron expressions for common schedules: hourly, daily, weekly, monthly, and business hours. Each expression comes with a plain-English description so you can configure schedulers with confidence. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

What cron format does this use?

It uses the standard 5-field Unix format: minute, hour, day-of-month, month, and day-of-week. This is what crontab, most CI systems, and Kubernetes CronJobs expect, so the output drops straight in.

What this tool does

The Cron Expression Generator produces valid 5-field cron expressions for the schedules people actually need — hourly, every few minutes, daily at a time, weekly on a day, monthly on a date, and weekday business hours — each paired with a clear English description. It turns “I think the fields go minute, hour, day…” into a copy-paste-ready schedule.

How it works

A cron expression has five space-separated fields: minute, hour, day-of-month, month, and day-of-week. The generator builds each preset by filling the relevant fields and leaving the rest as * (every value). For example, daily-at-time sets a minute and hour with * for the date fields; every-15-minutes uses the step form */15 in the minute field; business-hours uses the range 9-17 in the hour field and 1-5 (Mon–Fri) in day-of-week. The human-readable line is derived directly from those field values, so it always matches the expression.

All generation happens locally in your browser.

Understanding the five fields

  minute   hour   day-of-month   month   day-of-week
  ──────   ────   ────────────   ─────   ───────────
  0-59     0-23   1-31           1-12    0-6 (0=Sun)

An asterisk (*) in any field means “every valid value for that field.” The most common special characters beyond *:

CharacterMeaningExample
*/nEvery n units*/15 in minute = every 15 minutes
a-bInclusive range9-17 in hour = 9 am through 5 pm
a,b,cList of values1,3,5 in day-of-week = Mon, Wed, Fri
a/nStarting at a, every n0/30 in minute = at :00 and :30

Common expressions with explanations

0 * * * *          Every hour, on the hour
*/15 * * * *       Every 15 minutes
0 9 * * 1-5        At 9 am, Monday through Friday
0 0 1 * *          At midnight on the first of every month
0 2 * * *          At 2 am every day (common for nightly batch jobs)
30 8 * * 1         At 8:30 am every Monday
0 9-17 * * 1-5     Every hour during business hours on weekdays

Timezone gotcha

Cron runs in the timezone of the system or scheduler interpreting it. This causes real bugs:

  • Linux crontab uses the system timezone, which is often UTC on servers.
  • GitHub Actions runs in UTC by default.
  • Kubernetes CronJob also uses UTC.
  • Railway and most hosted platforms run in UTC.

If you want a job to run at 9 am London time and the scheduler uses UTC, you need to account for the offset (0 or +1 in summer). Always document the timezone assumption next to the expression — future-you will thank present-you.

Where these expressions work

The standard 5-field syntax is supported by:

  • Unix/Linux crontab
  • GitHub Actions (on.schedule.cron)
  • Kubernetes CronJob (spec.schedule)
  • AWS EventBridge scheduled rules (uses the same syntax)
  • Most task schedulers and hosted cron services

Some platforms (AWS CloudWatch Events, Google Cloud Scheduler) use a 6-field format adding seconds or years. The expressions here are 5-field only.