Xerobit

Cron Job Translator: Cron Expression to Plain English

Paste a cron expression to see what it means in plain English and when it runs next. This cron job translator checks every field, lists upcoming run times for a UTC offset you choose, and works entirely in your browser.

A fixed offset. Daylight saving changes are not applied: pick the offset your server clock is using.

Result

  • Meaning
    Every 15 minutes, between 09:00 AM and 05:59 PM, Monday through Friday
  • Format
    5-field cron
  • Day rule
    Day-of-month AND day-of-week (at most one is restricted)
  • Offset used
    UTC+00:00
  • Next run
    Fri 2026-11-06 17:00
  1. Fri 2026-11-06 17:00 UTC+00:00 = 2026-11-06 17:00 UTC
  2. Fri 2026-11-06 17:15 UTC+00:00 = 2026-11-06 17:15 UTC
  3. Fri 2026-11-06 17:30 UTC+00:00 = 2026-11-06 17:30 UTC
  4. Fri 2026-11-06 17:45 UTC+00:00 = 2026-11-06 17:45 UTC
  5. Mon 2026-11-09 09:00 UTC+00:00 = 2026-11-09 09:00 UTC

How to use the cron expression parser

  1. Type or paste a cron expression with 5 fields, or 6 with a leading seconds field.
  2. Set the start time and the UTC offset of the machine that runs the job.
  3. Choose how many runs to list, then read the plain-English meaning and the list of next run times.

How the cron job translator reads an expression

A standard cron expression has five fields separated by spaces: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC) and day of week (0-7 or SUN-SAT, where both 0 and 7 mean Sunday). Each field can hold a single value, a list such as 1,15, a range such as 9-17, a step such as */10, or a combination like 0-30/10. A star means every value in the field.

This cron job translator checks every field against those limits, then turns the schedule into a sentence and lists the next run times. For */15 9-17 * * 1-5 it answers: every 15 minutes, between 09:00 AM and 05:59 PM, Monday through Friday. If a value is out of range, a step is zero, or a range runs backwards, you get a specific error instead of a guess. A cron job checker like this is useful before you paste a schedule into a crontab, a Kubernetes CronJob, a GitHub Actions workflow or a cloud scheduler.

Cron to human readable: common examples

These are some of the most searched schedules and what they mean in plain words. Use them as a quick cron to human readable reference, or paste your own into the box above.

ExpressionPlain English
* * * * *Every minute
*/5 * * * *Every 5 minutes
0 * * * *Every hour
0 0 * * *At 12:00 AM
30 9 * * 1-5At 09:30 AM, Monday through Friday
0 0 1 * *At 12:00 AM, on day 1 of the month
0 0 1 1 *At 12:00 AM, on day 1 of the month, only in January
0 */2 * * *On the hour, every 2 hours
15,45 8-17 * * *At 15 and 45 minutes past the hour, between 08:00 AM and 05:59 PM

Notice that 0 * * * * means the top of every hour, while * * * * * means every single minute. A common mistake is writing * 9 * * * and expecting one run at 9:00. It actually runs every minute from 09:00 to 09:59.

Day of month and day of week: the OR rule

When both the day-of-month and the day-of-week fields are restricted, classic cron runs the job when either one matches. So 0 12 15 * 1 fires at noon on the 15th of every month and also at noon on every Monday. It does not mean "the 15th, only if it is a Monday". When one of the two fields is a star, only the other one applies, so 0 12 * * 1 is Mondays only.

Adding a step such as */2 to one of the two fields keeps the AND behaviour used by Vixie cron and cronie, because the field still starts with a star. Some libraries treat it as a restricted field and use OR instead, so check how your scheduler behaves if you rely on this.

Six-field expressions and what is not supported

Some schedulers add a leading seconds field, giving six fields: second minute hour day-of-month month day-of-week. This cron expression parser accepts that form, so */30 * * * * * runs every 30 seconds and its run times show seconds. Quartz style seven-field expressions with a year, and the Quartz extras L, W and #, are rejected with a message rather than guessed at.

Aliases are supported: @yearly and @annually (0 0 1 1 *), @monthly (0 0 1 * *), @weekly (0 0 * * 0), @daily and @midnight (0 0 * * *), and @hourly (0 * * * *). @reboot has no calendar time, so it cannot be listed.

Time zones and the UTC offset setting

