100% Client-Side WASMZero Remote NetworkVerified Spec

Cron Expression Generator

Interactive Studio

Build a 5-field cron expression from minute, hour, day, month, and weekday fields, with a plain-English description. Instant feedback with zero server storage.

Loading tool…

About Cron Expression Generator

A cron expression schedules recurring jobs using five space-separated fields, in order: minute, hour, day of month, month, and day of week. Each field accepts a specific number, an asterisk meaning "every," or (in most cron implementations) ranges and step values like 1-5 or */15. This generator builds the expression field by field and translates it back into a plain-English sentence so you can sanity-check what you actually configured before pasting it into a crontab, a CI pipeline, or a task scheduler.

The tricky part of cron isn't the syntax, it's the interaction between day-of-month and day-of-week: when both fields are restricted (not left as *), most cron implementations run the job if either condition matches, not only when both match — a frequent source of jobs firing on unexpected days. It's also worth remembering that cron typically runs in the server's local time zone or UTC, not the time zone of whoever wrote the expression, and that minutes and hours use 24-hour, zero-indexed values.

This is useful any time you're setting up a scheduled task — a nightly backup, a report that emails every Monday morning, a cache warm-up every 15 minutes — and want to verify the expression matches your intent before it goes live somewhere you can't easily watch it run.

How to use Cron Expression Generator

  1. Set each of the five fields: minute, hour, day of month, month and day of week.
  2. Use a number for a fixed value, * for every value, a range like 1-5, or a step like */15.
  3. Read the plain-English description to check it matches your intent.
  4. Copy the expression into your crontab, CI scheduler or job runner.

Worked examples

Input: */15 * * * *

Result: Every 15 minutes.

Input: 30 2 * * 1-5

Result: At 02:30 on Monday through Friday.

Input: 0 0 1 * *

Result: At midnight on the first day of every month.

Background

Standard cron has five fields: minute (0-59), hour (0-23), day of month (1-31), month (1-12) and day of week (0-7, where 0 and 7 are Sunday). A job runs when all fields match, with one catch: in most implementations, if both day-of-month and day-of-week are restricted, the job runs when either matches.

Cron runs in the server's time zone. Some platforms, such as Quartz and certain cloud schedulers, add a seconds field or use different syntax, so confirm what your system expects.

Common mistakes

  • Writing 0 */1 instead of * when you want every minute. The first runs once an hour.
  • Forgetting the server time zone, so jobs run at an unexpected local time.
  • Restricting both day of month and day of week and expecting both to apply.

Frequently Asked Questions

What does an asterisk (*) mean in a field?
It means 'every' for that field — an asterisk in the hour field matches every hour, in the day-of-week field it matches every day of the week, and so on.
What happens if I set both day-of-month and day-of-week?
In standard cron behavior, when both fields are restricted (not *), the job runs if either condition is satisfied, not only when both match at once — a common source of confusion when scheduling 'the 1st of the month, but only on a Monday' type rules.
What time zone does the schedule use?
Cron itself has no concept of time zone — it runs against whatever clock and time zone the host system (or scheduler service) is configured with, which is often UTC on servers.

Fast, local-first developer micro-tools with zero tracking or latency.

Browse All Tools
Local-First Architecture: Toolium parses payloads exclusively in browser memory. Zero network telemetry.
⌘C Copy⌘K Palette