All tools

Cron Expression Builder

Build and explain cron expressions in plain language

Human readable: at 09:00, on Mon–Fri
#16/15/2026, 9:00:00 AM
#26/16/2026, 9:00:00 AM
#36/17/2026, 9:00:00 AM
#46/18/2026, 9:00:00 AM
#56/19/2026, 9:00:00 AM

How it works

Cron Expression BuilderBuild and explain cron expressions in plain language. All processing happens in your browser — no upload, no signup, no email required. Free forever.

Last updated:

About Cron Expression Builder

Cron expressions are deceptively simple — five fields separated by spaces, and yet "every weekday at 9 AM" versus "every 9 minutes" hides behind two characters that are easy to misplace. This cron expression builder lets you set each field with a dropdown, hands you a plain-language explanation, and shows the next several scheduled runs so you can confirm "yes, that really fires Monday through Friday" before you commit it to crontab.

There are two main flavours of cron in the wild. The classic POSIX/Vixie cron used by Linux crontab, GitHub Actions schedules and Kubernetes CronJob has five fields: minute, hour, day-of-month, month, day-of-week. The six-field variant used by Quartz, Spring's @Scheduled and AWS EventBridge prepends a seconds field. This tool generates the standard 5-field expression — perfect for crontab, GitHub Actions and most container schedulers.

Use the preset shortcuts (every 5 minutes, every hour, daily, weekly, monthly) when you just need a common pattern, or fall through to manual field editing when your job needs something unusual like "every 15 minutes between 9 and 17, weekdays only". Either way you get instant validation and human-readable confirmation, so you do not have to wait until 3 AM to discover the asterisk should have been a slash.

How to use Cron Expression Builder

  1. Pick a preset (every minute, every 5 minutes, every hour, daily, weekly, monthly) for common schedules.
  2. Or build manually by editing the Minute, Hour, Day of month, Month and Day of week fields.
  3. Watch the "Human readable" sentence update so you know exactly what the expression means.
  4. Check the "Next runs" list — these times are computed in your local timezone and tell you when the job will fire next.
  5. Copy the final five-field expression and paste it into your crontab, GitHub Actions workflow or Kubernetes manifest.

Common use cases

  • Writing a GitHub Actions "schedule:" trigger for a nightly build or a weekly dependency update job.
  • Configuring a Kubernetes CronJob for a periodic database backup or cache warmer.
  • Setting up server-side cron for log rotation, certificate renewal reminders, or report emails.
  • Translating a vague product requirement ("every weekday morning") into the exact "0 9 * * 1-5" expression.
  • Debugging an existing cron entry by pasting it in and reading the human-readable explanation back.

Tips & common mistakes

  • Day-of-month and Day-of-week are OR'd together in standard cron — "0 9 1 * 1" fires at 9 AM on the 1st of every month AND every Monday. Leave one of them as "*" to avoid surprises.
  • Quartz and Spring use a 6- or 7-field form (with seconds and optional year). This tool emits 5-field cron — strip or prepend fields as your platform expects.
  • GitHub Actions cron runs in UTC. The "Next runs" times shown here are local — convert if you need them to align with a UTC schedule.
  • Avoid scheduling many jobs at "0 0 * * *" exactly — every server in the world fires at midnight UTC, and shared infrastructure feels it. Stagger by a few minutes.

Frequently asked questions

Which cron format does this use?

Standard 5-field POSIX cron: minute, hour, day of month, month, day of week. Vixie-style step (*/n), ranges (1-5) and lists (1,3,5) are all supported.

Are predicted run times accurate to my timezone?

Yes. Next-run calculation uses your browser's local clock, so the suggested times match what cron would do on a machine set to your timezone.

How can I run something every weekday at 9 AM?

Use '0 9 * * 1-5'. The first 0 means minute 0, 9 means 9 o'clock, the two * cover any day-of-month and any month, and 1-5 means Monday through Friday.

Does this output 5-field or 6-field cron?

Standard 5-field POSIX cron: minute, hour, day-of-month, month, day-of-week. That is the format crontab, GitHub Actions, Kubernetes CronJob and most Unix schedulers use. For 6-field (Quartz, Spring) or 7-field (with year) you'll need to add the leading seconds field manually.

Are special strings like @hourly or @daily supported?

We emit the equivalent numeric expression (e.g. "0 * * * *" instead of @hourly) because numeric form is universally supported. If your scheduler accepts the @ aliases, you can substitute them by hand.

What about non-standard step ranges like "5-50/10"?

Yes, Vixie-style steps work — "*/15" for every 15 minutes, "5-50/10" for minutes 5, 15, 25, 35, 45. The human-readable line will describe exactly what the expression matches.

Latest from the blog

Related tools