b2KIT

Cron Expression Generator

Build and validate cron expressions with a visual editor showing human-readable schedule descriptions.

Tested tool guide Tested browser tools Checked August 16, 2026

What Cron Expression Generator does, with a checked example

Write a cron schedule without memorizing the five-field format. The tool splits an expression into its fields - minute, hour, day of month, month, day of week - lets you set each one through a visual editor, assembles the standard crontab string, and renders a plain-language description of when the job will fire, so the schedule is validated before it reaches a server. The thing people most often get wrong: when both day-of-month and day-of-week are restricted, standard cron runs the job when either matches, not when both do. `0 0 1 * MON` fires on the 1st of every month AND on every Monday.

Worked example

A concrete input and expected output from the current implementation.

Input

0 0 1 * MON

Expected output

At 12:00 AM, on day 1 of the month, and on Monday

Day-of-month (1) and day-of-week (MON) are both restricted, so standard cron treats them as alternatives: the job fires at midnight on the 1st of each month and also at midnight every Monday - about 4 to 6 runs per month, not one.

How the result is produced

1

Field-by-field composition

Each of the five standard fields is edited separately: a fixed value, a list like 1,15, a range like 9-17, or a step like */15. The tool assembles the pieces in the fixed cron order - minute, hour, day of month, month, day of week - so the generated string is always structurally valid. Names such as MON and JAN work alongside numeric values.

2

Validation and the schedule description

Values are checked against each field's allowed range - minutes 0-59, hours 0-23, days 1-31, months 1-12, weekdays 0-7 where 0 and 7 both mean Sunday - and out-of-range input is flagged. The readable description is produced by expanding the expression field by field: ranges are inclusive, steps list every matching value, and a restricted day-of-month combined with a restricted day-of-week renders as an either/or.

Good uses

  • Setting up a recurring job on a Linux or macOS server - a nightly backup, a weekly report email - when you want a crontab line you can paste without reconstructing the field order from memory.
  • Decoding an existing crontab entry left by a previous engineer, like `23 1-23/3 * * *`, to confirm in plain language when it actually fires before editing or keeping it.
  • Catching the day-of-month/day-of-week trap: before deploying a schedule that restricts both day fields, check whether the description shows two separate triggers (1st of month AND every Monday) instead of one.

Limits and checks

  • The either/or day rule. When both day-of-month and day-of-week are restricted, standard cron fires when either matches, so the description shows two independent triggers. If your target scheduler uses different semantics - Quartz requires a '?' in one of the two day fields - verify against its own documentation.
  • Dialect drift. The five-field format is standard cron; the six- and seven-field Quartz format adds seconds first and an optional year, and numbers weekdays 1-7 with Sunday as 1. An expression that reads correctly in one dialect can shift a schedule by a day or be rejected in another.
  • Inclusive ranges and impossible dates. A range includes both endpoints, so `9-17` still fires at 17:45. Cron never errors on a date that cannot exist: `0 0 30 2 *` (February 30) is accepted and simply never runs. 'Last Friday of the month' needs Quartz's L or # syntax, which standard cron lacks.

Common questions

Why does my schedule that should run on the 1st and every Monday fire more often than I expected?

Because standard cron treats the two day fields as alternatives. With both restricted, the job runs at the set time on the 1st of each month and again on every Monday - about 4 to 6 times a month. A single standard expression cannot express 'only when both match'; add a weekday check inside the command itself.

Can it generate expressions with seconds, like Quartz-style cron?

Standard cron has no seconds or year fields, so a five-field expression is all the common crontab accepts. If the target scheduler runs Quartz or Spring, which read seconds first and an optional year, check whether this tool offers that dialect before trusting the string - otherwise paste it into a Quartz-specific editor.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools