Developer

Cron Expression Generator

Build 5-field cron expressions quickly

Loading interactive tool…

Embed this tool on your site

About this tool

Cron Expression Generator on UtilityKit builds 5-field cron expressions through a point-and-click interface — no memorizing field order or step syntax. Cron is the standard scheduling mechanism on Linux and Unix, used by crontab, GitHub Actions on.schedule, Kubernetes CronJobs and many CI/CD platforms. The five fields — minute, hour, day of month, month, and day of week — accept specific values and step syntax (*/5), but the rules are easy to get wrong from memory. This tool replaces memorization with dropdowns: pick a value per field, watch the expression assemble live, and read a plain-English summary of the chosen options. Each dropdown offers a fixed set of common values: minute 0, 15, 30 or 45 or every 5 or 10 minutes; a few set hours or every 2 hours; the 1st or 15th of the month; January, April, July or December; and any single weekday. Copy the expression from the read-only field and paste it into a crontab line, YAML workflow, or Terraform resource.

Why use it

  • Visual Field-by-Field Builder: Dropdowns for each of the five cron fields eliminate the need to memorize field order or step syntax — the correct expression assembles automatically as you select options.

  • Plain-English Schedule Explanation: Every change to a dropdown immediately updates a human-readable description of when the schedule runs — so you can confirm 'Runs with schedule: Every 5 minutes, Every hour, Every day…' before copying.

  • Fewer Typing Errors: The builder assembles the expression from its preset options, so field order and step syntax are always right. One exception: 'Last day (Unix-like)' inserts L, which standard 5-field cron does not accept.

  • Covers All Five Standard Fields: Minute, hour, day of month, month, and day of week are all configurable — the same 5-field format used by Linux crontab, GitHub Actions, Kubernetes CronJobs, and AWS EventBridge.

  • Easy to Copy: The generated expression sits in a read-only field you can select and copy — paste it directly into a crontab line, YAML workflow, or Terraform resource without reformatting.

  • No Installation, No Sign-Up, Works Offline: The builder runs entirely in the browser. There is no library to install, no account to create, and no Internet connection required after the page loads.

How to use

  1. Select a value from the Minute dropdown — choose 'Every minute' for * or pick a specific minute or step like 'Every 5 minutes' for */5.
  2. Select a value from the Hour dropdown — choose 'Every hour' for *, a specific hour (e.g. '09:00'), or a step like 'Every 2 hours' for */2.
  3. Select a value from the Day of month dropdown — choose 'Every day' for *, Day 1 or Day 15, or 'Last day (Unix-like)', which inserts L (not accepted by standard cron).
  4. Select a value from the Month dropdown — choose 'Every month' for *, or January, April, July or December.
  5. Select a value from the Day of week dropdown — choose 'Any day' for * or a specific weekday (Monday through Sunday).
  6. Copy the generated expression from the output field and paste it into your crontab, GitHub Actions workflow, AWS EventBridge rule, or any other cron-compatible scheduler.

When it helps

  • When setting up a cron job on a Linux server and you want to verify the expression before writing it to the crontab to avoid an off-by-one scheduling mistake.
  • When writing a GitHub Actions workflow with an on.schedule trigger and need the correct cron string for a specific weekday-and-time pattern.
  • When configuring an AWS EventBridge rule, a Kubernetes CronJob, or a Heroku Scheduler entry and the UI accepts a raw cron expression.
  • When you need a monthly or yearly schedule, such as 09:00 on the 1st of each month or midnight on 1 January, and want the field order right.
  • When scheduling a recurring backup, report, or cleanup job and need to quickly try different frequencies (every 5 minutes vs every hour vs nightly) to pick the right cadence.
  • When onboarding a teammate who is unfamiliar with cron syntax and you want to show them a live-updating builder that makes the five-field format intuitive.

Examples

Run a database backup every day at midnight

Input
Minute: 0, Hour: 0, Day: *, Month: *, Weekday: *
Expected result
0 0 * * * — runs at 00:00 every day (server timezone)

Send a weekly report every Monday at 9 AM

Input
Minute: 0, Hour: 9, Day: *, Month: *, Weekday: Monday
Expected result
0 9 * * 1 — runs at 09:00 on every Monday

Poll an API endpoint every 5 minutes

Input
Minute: */5, Hour: *, Day: *, Month: *, Weekday: *
Expected result
*/5 * * * * — runs at minutes 0, 5, 10, 15 … 55 of every hour

