← Developer

Cron Expression Builder

Build, explain, and preview cron schedule expressions in your browser.

Expression

Explanation

Next run times

    Use this tool from AI agents

    This tool's engine is available to AI agents over MCP as explain_cron and validate_cron. Add the Clean.tools server, then your agent can call it directly.

    Claude Code
    claude mcp add --transport http clean-tools https://mcp.clean.tools/mcp
    Claude Desktop (mcpServers)
    {"mcpServers":{"clean-tools":{"command":"npx","args":["-y","@clean-tools/mcp"]}}}
    Cursor
    https://mcp.clean.tools/mcp

    Or call it over plain HTTP from any script. Same engine, JSON in and JSON out, no key:

    curl
    curl -s https://api.clean.tools/v1/explain_cron \ -H 'content-type: application/json' \ -d '{"expression":"*/15 9-17 * * 1-5","count":5}'
    JavaScript
    const res = await fetch('https://api.clean.tools/v1/explain_cron', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ expression: '*/15 9-17 * * 1-5', count: 5 }) }); const data = await res.json();

    How it works

    This cron expression builder helps you create and understand cron schedule expressions. Edit the expression directly or use the individual field inputs and presets. The tool explains the schedule in plain English and shows the next run times.

    All parsing and date calculations run entirely in your browser. No data is sent to a server. No cost, no signup, no tracking.

    Need the same parsing from a script or an AI agent? The explain_cron engine is also available as a cron API and an MCP server, and you can install the @clean-tools/mcp package from npm to run it locally.


    Frequently asked questions

    Which cron format does this use?

    It parses standard 5-field cron: minute, hour, day-of-month, month, and weekday. Seconds, year, and Quartz-style extensions are not supported. Month and weekday names like JAN or MON work, and Sunday can be written as either 0 or 7.

    What happens when both day-of-month and weekday are set?

    When both fields are restricted (neither is *), cron fires when either matches, not both. For example 0 0 1 * 1 runs on the 1st of the month and on every Monday. The explanation joins the two conditions with "or" to reflect this.

    What time zone are the next run times in?

    Run times are computed in your device's local time zone using your system clock. Most cron daemons run in the server's local time or UTC, so verify your server setting if the schedule looks shifted.

    Why does my expression match nothing?

    A day-of-month like 31 will never fire in months with fewer days, and an impossible pairing such as February 30th yields no runs. Out-of-range values, reversed ranges (like 5-1), and steps below 1 are flagged as errors in the explanation panel.

    Can I use this from the command line or an AI agent?

    Yes. The same cron parser is exposed as a REST endpoint at https://api.clean.tools/v1/explain_cron, so you can POST an expression from any script and get the explanation and next run times back as JSON. It is also an MCP server you can add to Claude, Claude Code, or Cursor so an agent can call it directly. The @clean-tools/mcp npm package runs the same tools as a local stdio server.

    Common cron presets

    Jump to a ready-made schedule, or browse all cron examples.

    More tools from Clean.tools

    View all tools

    Use Clean.tools from your AI agent

    This tool is also explain_cron on the Clean.tools MCP server — the same engine, callable by your AI agent directly. No key, no signup: requests are processed in memory and request contents are never stored.

    Claude Code
    claude mcp add --scope user --transport http clean-tools https://mcp.clean.tools/mcp
    Any MCP client (streamable HTTP, authless)
    https://mcp.clean.tools/mcp

    Every tool, the REST API, and setup for Cursor, Claude Desktop, VS Code & more →