Free DevOps tool
Cron Translator
One schedule, every platform. Paste a standard cron expression and get the correct form for Linux crontab, a Kubernetes CronJob, GitHub Actions and AWS EventBridge β with a plain-English explanation, the next 10 run times in UTC and JST, and a warning whenever a platform cannot express what you wrote. No sign-up; nothing leaves your browser.
Everything runs in your browser β the expression never leaves this page. @daily, @weekly and the other shortcuts work too.
What this schedule means
At 09:00, Monday through Friday.
Next runs below are calculated in UTC β the clock Kubernetes (without a timeZone), GitHub Actions and EventBridge all use β and shown in UTC and JST side by side.
Next 10 runs
Calculatingβ¦
Linux crontab
Paste into `crontab -e`
0 9 * * 1-5 /path/to/your-command.sh
- β crontab runs in the server's local timezone unless CRON_TZ is set β the same line can fire at a different wall-clock time on a UTC server than on a JST one.
Kubernetes CronJob
batch/v1 CronJob manifest
apiVersion: batch/v1
kind: CronJob
metadata:
name: my-cronjob
spec:
schedule: "0 9 * * 1-5"
# timeZone: "Asia/Tokyo"
jobTemplate:
spec:
template:
spec:
containers:
- name: worker
image: your-image:latest
args: ["/bin/sh", "-c", "echo replace-with-your-command"]
restartPolicy: OnFailure- β Without spec.timeZone, a CronJob runs on the cluster's clock (usually UTC). Uncomment the timeZone line to run on Japan time.
GitHub Actions
Workflow `on.schedule` trigger (UTC only)
on:
schedule:
- cron: "0 9 * * 1-5"- β GitHub Actions schedules always run in UTC β there is no timezone setting.
- β Scheduled workflows only run from the default branch, and are disabled automatically after 60 days of repository inactivity in forks.
AWS EventBridge
Schedule expression for a rule / Scheduler
cron(0 9 ? * 2-6 *)
- β EventBridge day-of-week numbers differ from standard cron: 1 = Sunday β¦ 7 = Saturday (standard cron uses 0β6, or 7 for Sunday). Numeric values above have been converted; day names (SUNβSAT) mean the same in both.
- β EventBridge cron runs in UTC by default. In the console you can pick a timezone for the schedule; in infrastructure-as-code you set it on the Scheduler schedule, not inside the cron expression.
Why the same schedule breaks across platforms
Timezones are the silent bug
A crontab line runs in the server's local timezone. The same expression in GitHub Actions, EventBridge, or a Kubernetes CronJob without spec.timeZone runs in UTC. A job written as "9 AM" in Tokyo fires at 18:00 JST β nine hours late β and nothing logs an error, because nothing is technically wrong.
EventBridge speaks a different dialect
EventBridge cron has six fields (a year field is added), numbers days of the week 1β7 starting at Sunday instead of 0β6, and forces one of day-of-month / day-of-week to be ?. Copy-pasting a crontab line into EventBridge without converting it is the most common reason a rule fires on the wrong day β or never.
GitHub Actions has a speed limit
Scheduled workflows run at most once every 5 minutes, only from the default branch, and may be delayed when GitHub is busy. A * * * * * schedule is accepted syntactically and then quietly runs far less often than every minute.
Standard cron has an OR rule
When both day-of-month and day-of-week are restricted, standard cron runs when either matches β 0 9 1 * 1 runs on the 1st of the month and every Monday, not only when both coincide. EventBridge cannot express this at all; it needs two rules.
Related guides
Kubernetes Jobs and CronJobs in 2026
The full CronJob contract: timeZone, concurrencyPolicy, starting deadlines, and designing batch work that fails cleanly.
How to Build a CI/CD Pipeline with GitHub Actions
The end-to-end GitHub Actions pipeline guide β triggers, jobs, caching, matrices and deployment.
GitHub Actions Reusable Workflows Guide (2026)
Share whole jobs across repositories with workflow_call β and trigger them on a schedule with on.schedule.
More free tools
Plan AWS VPC subnets with usable-host math, or check a Kubernetes manifest for the mistakes that page you later β all free, all in your browser.
Frequently asked questions
What does */5 * * * * mean?
It means "every 5 minutes". The five fields are minute, hour, day of month, month and day of week; */5 in the minute field matches every fifth minute of every hour, and the remaining fields are unrestricted.
What is the cron expression for 9:00 AM on weekdays?
0 9 * * 1-5 β minute 0, hour 9, any day of the month, any month, Monday (1) through Friday (5). Note that GitHub Actions, Kubernetes (without spec.timeZone) and EventBridge interpret it in UTC, so 09:00 UTC is 18:00 JST.
Why does AWS EventBridge cron need a question mark?
EventBridge uses a 6-field cron expression (minute hour day-of-month month day-of-week year) and requires exactly one of day-of-month or day-of-week to be "?". Standard cron instead lets both be set and runs when EITHER matches, which EventBridge cannot express β you need two separate rules for that.
Does GitHub Actions cron run in UTC or local time?
Always UTC. GitHub Actions has no timezone setting for on.schedule, and the shortest interval it enforces is once every 5 minutes. Scheduled runs can also be delayed under load, so do not rely on them for precise timing.
How do I make a Kubernetes CronJob run in Japan time (JST)?
Set spec.timeZone: "Asia/Tokyo" on the CronJob (Kubernetes 1.27+). Without it, the schedule is interpreted in the kube-controller-manager's timezone, which is UTC in almost every cluster.
Why is the day-of-week numbering different in EventBridge?
In standard cron, day of week runs 0β6 (with 7 also meaning Sunday). In EventBridge it runs 1β7, where 1 is Sunday and 7 is Saturday. The translator above converts numeric values automatically; day names (SUNβSAT) mean the same in both.