EasyDeveloper

Cron Expression Generator

Assemble a cron expression from field selectors with a live description and next-run preview.

Local ProcessingYour data stays in your browser. Nothing is uploaded.

A cron expression compresses a schedule into five fields - minute, hour, day of month, month, day of week - and getting one wrong means a job that runs every hour instead of every day, or never. This generator removes the syntax guesswork with drop-downs for each field, a set of common presets, and a plain-English description that updates as you choose.

Pick a minute schedule, an hour, and optionally a specific day of month or day of week, and the expression assembles itself. Six presets cover the everyday cases - every five minutes, hourly, daily at nine, weekdays, the first of the month - and any combination you build is described in words beneath the expression.

The next five runs are computed from the current time, so you see immediately whether your schedule fires when you expect. Everything runs locally in your browser, and no schedule is uploaded or stored.

Presets:
*/15 * * * *at minutes 0, 15, 30, 45, every hour, every day of month, every month, every weekday.
Next 5 runs
  • 1.8/15/2026, 7:00:00 PM
  • 2.8/15/2026, 7:15:00 PM
  • 3.8/15/2026, 7:30:00 PM
  • 4.8/15/2026, 7:45:00 PM
  • 5.8/15/2026, 8:00:00 PM

Features

  • Five field drop-downs assemble the expression with no typing.
  • Six ready-made presets for common schedules.
  • Plain-English description of the schedule that updates live.
  • Next five runs computed from the current moment.
  • Copy button for the final expression.
  • Refresh to recompute runs against the current time.
  • Fully offline - nothing leaves your browser.

How to Use

  1. 1

    Choose the fields

    Select minute, hour, and optionally day of month, month and day of week from the drop-downs. The expression updates as you go.

  2. 2

    Use a preset

    Press a preset such as "Weekdays 09:00" to fill all five fields at once, then adjust any field you want to change.

  3. 3

    Read the description

    The generated expression is shown with a plain-English explanation, so you can verify it matches your intent before using it.

  4. 4

    Preview the runs

    The next five execution times appear below. Press Refresh to recompute them against the current time.

Example

Weekday morning job

Preset: Weekdays 09:00

0 9 * * 1-5  →  "At 09:00 on Monday through Friday"

Frequent polling

Minute: */15 · Hour: * · others: *

*/15 * * * *  →  runs every 15 minutes, 96 times a day

Common Problems

Day-of-month and day-of-week OR logic

In the standard five-field cron, when both the day-of-month and day-of-week fields are restricted, the job runs on either - not both. The generator and its description make this behavior explicit.

Minute field semantics

The minute field is the smallest unit in five-field cron. There is no "every second" option; the tightest schedule is every minute. If you need seconds, you need a six-field dialect.

Gaps around */n

With step expressions the run times are offset from zero, so */7 on the minute fires at :00, :07, :14 and so on, not evenly from the moment you generate it.

Timezone dependence

A cron expression names local wall-clock times. The next-run preview uses your browser zone, but the deployed job will fire according to the server zone. Keep them aligned or the times will drift.

"Daily at 09:00" surprises

Presets apply to every day unless you restrict the day-of-week field. If you meant weekdays only, use the weekday preset or set day-of-week to 1-5.

Overlapping day-of-month ranges

Months have different lengths, so "on day 31" simply never fires in short months. The preview of next five runs will reveal the gap if a schedule is too restrictive.

Lists versus ranges

A comma list names individual values while a dash is a range, so 1,15 means "the 1st and the 15th" and 1-15 means "every day from the 1st through the 15th". The generator emits exactly what you select, so read the field back before deploying.

Step values on non-multiple ranges

A step like */20 on the minute runs at :00, :20 and :40, then skips to the next hour - it does not wrap partway. If you expect a different cadence, pick a step that divides evenly.

The every-N trap in day fields

With day-of-month set to a step such as */2, the job fires on even days of the month, but month lengths vary so the gap is not constant across month boundaries. The next-run preview makes the unevenness visible.

Technical Details

The generator assembles a five-field expression - minute hour day-of-month month day-of-week - with day of week accepting 0 and 7 for Sunday, following the Vixie/ISC convention.

Step syntax */n is emitted for the minute and hour fields, keeping the expression compact while meaning "every n units from zero".

The plain-English description is produced by the same parser that validates the expression, so the words always match the fields exactly.

The next-run preview scans forward minute by minute from the current time, honoring lists, ranges, steps and the day-of-month/day-of-week OR rule, with a generous horizon that catches even monthly schedules.

The generated expression is validated by the same parser before display, so an assembled combination can never produce an invalid five-field string - every preset and selection round-trips cleanly.

Field selections map to canonical cron tokens: arbitrary values emit as plain numbers, common intervals as */n steps, and weekday-only schedules as 1-5 ranges, keeping the expression minimal and portable.

Everything runs locally and synchronously in the browser. No schedule, expression or time is transmitted or stored.

Frequently Asked Questions

What is a five-field cron expression?

Five space-separated fields: minute (0-59), hour (0-23), day of month (1-31), month (1-12) and day of week (0-6, where 0 and 7 are Sunday). Each field can be a value, a list, a range, a step, or an asterisk.

Can I build "every second" here?

No - five-field cron has no seconds field. The tightest schedule is every minute. Systems that need second-level jobs use a six-field dialect, which this generator does not produce.

Why do the next-run times use my local zone?

Cron schedules are wall-clock by nature. The preview is computed in your browser zone; on a real server the same expression is evaluated in the server zone, so keep the two aligned.

What happens if day-of-month and day-of-week are both set?

Standard cron ORs them: the job fires on matching days of the month OR matching days of the week. The description pane spells this out so the schedule is never ambiguous.

Does this tool save my schedule?

No. The expression is assembled and previewed entirely in your browser and nothing is transmitted, stored or logged. You take the finished expression with you.

Where can I use the generated expression?

Anywhere standard cron is supported - crontab files, CI scheduling, cloud cron, or a scheduler library. The format is portable across these systems.

Data & Privacy

Your data stays in your browser. Nothing is uploaded.

Processing
Local
Upload
None
Server Storage
None
Account
Not required