SysAdmin Tools

Cron Expression Generator

Build and validate cron job schedules visually. See human-readable explanations and preview the next 5 run times instantly.


Configure schedule fields

Generated expression

* * * * *

Common presets

Human-readable explanation

Every minute

Next 5 run times

  1. 1Fri, Jun 19, 2026, 6:52 AM
  2. 2Fri, Jun 19, 2026, 6:53 AM
  3. 3Fri, Jun 19, 2026, 6:54 AM
  4. 4Fri, Jun 19, 2026, 6:55 AM
  5. 5Fri, Jun 19, 2026, 6:56 AM

Copy formats

Crontab (crontab -e)

* * * * * /path/to/script.sh

GitHub Actions (on.schedule)

- cron: '* * * * *'
Systemd timer: Use OnCalendar= in your .timer unit file. Systemd uses its own calendar syntax (e.g. *:0/5 for every 5 minutes). Use systemd-analyze calendar to validate.

A cron expression generator lets you build, validate, and understand cron job schedules without memorising the syntax from scratch. Whether you are setting up a nightly backup, scheduling a database maintenance task, or configuring a CI pipeline trigger, getting the cron syntax exactly right is critical — a single misplaced field can mean a job runs every minute instead of once a month.

The cron format has five fields separated by spaces: minute, hour, day of month, month, and day of week. Each field accepts specific values, ranges separated by hyphens, lists separated by commas, step values using slashes, and the wildcard asterisk for "every." The combinations are powerful but easy to misread. Our cron expression builder removes the guesswork by letting you pick values from dropdowns, generating the expression automatically, and translating it into plain English using the cronstrue library.

Alongside the human-readable explanation, the tool computes the next five scheduled run times from the current moment — so you can verify immediately that your schedule behaves exactly as intended. Common presets cover the most frequent use cases: every 5 minutes, daily at midnight, every weekday at 9 AM, and more. Use the Visual Builder mode for new expressions, or paste an existing crontab expression into Raw Expression mode to validate and explain it.

The tool runs entirely in your browser — no data is sent to any server. It is compatible with standard five-field cron syntax used by crontab, GitHub Actions schedules, Kubernetes CronJobs, AWS EventBridge rules, and most Linux cron daemons.

How to Use the Cron Expression Generator

  1. 1

    Choose your mode

    Select "Visual Builder" to construct a schedule using dropdowns, or "Raw Expression" to paste an existing cron string and validate it. Both modes produce the same results section.

  2. 2

    Set the schedule fields

    In Visual Builder mode, configure the five cron fields: minute, hour, day of month, month, and day of week. Each dropdown offers wildcards, common step patterns like */5, and specific values. The generated expression updates instantly.

  3. 3

    Review the human-readable explanation

    The Results section translates your expression into plain English — for example "At 04:00 AM, only on Monday." This confirms the schedule is what you intended before you deploy it.

  4. 4

    Check the next run times

    The tool computes the next five execution dates from right now, showing exact day, date, and time. Use this to verify your job will fire at the expected intervals and not sooner or later than expected.

  5. 5

    Copy and paste into your system

    Use the Copy Formats section to copy the expression pre-formatted for crontab. Click the copy button and paste directly into your crontab file, GitHub Actions workflow, or Kubernetes manifest.

Understanding Cron Expression Fields

A cron expression consists of five whitespace-separated fields that together define when a job should run. The fields are evaluated left to right: minute, hour, day of month, month, and day of week. A job fires when all five conditions are satisfied simultaneously — so 0 9 * * 1 means "when the hour is 9, the minute is 0, on any day of the month, in any month, but only if it is Monday." The special characters extend what each field can express. The asterisk * matches any value in that field. A slash / defines step intervals — */15 in the minute field means every 15th minute (0, 15, 30, 45). A hyphen creates a range: 1-5 in the day-of-week field means Monday through Friday. Commas create lists: 6,18 in the hour field means 6 AM and 6 PM. Combining these lets you build virtually any schedule from simple to complex.
FieldDescription
MinuteValues 0–59. Controls the minute within the hour the job runs. */5 means every 5 minutes.
HourValues 0–23 in 24-hour format. 0 is midnight, 12 is noon, 17 is 5 PM.
Day of MonthValues 1–31. Specifies the calendar day. Use * for every day of the month.
MonthValues 1–12 (or names Jan–Dec). Restricts the job to specific months of the year.
Day of WeekValues 0–6 where 0 and 7 are both Sunday. 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat.

Common Cron Job Use Cases

Database backups

Schedule a database dump every night at 2 AM using 0 2 * * *. The backup script runs once daily, off-peak, giving you a fresh restore point every 24 hours with minimal impact on active users.

Log rotation and cleanup

Clear temporary files, rotate application logs, or purge old records on a schedule. 0 0 1 * * runs on the first of every month — a common cadence for monthly maintenance tasks.

Health checks and monitoring

Use */5 * * * * to run a health check every 5 minutes and send an alert if a service is down. Short intervals keep your response time low without the overhead of running continuously.

Scheduled reports and digests

Generate and email weekly summaries with 0 8 * * 1 — every Monday at 8 AM. Business stakeholders receive fresh reports at the start of the workweek automatically, no manual trigger required.

Cron Expression Generator — Frequently Asked Questions

What is a cron expression?
A cron expression is a string of five fields — minute, hour, day of month, month, and day of week — that tells the cron daemon when to run a scheduled job. Each field uses numbers, wildcards (*), ranges (1-5), lists (1,3,5), or step values (*/15). For example, */5 * * * * runs a job every 5 minutes, while 0 2 * * 1 runs it at 2 AM every Monday.
How do I write a cron expression?
Write five values separated by spaces in the order: minute hour day-of-month month day-of-week. Use * for "any value." For example, to run at 9 AM on weekdays, write 0 9 * * 1-5. Use this cron expression generator to build the expression visually if you are unsure of the syntax — set the dropdowns and copy the generated string directly into your crontab or configuration file.
What does */5 mean in a cron expression?
*/5 in the minute field means "every 5 minutes" — specifically at minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55. The slash is a step operator. */15 would mean every 15 minutes (0, 15, 30, 45). This notation works in any cron field: */2 in the hour field means every 2 hours, and */3 in the month field means every 3 months.
What is the difference between cron and crontab?
Cron is the background daemon (service) that runs on Linux/Unix systems and executes scheduled tasks. Crontab (cron table) is the configuration file that lists the scheduled jobs for a specific user. You edit your crontab with crontab -e. The cron daemon reads crontab files and runs the specified commands at the times defined by the cron expressions.
How do I run a cron job every 5 minutes?
Set the minute field to */5 and all other fields to *. The complete expression is */5 * * * *. In a crontab file: */5 * * * * /path/to/your/script.sh. This fires at minute 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 of every hour, every day.
What is the syntax order of cron fields?
The five fields always appear in this fixed order from left to right: minute (0–59), hour (0–23), day of month (1–31), month (1–12), day of week (0–6, where 0 is Sunday). A useful mnemonic is "minutes, hours, days, months, weekdays." The tool labels each dropdown to remove any ambiguity.
How do I test if my cron expression is correct?
Paste the expression into the Raw Expression mode of this tool. The human-readable explanation and next 5 run times appear immediately. Verify the run times match your expectations before deploying. Alternatively, you can use the crontab -l command on Linux to list your current cron jobs and confirm the expression was saved correctly.
Can cron run a job every second?
No. Standard cron has a minimum resolution of one minute — the most frequent schedule is * * * * * which runs every minute. For sub-minute scheduling you need a different solution: a while loop with sleep inside a shell script, a systemd timer with AccuracySec=1s, or a language-specific scheduler like Node.js setInterval or Python APScheduler.
What is the difference between 0 and * in the minute field?
0 in the minute field means "at the top of the hour" — the job only runs when the minute is exactly 0 (00:00, 01:00, 02:00, etc.). * means "every minute" — the job runs at every minute of every hour (up to 60 times per hour). So 0 * * * * runs once per hour at minute 0, while * * * * * runs every single minute.
How do I schedule a cron job for weekdays only?
Set the day-of-week field to 1-5, which covers Monday through Friday. For a job at 9 AM on weekdays the expression is 0 9 * * 1-5. For 5 PM on weekdays it is 0 17 * * 1-5. The range 1-5 means days 1 (Monday) through 5 (Friday). Saturday is 6 and Sunday is 0 or 7.

Related Tools