Cron Parser API
Parse cron expressions into plain English. See next run times, field-by-field breakdowns, and clear validation errors. 100% client-side.
The Cron Parser is also available as a free REST API. Send a POST request with a JSON body to https://dot.tools/api/tools/cron-parser — no authentication, no API key, CORS enabled. Successful calls return { "ok": true, "result": { … } }; failures return HTTP 400 or 422 with an error body.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
expression | string | required | A standard 5-field cron expression: minute hour day-of-month month day-of-week. Supports *, lists, ranges, steps, and month/weekday names. |
count | integer | required | How many upcoming execution times to compute (max 10). |
from | string | optional | ISO-8601 start time for the next-execution preview. Defaults to now. Computed in UTC. |
Response
| Field | Type | Required | Description |
|---|---|---|---|
valid | boolean | required | Whether the expression parsed successfully. |
error | unknown | required | Specific validation error when invalid. |
expression | string | required | The normalized input expression. |
description | string | required | Human-readable summary, e.g. "At 09:00 on weekdays". |
fields | object[] | required | Field-by-field breakdown. |
next | string[] | required | Upcoming execution times as ISO-8601 UTC strings. |
Example request
curl -X POST https://dot.tools/api/tools/cron-parser \
-H 'Content-Type: application/json' \
-d '{
"expression": "*/15 9-17 * * 1-5",
"count": 5,
"from": "2026-01-05T09:07:00Z"
}'Sample response
{
"ok": true,
"result": {
"valid": true,
"error": null,
"expression": "*/15 9-17 * * 1-5",
"description": "At minute 0, 15, 30, and 45 past hours 9, 10, 11, 12, 13, 14, 15, 16, and 17 on weekdays",
"fields": [
{
"field": "minute",
"label": "Minute",
"raw": "*/15",
"values": [
0,
15,
30,
45
],
"description": "Every 15 minutes"
},
{
"field": "hour",
"label": "Hour",
"raw": "9-17",
"values": [
9,
10,
11,
12,
13,
14,
15,
16,
17
],
"description": "9 through 17"
},
{
"field": "dayOfMonth",
"label": "Day of month",
"raw": "*",
"values": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
],
"description": "Every day"
},
{
"field": "month",
"label": "Month",
"raw": "*",
"values": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"description": "Every month"
},
{
"field": "dayOfWeek",
"label": "Day of week",
"raw": "1-5",
"values": [
1,
2,
3,
4,
5
],
"description": "Monday through Friday"
}
],
"next": [
"2026-01-05T09:15:00.000Z",
"2026-01-05T09:30:00.000Z",
"2026-01-05T09:45:00.000Z",
"2026-01-05T10:00:00.000Z",
"2026-01-05T10:15:00.000Z"
]
}
}Use the free Cron Parser in your browser, read the Cron Parser guide, or import the full OpenAPI specification.