mini-tools.dev icon

mini-tools.dev

Cron translation for humans.

Instantly decode complex cron expressions into plain English. Built for developers who value precision and speed.

MINUTE0-59
HOUR0-23
DAY (DOM)1-31
MONTH1-12
DOW0-6
translate
HUMAN READABLE DESCRIPTION

Common Examples

library_books

Cron syntax explained

A cron expression is a string of five space-separated fields that define a schedule for a recurring job. Each field represents a unit of time:

┌─── minute (0–59)
│ ┌─── hour (0–23)
│ │ ┌─── day of month (1–31)
│ │ │ ┌─── month (1–12)
│ │ │ │ ┌─── day of week (0–7, both 0 and 7 = Sunday)
│ │ │ │ │
* * * * *

Some implementations (Quartz Scheduler, Spring, AWS EventBridge) use a 6-field format that adds a seconds field at the beginning or a year field at the end. Standard Unix/Linux cron — the most widely used — has exactly 5 fields.

Special characters

  • * — every value. * * * * * runs every minute.
  • , — list. 1,15,30,45 in the minute field means "at minute 1, 15, 30, and 45."
  • - — range. 1-5 in day-of-week means Monday through Friday.
  • / — step. */10 means "every 10 units." 0-30/5 means "every 5 minutes within the first half hour."

Cron cheat sheet — patterns every developer should know

* * * * * Every minute
*/5 * * * * Every 5 minutes
0 * * * * Every hour (at :00)
0 0 * * * Every day at midnight
0 9 * * 1-5 Weekdays at 9:00 AM
0 0 * * 0 Every Sunday at midnight
0 0 1 * * First day of every month
0 0 1 1 * New Year's Day
30 2 * * * Every night at 2:30 AM
0 */6 * * * Every 6 hours
0 9,17 * * 1-5 Weekdays at 9 AM & 5 PM
*/30 9-17 * * 1-5 Every 30m business hours

Cron timezone gotchas

Cron runs in the server's local timezone. On cloud infrastructure (EC2, GCE, container orchestrators), the system timezone is almost always UTC. A job scheduled for 0 9 * * * on a UTC server fires at 9 AM UTC — which is 2 AM PST, 5 AM EST, or 4 PM JST depending on where your users are.

Always document the timezone of your cron jobs explicitly. If your infrastructure runs in UTC but your business operates on a local timezone, use TZ= prefix (supported in GNU crontab) or a scheduler that supports named timezone expressions.

Cron vs alternatives

PlatformBest ForTimezone Support
Standard cronSimple recurring jobs on a Linux server.System TZ only.
systemd timersService-based jobs on modern Linux (better logging).Named TZ supported.
AWS EventBridgeServerless scheduled jobs in AWS (Lambda).UTC only.
GitHub ActionsCI/CD automation, periodic repo reports.UTC only.
Kubernetes CronJobContainerized periodic jobs in a cluster.Cluster TZ or per-job TZ (1.24+).

How to test cron expressions safely

Before deploying a cron job, paste your expression into a descriptor tool (like this one) and confirm it says what you expect. A common mistake is confusing the day-of-week and day-of-month interaction: when you specify both (neither is *), most cron implementations treat them as OR, not AND.

# This does NOT mean 'first Monday of the month'
0 9 1 * 1
# It means: '9 AM on the 1st of every month OR every Monday'
# To get the first Monday, use a shell script that checks the date:
0 9 * * 1 [ $(date +\%d) -le 07 ] && /path/to/script.sh