X Xerobit

Cron Expression Builder

Build standard cron expressions (5 fields) with live human-readable explanation and the next 5 scheduled run times. Presets for the most common schedules.

minute
0–59
hour
0–23
day of month
1–31
month
1–12
day of week
0–6 (Sun=0)
Cron expression
* * * * *
Next 5 scheduled runs (local time)
Edit any field or pick a preset.

Cron field reference

FieldRangeSpecial
Minute0–59* , - /
Hour0–23* , - /
Day of month1–31* , - /
Month1–12* , - /
Day of week0–6 (Sun=0)* , - /

Syntax cheatsheet

The day-of-month / day-of-week gotcha

When both day-of-month and day-of-week are restricted (not *), POSIX cron matches if either is satisfied — they're OR'd, not AND'd. So 0 0 15 * 1 means "midnight on the 15th of every month OR every Monday," which is probably not what you intended. This tool uses the POSIX OR rule (consistent with cron, Jenkins, etc).

Cron pitfalls

Common cron schedules

ExpressionNicknameMeaning
0 * * * *@hourlyEvery hour at :00
0 0 * * *@dailyEvery day at midnight
0 0 * * 0@weeklyEvery Sunday at midnight
0 0 1 * *@monthlyFirst of every month at midnight
*/5 * * * *Every 5 minutes
*/15 * * * *Every 15 minutes
0 9-17 * * 1-5Business hoursTop of every hour, Mon–Fri 9 AM–5 PM
0 0 1 * *First of monthMidnight on the 1st of each month
0 8 * * 1-5Weekdays only8 AM every weekday
0 0 * * 0Sunday midnightWeekly cleanup run

Cron vs systemd timers vs cloud schedulers

Classic Linux cron isn't the only game in town. Here's how the major options compare:

SchedulerTimezone supportMissed-run handlingComplexity
Linux cronServer TZ onlySkipped silentlyLow
systemd timersAny TZ via OnCalendarCatch-up with Persistent=trueMedium
AWS EventBridgeUTC + rate/cron expressionsAt-least-once, retries configurableMedium
GCP Cloud SchedulerAny IANA TZConfigurable retry policyMedium
GitHub Actions scheduleUTC onlySkipped if repo inactive 60 daysLow

Platform-specific cron differences

The 5-field standard isn't universal. Know the quirks before you deploy:

FAQ

Does this support 6-field (with seconds) expressions?

No — 5-field POSIX only. If you see 0 0 12 * * ?, that's Quartz format. Drop the first (seconds) field and replace ? with * to convert to standard cron: 0 12 * * *.

Does it support @daily / @hourly?

The tool uses equivalent numeric expressions. @hourly equals 0 * * * *, @daily equals 0 0 * * *, @weekly equals 0 0 * * 0, and @monthly equals 0 0 1 * *. Use the preset dropdown to jump straight to these.

How do I handle timezones in cron?

Classic cron has no timezone awareness — it runs in whatever TZ the server is set to. The safest approach is to run your server in UTC and do the timezone math yourself. If you need user-timezone-aware scheduling, switch to a scheduler that supports IANA timezone strings: systemd OnCalendar, GCP Cloud Scheduler, or a library like Quartz. This tool shows next run times in your browser's local timezone for reference.

How do I test a cron expression before deploying?

Use this tool's "next 5 run times" output to verify the schedule looks right. For a more exhaustive check, pipe the expression through croniter (Python) or node-cron's validate() method. For GitHub Actions, push to a test branch and watch the Actions tab — you can also trigger a scheduled workflow manually with workflow_dispatch to confirm the job works before the first real run.

Related tools

Related articles

Pillar

Part of Dev Productivity — regex, cron, timestamps, HTTP, color, word counter, aspect ratio, case.


Written by Mian Ali Khalid. Last updated 2026-05-13.