Runs in your browser. Your files and text never leave your device - nothing is uploaded.
Every 5 minutes
Next 8 run times
- Fri, Oct 16, 2026, 09:50 PM
- Fri, Oct 16, 2026, 09:55 PM
- Fri, Oct 16, 2026, 10:00 PM
- Fri, Oct 16, 2026, 10:05 PM
- Fri, Oct 16, 2026, 10:10 PM
- Fri, Oct 16, 2026, 10:15 PM
- Fri, Oct 16, 2026, 10:20 PM
- Fri, Oct 16, 2026, 10:25 PM
Standard 5-field cron syntax: minute, hour, day of month, month, day of week. Next run times are computed in your browser's local timezone.
Build and Decode Cron Expressions Online
The Tools Kit’s free Cron Expression Generator works in both directions: write a new cron schedule and confirm it does what you intend, or paste an expression from an existing crontab and find out what it means. As you type, the expression is translated into a plain-English sentence and the next eight run times are listed, so there is no guessing about when a job will actually fire.
Everything runs in your browser, and nothing you type is uploaded. Run times are shown in your local timezone; to line a scheduled run up against epoch values in logs, pair it with the Unix timestamp converter.
How to Use the Cron Expression Generator
- 1
Type or pick a cron expression
Type an expression into the Cron expression field, or choose one of the 10 common presets, such as every 5 minutes or every weekday at 9am, from the dropdown.
- 2
Read the plain-English description
The schedule is translated into a sentence as you type, for example 0 9 * * 1-5 becomes "At 09:00 AM, Monday through Friday". An invalid expression shows an error instead.
- 3
Check the next 8 run times
The next eight times the schedule would fire are listed in your browser’s local timezone, so you can confirm it runs when you expect.
- 4
Copy the expression
Click Copy to put the expression on your clipboard, then paste it into your crontab, CI workflow, or job scheduler.
No account is needed and there is no limit on how many expressions you check.
Cron Expression Format: The Five Fields
A standard cron expression is five fields separated by spaces, read left to right from the smallest unit of time to the largest, with day of week at the end. A job fires whenever the current time matches every field.
| Position | Field | Allowed values | Example |
|---|---|---|---|
| 1 | Minute | 0-59 | 0 = on the hour, */15 = every 15 minutes |
| 2 | Hour | 0-23 | 9 = 9 AM, 13 = 1 PM, 9-17 = working hours |
| 3 | Day of month | 1-31 | 1 = the 1st, L = the last day of the month |
| 4 | Month | 1-12 or JAN-DEC | */3 = every third month, JAN,JUL = January and July |
| 5 | Day of week | 0-7 or SUN-SAT (0 and 7 are Sunday) | 1-5 = Monday to Friday, 1#2 = the second Monday |
The generator also accepts the shortcut macros @hourly and @daily, and an optional leading seconds field (six fields in total) for schedulers that support it. Note that the run-time list shows hours and minutes only, so sub-minute schedules are easier to judge from the description.
Cron Syntax Cheat Sheet: Special Characters
Each field can hold a single value or one of these operators. Combining them covers almost every schedule you will need; for more involved text matching in log lines or job output, a regex tester is the better tool.
| Character | Meaning | Example |
|---|---|---|
* | Any value | * in the hour field = every hour |
, | A list of values | 1,3,5 in day of week = Monday, Wednesday, Friday |
- | A range of values | 9-17 in the hour field = 9 AM through 5 PM |
/ | A step (every Nth value) | */10 in the minute field = every 10 minutes |
L | Last | L in day of month = last day; 5L in day of week = last Friday |
# | Nth weekday of the month | 1#2 in day of week = the second Monday |
L and # are extensions that classic Vixie cron does not support, so check your scheduler’s documentation before relying on them in production.
Cron Expression Examples, Explained
These descriptions are exactly what the generator returns for each expression:
*/15 9-17 * * 1-5— Every 15 minutes, between 09:00 AM and 05:59 PM, Monday through Friday. Because the hour field is 9-17, the last run of each day is at 5:45 PM.0 */6 * * *— On the hour, every 6 hours: midnight, 6 AM, noon and 6 PM.30 2 * * 0— At 02:30 AM, only on Sunday; a typical weekly backup or maintenance window.0 0 1 */3 *— At 12:00 AM, on day 1 of the month, every 3 months; useful for quarterly reports.0 12 * * 1,3,5— At 12:00 PM, only on Monday, Wednesday, and Friday.0 0 L * *— At 12:00 AM, on the last day of the month, whether that is the 28th, 29th, 30th or 31st.
Cron Pitfalls: Timezones and Day-of-Week Logic
Timezone. A cron expression has no timezone of its own; the scheduler running it decides. Many servers and hosted schedulers use UTC, while the run times here are shown in your browser’s local time. If they differ, use the timezone converter to translate the hour you want into the scheduler’s timezone before you write the hour field.
Day of month OR day of week. When both of those fields are restricted, cron runs the job if either one matches. 0 9 1 * 1 does not mean “9 AM on the 1st if it is a Monday”; it means 9 AM every Monday and on the 1st of every month. The run-time list shows both kinds of dates, which is the quickest way to catch this before it reaches production.
Impossible dates. An expression such as 0 0 31 2 * (February 31st) still gets a description, but it never fires, so no run times are listed. An empty run-time list on a valid-looking expression is a sign the schedule can never match.
Common uses
- Writing a crontab line for a backup, cleanup, or report script on a Linux server, alongside the right file permissions from the chmod calculator
- Setting a schedule trigger in a CI workflow, where the YAML config can be checked with the YAML to JSON converter
- Scheduling a recurring API call or webhook, after testing the request itself with the cURL converter
- Decoding an unfamiliar cron expression found in existing code or a JSON job definition you have tidied with the JSON formatter
- Verifying a schedule fires when you expect before deploying it
- Learning cron syntax through working examples and presets
More utilities for everyday development work are collected in our developer tools.
Common schedules
Ready-made cron expressions for the schedules people look up most, each with its description and next run times.
Frequently Asked Questions
Write five fields separated by spaces: minute, hour, day of month, month, and day of week. Use * for any value, a comma for a list, a hyphen for a range, and a slash for a step. For example, 0 9 * * 1-5 runs at 9:00 AM Monday through Friday, and */15 * * * * runs every 15 minutes.
In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC), and day of week (0-7 or SUN-SAT, where both 0 and 7 mean Sunday).
*/5 * * * * runs every 5 minutes. The */5 in the minute field means every fifth minute (0, 5, 10 and so on), and the other four fields are * so it runs every hour of every day.
0 0 * * * runs once a day at midnight: minute 0, hour 0, on every day of every month. Change the hour to 9 for a daily 9:00 AM job, or set the last field to 0 to run only on Sundays.
Use 0 9 * * 1-5. Minute 0 and hour 9 set the time to 9:00 AM, and 1-5 in the day-of-week field limits it to Monday through Friday. You can also write it as 0 9 * * MON-FRI.
Your browser’s local timezone. The server or scheduler that actually runs the job may use a different timezone, commonly UTC, and the timezone is not part of the cron expression, so confirm your scheduler’s setting separately.
Standard cron treats them as OR, not AND. 0 9 1 * 1 runs at 9:00 AM on every Monday and also on the 1st of every month, not only when the 1st falls on a Monday. The next run times list makes this visible before you deploy.
Yes. L in the day-of-month field means the last day of the month, 5L in the day-of-week field means the last Friday, and 1#2 means the second Monday. All three are described in plain English and get next run times.
Yes. Macros such as @hourly and @daily are recognized: @daily is described as "At 12:00 AM" and @hourly as "Every hour", with run times listed for each.
The expression could not be parsed: usually it has fewer than five fields, or a value is out of range, such as 60 in the minute field (0-59) or 24 in the hour field (0-23). Fix the field and the description and run times reappear.
No. The description and the next run times are both calculated in your browser, and nothing you type is uploaded.
Reviewed by Raja Jahangir · Last reviewed: October 7, 2026
How do you write a cron expression?
A cron expression has five fields: minute, hour, day of month, month, and day of week, using * for any value, */5 for every fifth, and 1-5 for a range. So 0 9 * * 1-5 runs at 09:00 every weekday and */15 * * * * runs every 15 minutes, with the next eight run times computed live.
What does 0 0 * * * mean in cron?
0 0 * * * runs once a day at midnight: minute 0, hour 0, every day of the month, every month, every day of the week. Change the hour to 9 for a 09:00 daily job, set day of week to 0 for Sundays only, or set day of month to 1 for the first of each month.
