Cron expression
*/30 16 31 JUN 1-5
Every 30 minutes, between 16:00 and 16:59, on day 31 of the month, Monday through Friday, only in June.
Next runs · UTC
- —
- —
- —
- —
- —
September 2026 · UTC
This expression never fires — day 31 does not exist in June
Read more in the dedicated guide: Cron every 30 minutes.
What this cron means, field by field
Each field of */30 16 31 JUN 1-5 controls one dimension of the schedule. Hover over any value in the editor above to see its tooltip; the table below summarises the same information.
| Field | Value | Means | Range / hint |
|---|---|---|---|
| minute | */30 | every 30 minutes | 0-59. The minute(s) of the hour the job will fire. |
| hour | 16 | at hour 16 | 0-23. The hour(s) of the day the job will fire (0 = midnight, 23 = 11 PM). |
| day of month | 31 | at day of month 31 | 1-31. The day(s) of the month. Use * if you want every day. |
| month | JUN | at month JUN | 1-12 or JAN-DEC. The month(s). Use * for every month. |
| day of week | 1-5 | from day of week 1 through 5 | 0-7 or SUN-SAT (0 and 7 both mean Sunday). Use * for every day of the week. |
Next 5 runs
This expression never fires — day 31 does not exist in June. Every field is valid on its own, but no calendar date satisfies all of them at once.
Similar cron expressions
Common variations and tweaks of */30 16 31 JUN 1-5.
*/15 16 31 JUN 1-5Every 15 minutes, between 16:00 and 16:59, on day 31 of the month, Monday through Friday, only in June*/30 16 31 JUN *Every 30 minutes, between 16:00 and 16:59, on day 31 of the month, only in June*/30 16 31 JUN 0,6Every 30 minutes, between 16:00 and 16:59, on day 31 of the month, and on Sunday and Saturday, only in June
Where else this cron could be used
The same expression */30 16 31 JUN 1-5 works in:
- Standard Unix
crontab(5-field syntax). - AWS EventBridge / Lambda Scheduled (with a 6th field for year, often
*). - Vercel cron jobs (declared in
vercel.json). - Quartz Scheduler and node-cron, robfig/cron and similar libraries.
Examples
- 0 18 * * *Every day at 18:00
- 0 */5 * * *Every 5 hours
- 0 18 * * 1-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
What does the cron expression `*/30 16 31 JUN 1-5` mean?
every 30 minutes, between 16:00 and 16:59, on day 31 of the month, Monday through Friday, only in June.
When does `*/30 16 31 JUN 1-5` run next?
Never — day 31 does not exist in June. The expression is syntactically valid but no calendar date satisfies every field.
Is `*/30 16 31 JUN 1-5` a valid cron expression?
It parses, but it never fires: day 31 does not exist in June. Pick a day that exists in every listed month.
Run this cron in production
Stop pasting `*/30 16 31 JUN 1-5` into a host you also have to babysit.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
1.9k+ teams · Free forever tier · No credit card