Cron expressions

CronFlow

Write a cron expression, read it back in plain words, see exactly when it fires in any timezone, and take the crontab line, workflow or manifest with you.

Timezones with correct DST handlingQuartz L, W, # and ? supportNext and previous run preview
Expression
In plain words

Every 5 minutes

*/5 * * * *5 fields (Unix)
Server timezone
Next runs

Reading your clock…

Where it lands
January 2026
31 of 31 days
Mo
Tu
We
Th
Fr
Sa
Su
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Hours of an active day
0006121823

Will it run where you are putting it?

The same five fields mean different things to different schedulers. These are the ones that would reject or quietly reinterpret this expression.

Linux crontab

Runs as written.

Kubernetes

Runs as written.

GitHub Actions
  • Always runs in UTC; the timezone above is ignored.
  • Scheduled runs are queued and can start much later under load.
Quartz
  • Takes 6/7 fields, not 5.
Spring
  • Takes 6 fields, not 5.
AWS EventBridge
  • Takes 6 fields, not 5.
node-cron

Runs as written.

Jenkins

Runs as written.

Take it with you

The expression is rarely the deliverable. Here is the file you actually paste.

# ┌───────────── minute (0-59)
# │ ┌─────────── hour (0-23)
# │ │ ┌───────── day of month (1-31)
# │ │ │ ┌─────── month (1-12)
# │ │ │ │ ┌───── day of week (0-6, Sunday = 0)
# │ │ │ │ │
*/5 * * * * /usr/local/bin/my-job.sh
Keep goingThe snippet travels with you — no download, no re-upload

How it works

1

Write it, or click it together

Type the expression, or pick the minutes, hours and days from the grid and never touch the syntax at all.

2

Pick the timezone that matters

Your crontab runs in the server's zone, not yours. Choose it and every time on the page moves with it.

3

Read it and check the dates

A sentence in your language, the next and previous runs, and a calendar that shows the shape of the schedule.

4

Take the file you needed

A crontab line, a GitHub Actions block, a Kubernetes CronJob, a systemd timer, an EventBridge rule and more.

Every timezone, DST included

Runs are computed in wall-clock time and converted per zone, so the hour daylight saving adds or removes is handled instead of silently mis-reported.

A grid instead of a syntax

Toggle the exact minutes, hours, days, months and weekdays. Shift-click for a range. The expression is written for you.

A calendar, not just a list

A month heatmap and an hour histogram show the shape of the schedule, which five timestamps in a list never do.

Seven real exports

crontab, GitHub Actions, Kubernetes CronJob, systemd OnCalendar, AWS EventBridge, node-cron and Spring — filled in with your command.

Compatibility checked

Quartz needs a "?", GitHub Actions ignores your timezone, EventBridge numbers Sunday as 1. You get told before you ship it.

Nothing leaves the tab

Parser, scheduler and exporters all run in your browser. No API, no upload, no account.

cron expression generator

CronFlow

CronFlow parses standard 5-field crontab syntax plus 6- and 7-field Quartz, the @daily family, @every intervals, Jenkins H and the L, W and # tokens. It reads the expression back to you in your own language, previews the next and previous runs in any IANA timezone, and turns it into the file your scheduler expects.

Timezones with correct DST handling
Quartz L, W, # and ? support
Next and previous run preview
Seven copy-ready export formats

Computed, not guessed

The schedule walks civil time and converts each match to an instant with the browser's own timezone database, so a job at 02:30 on the night the clocks change is reported the way it will really behave.

Written for the crontab you inherited

Read a whole crontab at once

Paste the file from the server and every line is split into schedule, user and command, then explained in plain words — with the broken ones flagged and the CRON_TZ picked up automatically. Nothing is analysed until you press the button.

Entirely in your browser

There is no API behind this page. The parser, the occurrence search, the timezone conversion and every exporter are JavaScript running in your tab, so the crontab of a production server never travels anywhere.

Frequently Asked Questions

QIs my data sent to any server?+

No. The parser, the schedule search and every exporter run inside your browser. A crontab you paste here never leaves the tab.

QWhich cron syntax is supported?+

Standard 5-field crontab, 6-field with seconds, and 7-field Quartz with a year. Ranges, lists, steps, and JAN/MON style aliases. The @yearly, @monthly, @weekly, @daily, @midnight and @hourly shorthands plus @every intervals. Quartz L, LW, L-3, 15W, FRI#3 and ?, and the Jenkins H token.

QWhy does the tool ask for a timezone?+

Because a cron job runs in the machine's zone, which is usually UTC, and almost never yours. Getting that wrong is the most common reason a schedule fires at an unexpected hour. Pick the server's zone and every time on the page follows it.

QWhat happens on the night the clocks change?+

A run whose wall-clock time does not exist that day is marked, and the preview shows the next instant that really does exist. Real schedulers disagree here, so the tool flags it rather than pretending there is one right answer.

QWhy do both the day and weekday fields sometimes behave oddly?+

When both are set to something other than a star, classic cron fires when EITHER matches, not both. "0 0 1 * MON" runs on the 1st and on every Monday. The tool applies that rule and warns you about it.

QCan I get a Kubernetes or GitHub Actions snippet?+

