← Back to tool

Cron · Special characters · Reference

Cron Special Characters Explained

Updated: May 2026

Cron expressions get their power from a small set of special characters. Four are universal; a handful more belong to the Quartz scheduler and are not understood by standard Unix cron. Knowing which is which saves a lot of debugging.

Test any expression →

Instant validation and plain-English meaning · No upload

The four standard characters

CharNameMeaning & example
*AsteriskEvery value. * * * * * = every minute.
,CommaA list of values. 0 9,12,17 * * * = at 9am, 12pm and 5pm.
-HyphenA range. 0 9-17 * * * = every hour from 9am to 5pm.
/SlashA step within a range. */10 * * * * = every 10 minutes.

These four work in virtually every cron implementation and cover the vast majority of schedules. They also combine: 0 8-18/2 * * 1-5 means every two hours from 8am to 6pm, Monday to Friday.

Quartz extensions (not standard cron)

CharMeaning & example
?No specific value. Used in day-of-month or day-of-week when the other is set: 0 0 12 * ?.
LLast. 0 0 L * ? = last day of the month; 0 0 * * 6L = last Friday.
WNearest weekday. 0 0 15W * ? = the weekday closest to the 15th.
#Nth weekday. 0 0 * * 6#3 = the third Friday of the month.

These belong to Quartz, Spring and similar JVM schedulers, which use a 6- or 7-field format including seconds. Plain Linux cron (Vixie, cronie) will reject ?, L, W and #, so do not use them in a system crontab.

Names as values

The month and day-of-week fields also accept three-letter names: JANDEC and SUNSAT. They are case-insensitive and can appear in ranges, so 0 9 * * MON-FRI and 0 0 1 JAN,JUL * are valid. Names cannot be used with steps in some parsers, so when in doubt, fall back to numbers.

Check before you ship

If you are unsure whether a character is supported, paste the expression into the generator. It validates the syntax, rejects malformed fields, and shows the next run times so you can verify the behaviour matches your intent — before a silent failure on the server.

Frequently asked questions

Can I use ? in Linux crontab?

No. The ? is a Quartz feature. In standard cron, use * for the unspecified field.

How do I run on the last day of the month without L?

Schedule for the first of the next month, or run daily and check inside the script whether tomorrow is a new month.

Does the slash always pair with a range?

Conceptually yes. */5 is shorthand for 0-59/5. You can also write explicit ranges like 10-50/10.