Tips

  • GitHub Actions schedules run on UTC. If you want a job at 9 AM Eastern (UTC-5), set the hour field to 14 — and remember to adjust by 1 hour during daylight saving time (set to 13 for EDT, UTC-4).
  • Avoid scheduling expensive jobs at exactly midnight (0 0 * * *) — many systems do the same and server load spikes. Offset by a few minutes (e.g. 5 0 * * *) to spread the load.
  • To run a job on the last day of every month, the 'Last day' preset generates the L value. Note that L is a Quartz extension; standard Linux cron does not support it — use 28 or a wrapper script instead for maximum compatibility.
  • The plain-English explanation below the expression is the quickest way to sanity-check a schedule before deploying. Read it aloud: 'Runs with schedule: Every 5 minutes, Every hour, Every day…' confirms the cadence immediately.
  • For a weekday-only schedule (Monday to Friday), pick any single weekday, copy the expression, and change the last field to 1-5 by hand — standard cron accepts ranges, but the dropdown offers only single days.

Frequently Asked Questions

Which cron format does this tool generate?
The tool generates standard 5-field Unix cron expressions in the format: minute hour day-of-month month day-of-week. This format is used by Linux crontab, GitHub Actions on.schedule, Kubernetes CronJobs, AWS EventBridge (with slight variations), and most CI/CD platforms.
What does */ mean in a cron expression?
The */ syntax means 'every N units'. For example, */5 in the minute field means 'every 5 minutes' (at 0, 5, 10, 15, … 55). */2 in the hour field means 'every 2 hours' (at 0, 2, 4, … 22).
What is the difference between day of month and day of week?
Day of month (1–31) specifies which calendar day within a month to run. Day of week (0–6, Sunday=0) specifies which day of the week. When both are set to specific values (not *), most cron implementations trigger on either condition being met, which can cause double-runs.
Does it support GitHub Actions cron syntax?
Yes. GitHub Actions uses the same 5-field UTC cron format. Paste the generated expression directly into the cron field under on.schedule. Note that GitHub Actions runs on UTC, so adjust your hour field for your timezone offset.
Does the tool support advanced syntax like L (last), W (nearest weekday), or # (nth weekday)?
The tool supports numeric values, the * wildcard and step syntax (*/N) through its presets. Day of month also offers 'Last day (Unix-like)', which inserts the Quartz-style L; standard 5-field cron (crontab, GitHub Actions, Kubernetes) rejects L. W and # are not available.
How do I schedule a job for every 15 minutes?
Every 15 minutes is not one of the Minute presets (they include every 5 and every 10 minutes). Build */5 * * * * with the dropdowns, copy it, and change */5 to */15 by hand; */15 * * * * runs at minutes 0, 15, 30 and 45 of every hour.
Why did my cron job run at the wrong time?
The most common cause is a timezone mismatch. System cron and most cloud schedulers run on the server's timezone (often UTC). If your expression is based on local time, add or subtract your UTC offset from the hour field.
Is Cron Expression Generator free to use?
Yes. Cron Expression Generator on UtilityKit is completely free with no account, no sign-up, and no usage limits.

Explore the category

Glossary

Cron expression
A string of five space-separated fields that specifies a recurring schedule for a cron job. The fields in order are: minute, hour, day of month, month, and day of week.
Wildcard (*)
In a cron field, * means 'every valid value'. For example, * in the hour field means 'every hour from 0 to 23'.
Step syntax (*/N)
Divides the valid range by N and triggers at each step. For example, */15 in the minute field triggers at 0, 15, 30, and 45 — every 15 minutes.
Crontab
The file (or the crontab -e editor command) on a Linux or Unix system where cron jobs are defined. Each line contains a 5-field schedule expression followed by the command to run.
UTC offset
The difference in hours between a local timezone and Coordinated Universal Time. Cloud schedulers typically operate on UTC, so hour-based cron expressions must account for the offset between UTC and the intended local time.
5-field cron format
The standard Unix cron format with fields for minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, Sunday=0 or 7). Used by Linux cron, GitHub Actions, Kubernetes CronJobs, and most schedulers.
A LITTLE HELP. A LOT DONE.
Good tools.
Great flow.

Your shortcut to the everyday. Create, convert, calculate,
and get back to what you love.

✓ Free to use✓ No sign-up✓ 500+ possibilities