Cron Expression Explainer: Read a Cron Line and See When It Runs

What is it?

The Cron Expression Explainer turns a cron line like */15 9-17 * * 1-5 into plain words and lists the next times it will run.

Who is it for?

Developers, server admins and DevOps engineers scheduling backups and jobs, and anyone reading a cron line in a hosting panel or GitHub Actions file.

How to use it

  1. Paste your cron line in Cron expression (a whole crontab line works too), for example 30 2 * * 0.
  2. Read What it means in plain words, with the next times it will run.
  3. Change a field and watch the meaning update before you save it on your server.

The five fields

A cron line needs 5 fields: minute hour day-of-month month day-of-week.

  • * every value; */15 every 15th; 9-17 a range; 1,15 a list.
  • Day of week: 0 or 7 is Sunday, 1 Monday … 6 Saturday.
  • Example: 30 2 * * 0 = 2:30 am every Sunday; 0 9 1 * * = 9 am on the 1st of each month.

Common mistakes

  • Six fields: Quartz, Spring and some cloud schedulers add seconds (or a year). Standard Linux cron and GitHub Actions use 5.
  • Time zone: servers often run in UTC. 9:00 UTC is 2:30 pm in India. Check your server or scheduler’s time zone.
  • Day of month and day of week together: in standard cron, 0 9 1 * 1 runs on the 1st and every Monday, not only on Mondays that are the 1st.
  • * * * * * runs every minute, which is usually a mistake for a heavy job.

Special words

Many systems accept @daily, @hourly, @weekly and @reboot. Check that yours does before using them.

Worked examples

  • 0 2 * * *: every day at 2:00 am (nightly backups).
  • */5 * * * *: every 5 minutes.
  • 0 9 * * 1-5: 9 am Monday to Friday. 0 0 1 1 *: midnight on 1 January.

Testing a new job

Set it to run every minute first, check the output or log, then change it to the real schedule. Redirect output to a log file (>> /var/log/myjob.log 2>&1) so failures aren’t silent.

Errors and how to fix them

  • “A cron line needs 5 fields: minute hour day-of-month month day-of-week.”: a part is missing. Each of the 5 parts is separated by one space.
  • “This has 6 fields (with seconds, as in Quartz or Spring)…”: your scheduler counts seconds first. Remove the first field to read it as standard cron.
  • “This schedule never runs: no date matches it (for example 31 February).”: the day and month never meet. Change one of them.

Open the tool: Cron Expression Explainer

Still stuck?

Contact support. Tell us which tool or page you were using, what you tapped, what you saw, and your phone or computer and browser (for example: Android phone, Chrome). We reply by email.

Questions, or an error not listed here?

Tell us in the comments: what you were doing, the exact message you saw, and your device and browser. We read every comment and add new fixes to this article.