Cron expression explainer
Paste a schedule from a crontab, a Hangfire RecurringJob, NCrontab or a Quartz trigger.
You get it back in plain English, field by field, with the next five runs in UTC
from a real matcher — and a flag on every trap the dialects disagree about, instead of a confident wrong answer.
Needs your judgment
Field by field
Free API — use it from your own tools
The same engine powers an open API (this page uses it too). No signup, no key — just a rate limit of 60 requests per minute per IP. Handy for pull-request checks on job schedules, deployment scripts, and teaching materials.
curl
curl -X POST https://www.coder000.com/api/v1/cron-explain \
-H "Content-Type: application/json" \
-d '{"input": "0 0/15 9-17 ? * MON-FRI"}'
C#
using var http = new HttpClient();
var response = await http.PostAsJsonAsync(
"https://www.coder000.com/api/v1/cron-explain",
new { input = "30 2 * * MON-FRI" });
var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result.GetProperty("output").GetString());
Uniform response shape: { "output": "…", "notes": [...], "warnings": [...] } —
output holds the description and the next runs, each note carries a
change, an explanation, and sometimes a link to a
post behind it; warnings are the things a scheduler will not tell you until 3 a.m.
What it checks, and what it will not pretend to know
Dialect detection from the field count and characters; ranges, lists, steps, names like
MON and JAN; Quartz ?, L, W
and #. It warns about days that never come (30 February), schedules that never
fire, more than five runs a minute, a 5-field expression handed to Quartz, and the classic
day-of-month and day-of-week trap — where Linux cron says either, Hangfire
and NCrontab say both, and Quartz refuses to guess. Runs are shown in UTC; whether
your scheduler agrees depends on its time-zone setting, which the notes spell out.