cronkit.org
Cron expressions, explained and converted — in your browser

Cron expressions, explained

28 cron tools · 13 dialects · everything runs in your browser

Paste a cron expression to read it in plain English and see exactly when it will run, in any time zone, with daylight-saving changes handled the way cron handles them. Then convert it for Quartz, AWS EventBridge, Kubernetes, GitHub Actions, systemd, Windows or your calendar — every conversion is checked against the original run by run.

Runs

Try one

Explain / Test

  • Cron expression parserPlain-English meaning, a field-by-field breakdown and the next runs.
  • Next run calculatorNext or previous runs in any time zone, or every run between two dates.
  • Cron validatorCheck one expression against 13 cron dialects at once.
  • Schedule visualizerWeek heatmap and month calendar of when a job fires.
  • Cron diffCompare two schedules run by run and see what only one of them does.
  • Overlap checkerFind the minutes where several jobs start at the same time.
  • Crontab checkerLint a whole crontab: unescaped %, PATH, DST hours, missing newline.
  • Crontab viewerA crontab as a table of meanings and next runs, exportable.

Build / Generate

  • Cron generatorClick an expression together and watch it explained as you go.
  • Text to cronType "every weekday at 9:30" and get 30 9 * * 1-5.
  • Crontab line builderSchedule, command, lock file and logging, with % escaped for you.
  • Stagger generatorSpread many jobs across a window so they never start together.
  • Cron to codeOne schedule as node-cron, Celery, Spring, Laravel, Go and more.

Platforms

Convert

Reference

  • Cron cheat sheetSyntax, special characters and dialect differences on one page.
  • Cron examplesReady-made schedules in Unix, Quartz, AWS and Spring form.

Common schedules

How to read a cron expression

  1. Split it on spaces. Standard cron has five fields: minute, hour, day of month, month, day of week — then the command.
  2. Read each field: * is every value, 5 one value, 1-5 a range, 1,15 a list and */15 every 15th value.
  3. Combine them: the job runs at every minute where all the time fields match and the day fields match.
  4. Watch the day fields. If both day of month and day of week are restricted, Linux cron runs on either — the parser above tells you when that applies.

One syntax, thirteen dialects

"Cron" is a family, not a standard. Linux cron has five fields and numbers Sunday as 0 or 7. Quartz and Spring add a seconds field; Quartz and AWS EventBridge number Sunday as 1 and insist on a ? in one day field. Jenkins adds H to spread jobs across the hour. Kubernetes uses Go's robfig/cron parser, which reads */2 in the day-of-month field differently from Linux. GitHub Actions runs in UTC unless the workflow sets a timezone:, and never more often than every five minutes. The validator checks one expression against all of them at once, and the cheat sheet lists the differences side by side.

FAQ

What does */5 * * * * mean?

Every five minutes: at minute 0, 5, 10 … 55 of every hour, every day. The */5 is a step over the whole minute range.

How do I run a cron job every day at a specific time?

Put the minute and hour in the first two fields and leave the rest as *: 30 6 * * * runs at 06:30 every day, in the time zone of the machine running cron.

Why did my cron job not run?

The usual causes are a schedule that means something other than intended (check it above), a time zone that differs from what you assumed, an unescaped % in the command (cron turns it into a newline), or a crontab file whose last line has no newline. The crontab checker finds all four.

Is my expression sent anywhere?

No. Every tool on cronkit.org runs in this page. Expressions you share are kept after the # in the link, which browsers do not send to servers.