Parse cron expressions into plain English and see the next scheduled run times. Supports 5 and 6-field cron syntax — validate and explain instantly.
minute hour day month weekday, or leading seconds
minute
*/15
every 15 minutes
hour
*
every hour
day of month
*
every day of month
month
*
every month
day of week
*
every day of week
Cron is a time-based job scheduling utility native to Unix-like computer operating systems. Software developers, system administrators, and DevOps engineers use cron expressions to schedule recurring background processes, database backups, cache invalidations, and automated reports.
A standard Unix cron expression comprises five fields separated by white space:
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of week (0 - 6 or SUN-SAT)
│ │ │ │ │
* * * * *
| Field Name | Allowed Values | Special Characters Allowed |
|---|---|---|
| Minute | 0-59 | * , - / |
| Hour | 0-23 | * , - / |
| Day of Month | 1-31 | * , - / L W |
| Month | 1-12 or JAN-DEC | * , - / |
| Day of Week | 0-6 (0=Sun) or SUN-SAT | * , - / L # |
* (Wildcard): Represents every possible value in that field. * in the hour field means "every hour"., (Value List): Separates distinct execution times (e.g., 15,45 in the minute field runs at minutes 15 and 45).- (Range): Designates inclusive intervals (e.g., 9-17 runs every hour from 9 AM through 5 PM)./ (Step Values): Specifies value increments (e.g., */10 in the minute field runs every 10 minutes).| Expression | Human Description | Common Use Case |
|---|---|---|
*/15 * * * * | Every 15 minutes | Health checks, queue polling |
0 2 * * * | Every day at 02:00 UTC | Database backups, log rotation |
0 9 * * 1-5 | Monday through Friday at 09:00 | Business day notification dispatch |
0 0 1 * * | Midnight on the first day of each month | Monthly billing cycle runs |
Node.js
import cronParser from 'cron-parser';
try {
const interval = cronParser.parseExpression('0 2 * * *');
console.log('Next run:', interval.next().toString());
console.log('Subsequent run:', interval.next().toString());
} catch (err) {
console.error('Invalid cron pattern:', err.message);
}
Python
from croniter import croniter
from datetime import datetime
base = datetime.utcnow()
iter = croniter('*/30 * * * *', base)
print("Next 3 executions:")
for _ in range(3):
print(iter.get_next(datetime))
flock or a mutex lock to guarantee single-instance execution./usr/local/bin/node instead of node).>> /var/log/myjob.log 2>&1) to preserve diagnostic logs when debugging failed recurring tasks.This website and utility are provided for general informational, calculation, and educational purposes only. Always verify critical computation outputs prior to professional deployment or financial use. See our Terms of Service and Privacy Policy for full governance details.