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

FieldTypeRequiredDescription
expressionstringrequiredA standard 5-field cron expression: minute hour day-of-month month day-of-week. Supports *, lists, ranges, steps, and month/weekday names.
countintegerrequiredHow many upcoming execution times to compute (max 10).
fromstringoptionalISO-8601 start time for the next-execution preview. Defaults to now. Computed in UTC.

Response

FieldTypeRequiredDescription
validbooleanrequiredWhether the expression parsed successfully.
errorunknownrequiredSpecific validation error when invalid.
expressionstringrequiredThe normalized input expression.
descriptionstringrequiredHuman-readable summary, e.g. "At 09:00 on weekdays".
fieldsobject[]requiredField-by-field breakdown.
nextstring[]requiredUpcoming 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.