CronShift · Runs in your browser · The Altar by Misfit Mindset · Shift

About CronShift

Five fields, a comment in Slack, and a job that fired at 3 AM because someone forgot UTC. CronShift builds and explains 5-field cron expressions and estimates next runs in your timezone. Use it to draft a schedule, to decode a crontab you inherited, to see the next few fires. Do not treat the estimate as production gospel. Cron daemons disagree on 5 vs 6 fields (seconds), on day-of-month vs day-of-week when both are set, and on DST. The box that actually runs the job is the authority. This page is a flashlight, not the init system.

The five fields are minute, hour, day of month, month, day of week. Specials like @daily may be translated if the UI allows. You get an English-ish explanation and a list of next estimated runs in the timezone you pick. If that zone is your laptop and the server is UTC, you will still be wrong until you align them.

When not to use it: systemd OnCalendar, Kubernetes CronJobs with extra rules, and AWS EventBridge rates. Also skip leap-second theology. If both DOM and DOW are set, some crons OR and some AND. Read man 5 crontab for the daemon you have. The estimate here may assume one convention. Jenkins six-field-with-seconds is another dialect; this helper is minute-first five-field cron.

Privacy is local: an expression is not secret. The job name next to it in your notes might be. EpochShift helps when the next run is shown as a timestamp. RegexShift will not save you from a wrong timezone. DST skip and double-fire are why servers should run UTC; local-time cron is a known hazard.

How to use it

  1. Enter a 5-field cron or build it with the field controls.
  2. Pick the timezone the *server* uses, not only the cafe you are sitting in.
  3. Read the explanation and the next estimated fires.
  4. Compare with the daemon you actually run (cron, k8s, CI).
  5. Do not ship based only on this list — confirm in staging logs.

Worked example

Expression 15 4 * * 1-5. CronShift explains: 04:15 on weekdays. Next runs list Monday 04:15 in the zone you selected (UTC). The Kubernetes cron is also UTC, so it matches. A colleague's crontab on a box set to Chicago would have been six hours off if they copied blindly. You write UTC in the PR. The expression never needed a server. Writing UTC in the PR is the fix for a colleague whose box was set to Chicago and copied blindly.

Limits — when not to use CronShift

Privacy

CronShift parses in the browser. Expressions stay on the device. Nothing is scheduled on our servers — there is no job runner here. Close the tab when the line is in crontab. Nothing is scheduled here; there is no job runner, only an explanation of a string you will paste into crontab.

Full policy: Shift Privacy Policy. Questions: [email protected].

Questions people actually ask

Why did it fire on Sunday anyway?

0 and 7 are both Sunday in many crons. Ranges like 1-5 are weekdays. Also check timezone. Logs tell the truth; the estimate is a map. 0 and 7 are both Sunday in many crons; timezone mistakes still outnumber syntax mistakes in postmortems.

5 fields or 6?

This helper is 5-field (minute first). Jenkins and some libraries add seconds. If your string has six numbers, you are in another dialect. If your string has six numbers, you are in a seconds dialect this 5-field helper is not claiming to be.

Is @hourly supported?

If the UI maps nicknames, yes. Otherwise write 0 * * * *. Nicknames are not universal across every SaaS cron. Nicknames like @hourly are not universal across SaaS cron; write 0 * * * * when you need portability.

Can I trust next-run during DST?

No more than you trust the daemon. Jobs can skip or double in the overlap. Prefer UTC on servers. Treat local-time cron as a known hazard. Jobs can skip or double in a DST overlap; prefer UTC on servers and treat local-time cron as a hazard.

Related tools: EpochShift · RegexShift · JsonShift
Guides · All Shift tools · About · Contact