Skip to content
AZ Tools

Cron Expression Builder

Build a cron expression by clicking — hourly, daily, weekly, monthly, or fully custom — pairs with the Cron Explainer.

Frequency
Cron expression

0 9 * * *

Plain language: Every day at 09:00

How to use

  1. Pick a frequency.
  2. For 'every day' / 'every week' / 'every month', set the hour, minute, weekday, or day-of-month.
  3. For totally custom schedules, switch to Custom and edit each field directly.
  4. Copy the cron expression.

About this tool

Show

Pick a frequency (every minute / hour / day / week / month / custom) and the tool generates the 5-field cron expression for you, with a plain-language description that always matches. Custom mode exposes all five fields if you need fine-grained control. The output is standard POSIX cron — works with crontab, GitHub Actions, Vercel Cron, Cloudflare Cron Triggers, and most schedulers.

The five fields are minute, hour, day-of-month, month and day-of-week, and the one that trips people up is the relationship between the two day fields. When both are restricted, cron runs the job when either matches, not when both do. 0 0 13 * 5 is not "Friday the 13th" — it fires on every 13th and on every Friday. Expressing a real conjunction needs a day-of-week-only schedule plus a date check inside the job itself.

Day-of-week numbering is another trap, because implementations disagree. POSIX cron counts Sunday as 0, accepts 7 as Sunday too, and Vixie cron takes three-letter names. Quartz and the Java schedulers built on it use a six or seven field form with Sunday as 1, so an expression copied from a Spring example into a crontab lands a day off. This tool emits the five-field POSIX form, which is what the schedulers listed above expect.

Nothing in a cron expression carries a time zone. The fields describe local time on whatever machine runs the daemon, so a schedule is silently correct until daylight saving moves: an hour that repeats fires the job twice and an hour that is skipped never fires it at all. Hosted schedulers usually resolve this by running in UTC regardless of your account settings, which is worth confirming before scheduling anything near midnight.

Frequently asked questions

Which cron syntax is this?

Standard 5-field POSIX cron — minute, hour, day-of-month, month, day-of-week. The same format used by crontab and most modern serverless schedulers.

Can I express 'every Monday and Wednesday at 9am'?

Yes — switch to Custom and set day-of-week to '1,3'. The Cron Explainer tool will translate it back into 'At 09:00 on Monday and Wednesday' so you can sanity-check.

Why is day-of-month / day-of-week confusing together?

In standard cron these are OR'd: '0 9 1 * 1' means 1st of the month OR every Monday at 9. Most schedulers honor this rule; a few quirky ones don't. Test in your target system.

What about seconds?

Standard cron doesn't have a seconds field — its smallest grain is one minute. For second-level granularity you'd use Quartz cron (6/7 fields), which this tool doesn't generate.

Guides on this topic

Related tools