Cron Expression Builder

Cron syntax (five fields for minute, hour, day, month, and weekday) is compact enough that even experienced developers regularly have to double-check whether 0 */2 * * * means "every 2 hours" or something else. This builds expressions visually, decodes existing ones into plain English, and shows the actual next several run times so you can confirm the schedule does what you think before deploying it.

Quick presets

0=Sun, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat

0 9 * * 1-5

At 09:00 AM, Monday through Friday

Next 5 runs

1Fri, Aug 7, 2026, 09:00 AM
2Mon, Aug 10, 2026, 09:00 AM
3Tue, Aug 11, 2026, 09:00 AM
4Wed, Aug 12, 2026, 09:00 AM
5Thu, Aug 13, 2026, 09:00 AM
Cron syntax reference
SymbolMeaning
*Any value
5Exact value (e.g., minute 5)
1-5Range (e.g., Monday through Friday)
*/15Every 15th (e.g., every 15 minutes)
1,15List (e.g., 1st and 15th)
1-5/2Range with step (1, 3, 5)

How to use the Cron Expression Builder

  1. Use the visual editor to select values for each cron field: minute, hour, day of month, month, and day of week.
  2. Alternatively, paste an existing cron expression to decode it.
  3. Read the plain-English description to confirm the schedule matches your intent.
  4. Review the list of upcoming run times to verify the timing is correct.
  5. Copy the cron expression for use in your server, CI/CD pipeline, or scheduling system.

The classic day-of-month vs. day-of-week trap

Cron's day-of-month and day-of-week fields are combined with OR logic, not AND, when both are restricted. A schedule like 0 0 15 * 1 doesn't mean "the 15th, if it's a Monday," it means "the 15th of every month, OR every Monday," which surprises almost everyone the first time they hit it. If you actually want "the 15th, only if it's a Monday," cron alone can't express that. You'd need to check the day-of-week inside the job itself and exit early if it's wrong.

Frequently asked questions

What does */2 mean in a cron field?

A step value. */2 in the hour field means "every 2 hours" (0, 2, 4, 6...); the same syntax works in any field to mean "every Nth unit."

Does cron use 0- or 1-indexed days/months?

Months are 1–12; day-of-week is typically 0–6 with 0 as Sunday (though some systems also accept 7 for Sunday). This inconsistency is a frequent source of off-by-one scheduling bugs.

How do I combine day-of-month and day-of-week correctly?

You generally can't directly with standard cron syntax when you want a strict "this date AND this weekday" rule. Set one field to * and handle the additional condition in your job's own logic instead.