Back to Tools

Cron Expression Generator

Generate and translate CRON expressions into human readable schedules.

Input Data

Read a cron schedule without counting fields

A cron line such as 30 2 * * 1 is compact but easy to misread, especially when you inherit a crontab or a CI schedule you did not write. This page takes a cron expression and describes it back to you, so you can check what a job will do before you deploy it. It works as a translator for existing expressions rather than a visual schedule builder: you enter the expression and the tool reports it.

Steps

  1. Enter an expression in the Input Data box, with the fields separated by spaces, for example 0 12 * * *.
  2. Use Sample to load 0 12 * * 1-5 or Clear to empty the box.
  3. Click Process Now.
  4. Read the description in the Results panel; the original expression is echoed above it.
  5. Press Copy to copy the text or Download to save it as result.txt.

What the output looks like

Four very common expressions are recognised exactly and get a short phrase: * * * * * is every minute, 0 * * * * is every hour at minute 0, 0 0 * * * is every day at midnight, and 0 12 * * * is every day at noon.

Everything else is described field by field in a fixed sentence, following the order minute, hour, day of month, month, day of week. For instance, the sample expression comes back as "At minute 0, hour 12, day of month *, month *, day of week 1-5". That is a reading aid, not a fully worded schedule, so you still interpret ranges, steps and lists yourself.

Where it is useful

  • Double-checking a crontab entry before saving it on a server.
  • Confirming which field holds the hour and which the day of week in a GitHub Actions or Kubernetes schedule.
  • Explaining a scheduled job to a teammate who does not read cron notation.
  • Confirming that you typed five fields and not four.

Limitations to keep in mind

The tool only checks that the expression contains at least five space-separated parts. It does not validate that values are inside their allowed ranges, so 75 in the minute field is not flagged. It also does not calculate upcoming run times or time zones.

Only the first five fields are read. If your system uses a six-field format with seconds first, or a seventh field for the year, the summary will be shifted and wrong, so remove or account for those extra fields. Also remember that many systems accept names like MON or JAN and special strings such as @daily; the tool would treat those literally in its output rather than interpreting them, so test tricky schedules on your scheduler too.

Related Tools




Frequently Asked Questions

Does this build a cron expression from a schedule I choose?
No. It works in one direction: you enter an existing five-field expression and it describes it. There are no dropdowns for picking times, so you write the expression yourself and use the result to confirm it means what you intended.
Which expressions get a plain-English sentence?
Exactly four: every minute (* * * * *), every hour at minute 0, every day at midnight (0 0 * * *) and every day at noon (0 12 * * *). Every other valid-looking expression is described field by field with the raw values.
Will it tell me when the job runs next?
No. The tool shows a description of the fields only. It does not compute upcoming run dates, apply a time zone or check how your server's scheduler treats the expression, so verify timing on the system that runs the job.
What happens if I type an invalid value like minute 99?
It is not caught. The tool only requires at least five parts separated by whitespace, so an out-of-range number is repeated in the description without a warning. Check field ranges yourself: minutes 0-59, hours 0-23, months 1-12.
Can I use a six-field cron with seconds?
Not reliably. The tool reads the first five fields as minute, hour, day of month, month and day of week, so a leading seconds field shifts everything. Remove the seconds field before pasting, and consult your platform's documentation for it.
Support Chat
We typically reply within minutes

Hello! 👋 Before we start, please tell us your name.