Yes. The export panel writes a crontab line, a GitHub Actions schedule block, a Kubernetes CronJob, a systemd timer and service, an AWS EventBridge expression, a node-cron call and a Spring @Scheduled annotation, filled in with the job name and command you type.

QDoes it work without typing any cron syntax?+

Yes. The builder tab gives you a clickable grid for every field — pick the minutes, hours, days, months and weekdays and the expression is written for you.

Keywords

cron expression generatorcrontab editorcron parsercron to human readablecron timezonequartz cronkubernetes cronjob schedulegithub actions cronaws eventbridge cronsystemd oncalendarnext run timecron validator
Part of the oLoveTools suite
oLoveTools

Build, read and preview cron schedules in any timezone, entirely in your browser.

Computed, not guessed

The schedule walks civil time and converts each match to an instant with the browser's own timezone database, so a job at 02:30 on the night the clocks change is reported the way it will really behave.

Read a whole crontab at once

Paste the file from the server and every line is split into schedule, user and command, then explained in plain words — with the broken ones flagged and the CRON_TZ picked up automatically. Nothing is analysed until you press the button.

Entirely in your browser

There is no API behind this page. The parser, the occurrence search, the timezone conversion and every exporter are JavaScript running in your tab, so the crontab of a production server never travels anywhere.

cron expression generatorcrontab editorcron parsercron to human readablecron timezonequartz cronkubernetes cronjob schedulegithub actions cronaws eventbridge cronsystemd oncalendarnext run timecron validator

Frequently Asked Questions

Is my data sent to any server?

No. The parser, the schedule search and every exporter run inside your browser. A crontab you paste here never leaves the tab.

Which cron syntax is supported?

Standard 5-field crontab, 6-field with seconds, and 7-field Quartz with a year. Ranges, lists, steps, and JAN/MON style aliases. The @yearly, @monthly, @weekly, @daily, @midnight and @hourly shorthands plus @every intervals. Quartz L, LW, L-3, 15W, FRI#3 and ?, and the Jenkins H token.

Why does the tool ask for a timezone?

Because a cron job runs in the machine's zone, which is usually UTC, and almost never yours. Getting that wrong is the most common reason a schedule fires at an unexpected hour. Pick the server's zone and every time on the page follows it.

What happens on the night the clocks change?

A run whose wall-clock time does not exist that day is marked, and the preview shows the next instant that really does exist. Real schedulers disagree here, so the tool flags it rather than pretending there is one right answer.

Why do both the day and weekday fields sometimes behave oddly?

When both are set to something other than a star, classic cron fires when EITHER matches, not both. "0 0 1 * MON" runs on the 1st and on every Monday. The tool applies that rule and warns you about it.

Can I get a Kubernetes or GitHub Actions snippet?

Yes. The export panel writes a crontab line, a GitHub Actions schedule block, a Kubernetes CronJob, a systemd timer and service, an AWS EventBridge expression, a node-cron call and a Spring @Scheduled annotation, filled in with the job name and command you type.

Does it work without typing any cron syntax?

Yes. The builder tab gives you a clickable grid for every field — pick the minutes, hours, days, months and weekdays and the expression is written for you.

© 2026 oLoveToolsAbout

Next step

Convert timestamps EpochFlow

CronFlow | Cron expression editor and schedule preview

Build and read cron expressions in plain words, preview the next and previous runs in any timezone, check compatibility with crontab, Quartz, Kubernetes, GitHub Actions and EventBridge, and export the snippet you need. Nothing leaves your browser.

Frequently Asked Questions

Is my data sent to any server?

No. The parser, the schedule search and every exporter run inside your browser. A crontab you paste here never leaves the tab.

Which cron syntax is supported?

Standard 5-field crontab, 6-field with seconds, and 7-field Quartz with a year. Ranges, lists, steps, and JAN/MON style aliases. The @yearly, @monthly, @weekly, @daily, @midnight and @hourly shorthands plus @every intervals. Quartz L, LW, L-3, 15W, FRI#3 and ?, and the Jenkins H token.

Why does the tool ask for a timezone?

Because a cron job runs in the machine's zone, which is usually UTC, and almost never yours. Getting that wrong is the most common reason a schedule fires at an unexpected hour. Pick the server's zone and every time on the page follows it.

What happens on the night the clocks change?

A run whose wall-clock time does not exist that day is marked, and the preview shows the next instant that really does exist. Real schedulers disagree here, so the tool flags it rather than pretending there is one right answer.

Why do both the day and weekday fields sometimes behave oddly?

When both are set to something other than a star, classic cron fires when EITHER matches, not both. "0 0 1 * MON" runs on the 1st and on every Monday. The tool applies that rule and warns you about it.

Can I get a Kubernetes or GitHub Actions snippet?

Yes. The export panel writes a crontab line, a GitHub Actions schedule block, a Kubernetes CronJob, a systemd timer and service, an AWS EventBridge expression, a node-cron call and a Spring @Scheduled annotation, filled in with the job name and command you type.

Does it work without typing any cron syntax?

Yes. The builder tab gives you a clickable grid for every field — pick the minutes, hours, days, months and weekdays and the expression is written for you.

Keywords

cron expression generator, crontab editor, cron parser, cron to human readable, cron timezone, quartz cron, kubernetes cronjob schedule, github actions cron, aws eventbridge cron, systemd oncalendar, next run time, cron validator