Skip to content

Cron Expression Generator and Explainer

Build a cron schedule with a few clicks or paste an existing one to read it in plain English, catch mistakes and see exactly when it will run next.

Build a schedule

Standard crontab, GitHub Actions and Vercel use 5 fields without seconds.

Type or paste 5 fields (minute hour day month weekday), 6 with seconds first, or a shortcut such as @daily.

What it means

Describing…

Next runs

Working out the next runs…

Common schedules

How to use the cron expression generator

  1. Pick a schedule type under Build a schedule: Every N minutes, Hourly, Daily, Weekly, Monthly or Custom.
  2. Fill in the details – the minute interval, the minute past the hour, the time, the days of the week or the day of the month. In Custom you edit each field separately.
  3. Or type and paste an expression into the Cron expression box. Simple ones are recognised and shown in the builder; anything else opens in Custom.
  4. Check What it means and Next runs. Switch between your time and UTC to see when the job really fires.
  5. Press Copy expression and paste it into your crontab, workflow file or scheduler.

Features

  • Visual builder for the most common schedules, kept in sync with the text box in both directions.
  • Standard five-field syntax: lists (1,15), ranges (1-5), steps (*/10, 9-17/2, 5/20) and names (JAN–DEC, SUN–SAT).
  • Optional six-field mode with seconds first, clearly labelled.
  • Shortcuts @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly.
  • Plain-English description of the schedule.
  • The next 10 run times, calculated by the page itself, in your local time zone or in UTC.
  • Specific error messages naming the field and value that is wrong, and a warning when a schedule never runs – for example on 30 February.
  • Ten common schedules one click away.

Crontab, Quartz, GitHub Actions and Vercel: the differences

Cron syntax looks the same everywhere, but the details vary, and those details are behind most "why didn't my job run?" questions.

Classic crontab (cronie, Vixie cron) uses five fields and runs in the server's own time zone. Day of the week is 0–7 with 0 and 7 both Sunday. When both day fields are restricted, a day matches if either one matches. This tool follows these rules.

Quartz and Spring add a seconds field at the start, and Quartz also allows an optional year at the end. Quartz requires ? in one of the two day fields, counts days of the week from 1 (Sunday) to 7 (Saturday), and supports L (last), W (nearest weekday) and # (such as the third Friday). This tool reads the seconds field and ?, but not L, W or #, and its day numbers follow crontab – so prefer day names when you are writing for Quartz. Spring's own @Scheduled cron and node-cron use crontab-style day numbers.

GitHub Actions scheduled workflows use the five-field syntax and run in UTC unless you add an optional IANA time zone to the schedule. The shortest interval is every five minutes, and at busy times, especially the start of each hour, a run can start late or occasionally be dropped.

Vercel cron jobs use five fields and always run in UTC. At the time of writing, Vercel's documentation says named days and months such as MON or JAN aren't accepted, and that you can't set both the day of the month and the day of the week in one expression. On the free Hobby plan a job may run at most once a day and can fire any time within the scheduled hour; paid plans allow every minute. Check the current docs before you rely on a schedule.

Time zones and daylight saving

In local-time mode the run list follows your device's clock. On the night clocks go forward, a time that doesn't exist – such as 02:30 in many European and American zones – is skipped. When clocks go back, the repeated hour is counted once. Real cron daemons handle these edge cases in slightly different ways, which is one more reason many teams schedule jobs in UTC.

If you need to line a UTC schedule up with a deadline, the date difference calculator helps you count the days in between. For validating the patterns your job processes, try the regex tester, and for tidying a JSON config that holds your schedules, use the JSON formatter.

Why use Fileora's cron generator

A typo in a cron expression fails silently: the job simply never runs, or runs far more often than it should. Seeing the schedule in words and the actual upcoming dates catches those mistakes before you deploy. The tool is free, needs no sign-up, works on your phone and runs entirely in your browser.

Frequently asked questions

What do the five fields in a cron expression mean?

From left to right: minute (0–59), hour (0–23), day of the month (1–31), month (1–12) and day of the week (0–7, where both 0 and 7 mean Sunday). An asterisk means any value. So 30 6 * * 1 means 06:30 every Monday.

How do I run a job every 5 minutes?

Use */5 * * * *. The */5 in the minute field means every fifth minute starting from 0, so the job runs at :00, :05, :10 and so on. Pick Every N minutes in the builder and choose 5 to get the same expression.

Why does my job run on more days than I expected?

If you restrict both the day of the month and the day of the week, standard cron runs on days that match either one, not both. For example, 0 0 13 * 5 runs on the 13th of every month and also on every Friday. The tool shows a note whenever an expression uses both fields.

Which time zone are the next run times shown in?

Your device's time zone by default, with its name shown on the switch. Choose UTC to see the times a server set to UTC would use, which is how Vercel cron jobs run, and GitHub Actions schedules that don't set a time zone.

Can I use a seconds field?

Yes. Switch on the seconds option, or type six fields, and the first field is read as seconds, as in Spring and node-cron. Standard crontab, GitHub Actions and Vercel don't accept a seconds field, so leave it off for those.

Does the tool support Quartz expressions?

Partly. Six-field expressions with seconds and the ? placeholder work, but the Quartz-only characters L, W and # are rejected with a message, and numbers in the day-of-week field follow crontab (0 or 7 is Sunday) rather than Quartz (1 is Sunday). Use day names such as MON-FRI to avoid confusion.

What does @daily mean?

It is a shortcut many cron implementations accept. @daily and @midnight mean 0 0 * * *, @hourly is 0 * * * *, @weekly is 0 0 * * 0, @monthly is 0 0 1 * * and @yearly or @annually is 0 0 1 1 *. @reboot is also common, but it runs at start-up rather than on a schedule, so there are no times to show.

Is my expression sent anywhere?

No. Parsing, the description and the run times are all worked out in your browser. Nothing is uploaded or saved.

Can't find the tool you need, or something isn't working?

Tell us which tool you'd like next or what went wrong. We read every message, and requests decide what we build next.

Opens your email app. Please don't attach private files.