Cron has no time zone of its own: it runs on the clock of the machine, container or service that hosts it. Most cloud schedulers and Kubernetes clusters use UTC by default, so a job written as 0 9 * * * may run at 9:00 UTC and not at 9:00 in your office.

Choose the UTC offset of the scheduler's clock and the list shows each run both as local wall-clock time and as UTC. The offset is fixed, so daylight saving changes are not applied: if your server follows a daylight saving zone, run the tool twice with the winter and summer offsets. To translate a UTC timestamp into a named US zone, use the UTC to CST converter, and to build a schedule from scratch use the cron builder.

Cron job decoder checks that catch real bugs

Use the cron job decoder output to review a schedule before it goes live.

  • Check the first run time: if it is not when you expected, the field order is probably wrong.
  • Look at the gaps between runs. */45 * * * * runs at minute 0 and 45 of every hour, so the gap alternates between 45 and 15 minutes.
  • Day 31 only exists in seven months, and 0 0 31 2 * never runs at all. The tool says so instead of listing nothing silently.
  • February 29 schedules run once every four years, as the leap day example shows.
  • Names are case-insensitive, so mon-fri and MON-FRI are the same.

Worked examples

ExampleInputResult
Every 15 minutes during office hoursCron expression: */15 9-17 * * 1-5; Start from (local time, 24-hour): 2026-11-06 16:50; UTC offset of the schedule: 0; How many runs to list: 5Meaning: Every 15 minutes, between 09:00 AM and 05:59 PM, Monday through Friday; Format: 5-field cron; Day rule: Day-of-month AND day-of-week (at most one is restricted); Offset used: UTC+00:00; Next run: Fri 2026-11-06 17:00
Weekday morning report in India timeCron expression: 30 9 * * MON-FRI; Start from (local time, 24-hour): 2026-11-06 09:00; UTC offset of the schedule: 330; How many runs to list: 5Meaning: At 09:30 AM, Monday through Friday; Format: 5-field cron; Day rule: Day-of-month AND day-of-week (at most one is restricted); Offset used: UTC+05:30; Next run: Fri 2026-11-06 09:30
Day-of-month OR day-of-week ruleCron expression: 0 12 15 * 1; Start from (local time, 24-hour): 2026-11-06 00:00; UTC offset of the schedule: 0; How many runs to list: 6Meaning: At 12:00 PM, on day 15 of the month, and on Monday; Format: 5-field cron; Day rule: Day-of-month OR day-of-week (both are restricted, so either one matches); Offset used: UTC+00:00; Next run: Mon 2026-11-09 12:00
Leap day backupCron expression: 0 0 29 2 *; Start from (local time, 24-hour): 2026-01-01 00:00; UTC offset of the schedule: 0; How many runs to list: 3Meaning: At 12:00 AM, on day 29 of the month, only in February; Format: 5-field cron; Day rule: Day-of-month AND day-of-week (at most one is restricted); Offset used: UTC+00:00; Next run: Tue 2028-02-29 00:00
Every 30 seconds (6 fields)Cron expression: */30 * * * * *; Start from (local time, 24-hour): 2026-11-06 10:00:00; UTC offset of the schedule: 0; How many runs to list: 4Meaning: Every 30 seconds; Format: 6-field cron (seconds first); Day rule: Day-of-month AND day-of-week (at most one is restricted); Offset used: UTC+00:00; Next run: Fri 2026-11-06 10:00:30

FAQ

What does a cron job translator do?

It turns a cron expression such as 30 9 * * 1-5 into plain English (at 09:30 AM, Monday through Friday) and lists the next times the job will run, so you can confirm the schedule before using it.

How do I use this as a cron parser for 6-field expressions?

Paste an expression with six fields and the first one is read as seconds. For example, */30 * * * * * is every 30 seconds, and the run list shows seconds.

Can I use this cron job converter for crontab aliases like @daily?

Yes. @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly are expanded to their five-field forms and then described and scheduled like any other expression.

What is the difference between 0 and 7 for the day of week?

Both mean Sunday in standard cron. The tool accepts 0 to 7 and names such as SUN, so 0 22 * * 7 runs on Sundays at 10:00 PM.

Why does my schedule run on more days than I expected?

When both the day-of-month and day-of-week fields are restricted, cron runs the job when either matches. Set one of them to a star if you want only the other.

Does it handle daylight saving time?

No. The schedule uses a fixed UTC offset that you choose, because a plain cron expression does not say which zone rules apply. Run it with both offsets if your server changes clocks.