Free · No account · Works in your browser
Cron Calculator
Next run times from a cron expression
Cron Calculator
Enter values below, then calculate.
The cron calculator translates between cron expressions and the next run times they imply on a server clock. DevOps engineers, PHP hosts, and data teams use cron syntax in crontab files, Kubernetes CronJobs, and managed cloud schedulers. Enter an expression to preview upcoming fires, or pick calendar anchors to build a valid five-field pattern without memorizing every positional rule.
What cron expressions describe
Standard cron uses five fields — minute, hour, day of month, month, day of week — though some platforms add seconds or use aliases like @daily. An expression such as 15 3 * * * means 03:15 every day in the server’s local timezone unless the daemon documents UTC. This page focuses on the common five-field form found on Linux and many PaaS panels.
Cron answers “when should this job run?” not “how long did it run?” For elapsed duration math, use the seconds converter. For absolute instants in logs, decode with the Unix timestamp converter.
Building expressions safely
Start from the business requirement in plain language: “every weekday at 2 AM,” “first day of month at noon,” “every fifteen minutes.” Map that sentence to fields one at a time. Avoid combining day-of-month and day-of-week both as specific lists unless your scheduler documents OR versus AND semantics — behavior differs between cron implementations.
Use the preview list to confirm the next handful of run times before deploying to production. A single misplaced asterisk can fire every minute and overwhelm a database migration script. Document the server timezone beside the expression in your runbook.
Timezone and daylight saving pitfalls
Crontab on a typical Linux VPS uses the system timezone. Spring-forward gaps may skip an hour; fall-back repeats an hour. Jobs scheduled at 2:30 AM local time on DST transition Sundays deserve extra review. Pair with the daylight saving time page when 2026 transitions affect billing or cleanup windows.
Cloud schedulers sometimes force UTC. A job meant for midnight Eastern must not be entered as 0 0 * * * on a UTC-only control plane without offset math. Use the time zone hub to compare city offsets before publishing.
Worked examples
Example A: nightly backup at 03:15 — minute 15, hour 3, remaining fields asterisked for every day. Preview shows the next seven fires so you can verify they land after low-traffic hours in your analytics dashboard.
Example B: report every Monday at 09:00 — minute 0, hour 9, day-of-week 1 (Monday in zero-based Sunday-start tables; confirm your engine’s numbering). Cross-check Monday dates on the monthly calendars when stakeholders read civil dates, not cron fields.
Example C: session cleanup aligned with JWT exp — decode sample exp values on the Unix timestamp page, then schedule deletion cron fifteen minutes after peak login hour rather than every minute.
Intervals versus calendar anchors
*/5 in the minute field fires every five minutes; 0 */2 in hour fires every two hours on the hour. These patterns differ from “every five hours from an arbitrary start” — cron is calendar-aligned, not stopwatch-aligned. For relative delays after an event, use a queue worker with TTL instead of cron.
Heavy jobs should not share the same minute as log rotation, certificate renewal, and search reindex if they contend for disk I/O. Stagger minutes even when hours match.
Platform differences to document
AWS EventBridge, GitHub Actions, and classic crontab each extend or restrict syntax differently. Names like MON-FRI may work in one panel but not another. When this page generates a pattern, copy it into a staging environment first and read the vendor docs for unsupported tokens.
PHP apps on shared hosting often rely on a single system crontab entry that hits wget or php CLI every minute; the app’s internal scheduler then parses finer expressions. Know which layer owns which fields before debugging “job never ran” tickets.
Observability and failure modes
Silent cron failure is common when mailto is unset and STDERR goes nowhere. Log start timestamps in UTC alongside the expression in your deployment repo. Compare logged fire times with this preview after every DST change.
Long-running jobs that overlap the next cron tick need locking — mutex files, advisory locks, or orchestrator concurrency limits. Preview helps you see overlap risk when runtime approaches the interval width.
2026 maintenance calendar
Plan certificate renewals, fiscal close scripts, and holiday-aware jobs using the 2026 holidays list. Cron itself does not skip federal holidays unless you add logic in the job script. Finance teams expecting “skip July 4” need an explicit check, not an asterisk in the month field.
Quarter-end reports often use 0 6 1 1,4,7,10 * style patterns — verify quarter months against your org’s fiscal calendar if it differs from civil quarters.
Staggering heavy jobs
Database vacuum, search reindex, and certificate renewal should not share the same minute field when they contend for disk I/O. Preview each expression’s next fires side by side and offset minutes even if business owners want “everything at night.” Incident history shows simultaneous cron collisions more often than bad syntax.
Blue-green deploy hooks sometimes register temporary cron entries — document removal in runbooks so preview lists do not accumulate zombie schedules across 2026 releases.
Documenting expressions for auditors
SOC reviews ask what runs daily in production. Paste each five-field string with plain-English translation and next three preview instants in UTC. Auditors without cron fluency still verify backup frequency claims against actual fields.
Version-control crontab fragments alongside application code so rollbacks restore schedules — preview after every revert during hotfix weekends.
On-call rotation handoffs
Primary and secondary on-call swaps often reference “every seven days at 09:00” — verify cron against handoff runbook each quarter when team members change zones. Preview output pasted into PagerDuty override notes keeps 2026 schedule audits traceable.
Related tools
Absolute times: Unix timestamp. Duration breakdown: seconds converter. More dev utilities: converters hub.
Frequently asked questions
What does a five-field cron expression mean?
The usual order is minute, hour, day of month, month, and day of week. Asterisk means every allowed value in that field. For example, 30 2 * * * fires at 02:30 daily on the scheduler’s documented timezone. Always confirm whether your host uses Sunday or Monday as day-of-week zero before copying expressions from examples.
Does cron use UTC or local time?
It depends on the daemon or cloud product. Classic Linux crontab follows the server system timezone. Many managed schedulers expose UTC-only fields. Check your provider docs, preview the next run times here, and log one fire in UTC to settle disputes before production cutover.
Why did my job run every minute?
A stray asterisk in the minute field or an empty field misread as wildcard causes minute-by-minute execution. Rebuild the expression from plain-language requirements and preview the next several fires. Staging tests with echo commands prevent accidental hammering of databases during syntax experiments.
How do I schedule every fifteen minutes?
Put */15 in the minute field and asterisks in the others for a simple every-fifteen-minutes pattern on standard five-field cron. Some platforms prefer 0,15,30,45 instead — both are equivalent on compliant parsers. Preview confirms spacing when you also constrain hours or weekdays.
Can cron skip holidays automatically?
Standard cron has no holiday awareness. Asterisks fire on federal holidays unless the job script checks dates explicitly. Use the holidays list for 2026 when writing skip logic inside PHP, Python, or shell wrappers rather than expecting magic from the cron string alone.
How is this different from a Unix timestamp?
Cron describes recurring calendar rules on a clock face. Unix timestamps encode one absolute instant as seconds since epoch. Use cron for nightly backups and timestamps for log correlation, JWT expiry, and one-off scheduled API calls that store NumericDate fields.