Picking free cron in 2026 is harder than “just use GitHub Actions” or “just use Vercel Cron” suggests

I compared fifteen products that all answer “run this on a schedule” but sit in your stack very differently: cron-job.org, Upstash QStash, EasyCron, Zeplo, Trigger.dev, Inngest, Pipedream, Cloudflare Workers Cron Triggers, Vercel Cron Jobs, Netlify Scheduled Functions, GitHub Actions, Val Town, Google Cloud Scheduler, and Amazon EventBridge Scheduler. The quick forum answers skip the part that actually matters: whether you need a URL ping or durable job execution, what retries and dead-letter queues cost on free, and whether the scheduler you pick can even run every minute.

For a simple external HTTP cron that costs nothing and fires as often as once per minute, my default is cron-job.org. It is entirely free, supports custom methods, headers, and body, and does not publish a hard job-count cap beyond fair-use controls. The tradeoff is architectural: it is a URL fetcher with a 30-second timeout and a 64 KB output cap. No retries, no queue semantics, no workflow state.

When I need reliable webhook delivery with retries, backoff, and a dead-letter queue on a budget, I reach for Upstash QStash. The free tier includes 1,000 messages per day, 10 active schedules, queue parallelism controls, CRON_TZ support, and 3-day log and DLQ retention. Paid usage starts at $1 per 100K messages. That is a much gentler curve than most workflow platforms in this set.

If your app already lives on a specific platform, I would try the native scheduler first: Cloudflare Workers Cron Triggers on the edge, Vercel Cron Jobs or Netlify Scheduled Functions inside your deploy, GitHub Actions for repo-centric automation, or Val Town if you want a browser-based scripting runtime. Each one is compelling inside its own ecosystem and awkward outside it.

I prioritized official docs, pricing pages, API references, and status pages from mid-June 2026. Where docs were thin, I say so instead of guessing.

You cannot compare these on cron syntax alone

Every product here can fire something on a timer. The useful split is what happens when the timer goes off.

ClassServicesWhat they optimize for
HTTP cron pingerscron-job.org, EasyCronHit a URL on a schedule, nothing more
HTTP queue / schedulerUpstash QStash, ZeploRetries, controlled delivery, queue semantics
Workflow orchestrationTrigger.dev, Inngest, PipedreamDurable background jobs, fan-out, multi-step flows
Platform-nativeCloudflare Workers Cron, Vercel Cron, Netlify Scheduled Functions, GitHub Actions, Val TownScheduling inside a platform you already deploy to
Cloud enterpriseGoogle Cloud Scheduler, Amazon EventBridge SchedulerIAM-integrated production scheduling in AWS or GCP

The questions I ask before picking one:

QuestionWhy it matters
Minimum intervalVercel Hobby allows once per day within an hour, not per minute. GitHub Actions floors at 5 minutes. cron-job.org does 1 minute on free.
Retries and DLQQStash, Zeplo, Trigger.dev, and Inngest have them. Vercel Cron does not.
Where code runsPlatform-native schedulers invoke your deployed function. Standalone pingers only call HTTP endpoints you host elsewhere.
Observability on freeLog retention ranges from 1 day (Netlify free) to 6 months (EasyCron).
Incident historyInngest had a 19-hour scheduling delay in April 2026. That matters if you are picking for mission-critical use.
flowchart LR
    need[Need hosted scheduling] --> simple[Simple HTTP ping]
    need --> queue[Reliable queued delivery]
    need --> workflow[Durable workflows]
    need --> enterprise[Cloud-native enterprise]
    simple --> cronJob[cron-job.org]
    simple --> easyCron[EasyCron]
    simple --> zeplo[Zeplo]
    queue --> qstash[Upstash QStash]
    queue --> zeplo
    workflow --> trigger[Trigger.dev]
    workflow --> inngest[Inngest]
    workflow --> pipedream[Pipedream]
    enterprise --> eventbridge[EventBridge Scheduler]
    enterprise --> gcpScheduler[Cloud Scheduler]

Free tiers at a glance

HTTP cron pingers

OptionFree limitsAuth / triggersMain caveat
cron-job.orgMin interval 1 min; no published hard job cap, fair use applies; 30s execution timeout; reads up to 64 KB output; API default 100 req/dayHTTP only; custom headers and body; API key with MFA and IP allowlistingFundamentally a URL fetcher. No retries or queue semantics.
EasyCronMonthly free-plan renewal; up to 5 minutely jobs or 200 daily jobs on free; logs kept up to 6 monthsHTTP only; headers, cookies, HTTP basic auth; 2FA on account; Slack, webhooks, email notificationsCapacity is expressed as active-job frequency tables, not a simple job count. Anti-abuse includes manual-run quota.

HTTP queue / scheduler services

OptionFree limitsAuth / triggersMain caveat
Upstash QStash1,000 msgs/day (~30K/mo); 1 MB message; 10 active schedules; 10 queues; queue parallelism 2; max parallelism 10; delay up to 7 days; logs and DLQ retention 3 daysHTTP publish, schedules, queues, workflow events; bearer tokens; signed webhooksRecent public incidents reviewed were on Vector, not QStash specifically.
Zeplo500 requests/month; 30-day log retention; 1 developer; jobs unlimited subject to request quotaQueue enqueue, delay, schedule, webhook notifications; bearer API token; HMAC-signed webhooksTight free envelope. Paid plan is $39/mo with 1M requests included.

Workflow orchestration platforms

OptionFree limitsAuth / triggersMain caveat
Trigger.dev10,000 runs/month; 500 concurrent runs; 7-day run and log retentionCron schedules, direct task triggers, queues; TypeScript-first code integrationsMay 22-23 deploy failures and Mar-Apr DNS incidents in 2026 status history.
InngestFree tier exists with invocation and concurrency caps; exact paid ladder was not fully visible in public pages reviewedEvents and cron; event keys, signing keys, API keys; Vercel, Netlify, Cloudflare, DigitalOcean SDKsApr 15 2026 scheduling and execution delay lasted about 19 hours.
PipedreamDaily 25-credit limit; limited connected accounts and workflows; exact active-workflow cap not clearly exposed in public pages reviewedApp events, HTTP/webhook, schedules, email, RSS; OAuth on HTTP triggers; thousands of app connectorsBest for low-code integrations, not long-running code execution.

Platform-native schedulers

OptionFree limitsAuth / triggersMain caveat
Cloudflare Workers CronFree Workers plan: 100K requests/day; 5 cron triggers per account; cron executes in UTC; changes can take up to 15 min to propagateCron into a Worker; Worker can call Queues, KV, D1, R2, external HTTPNo native retries or DLQ on Cron Triggers themselves.
Vercel Cron JobsHobby: jobs may run only once per day within the specified hour, not minute; up to 100 cron jobs per projectPath invocation of a Vercel Function; CRON_SECRET authNo automatic retries. Duplicate delivery is possible. Idempotency is your problem.
Netlify Scheduled FunctionsBundled into Netlify’s 300 monthly credits; scheduler-specific free quotas not separately documentedCron only; no inbound payload support; 30s execution cap; only published deploys auto-run1-day log history on free.
GitHub ActionsPublic repos: standard hosted runners free; private repos on GitHub Free get 2,000 Actions minutes/month; shortest interval 5 min; 90-day log retention defaultCron plus repo events; GitHub secrets and tokens; self-hosted runnersRepo-centric, not a generic external scheduler.
Val TownFree: 15-min cron intervals; 1 min wall-clock per run; 3-day log retention; 100,000 runs/day; unlimited public valsCron, HTTP vals, email handlers, webhooks; bearer API tokensPro ($21/mo) unlocks 1-min cron and 10-day logs.

Cloud enterprise schedulers

OptionFree limitsAuth / triggersMain caveat
Google Cloud Scheduler3 jobs/month free per billing account, then $0.10/job-month; max job size 1 MB; default quota 1,000 jobs per regionHTTP, Pub/Sub, App Engine; generated auth headers for HTTP targetsFree tier is tiny. The value is native GCP integration.
Amazon EventBridge SchedulerAWS Free Tier plus per-invocation billing thereafter; exact figures vary by account age and regionCron, rate, one-time; targets include Lambda, Step Functions, ECS, SQS; IAM execution rolePay-per-invocation, not “free forever.” Generous at scale through AWS Free Tier.

Two things to keep in mind. Platform-native schedulers are almost always the right first pick when you already deploy there, but their free tiers are not interchangeable. Vercel Hobby cron is daily, not minutely. GitHub Actions floors at 5 minutes. And several vendors do not publish one consolidated matrix for payload caps, concurrency, retention, and anti-abuse controls. I marked those as not publicly documented instead of guessing.

What the free tiers actually feel like in use

HTTP cron pingers: cron-job.org, EasyCron, and Zeplo

cron-job.org is the option I would try first when the job is literally “call this URL every N minutes.” Custom HTTP methods, headers, body, cron-like schedules, test runs, notifications, execution history, and status badges. The API defaults to 100 requests per day. Sustaining memberships exist but explicitly do not add entitlements, which is refreshingly honest.

The limits are real. Thirty-second execution timeout. Sixty-four kilobytes of output read. No retries if your endpoint flakes. For a health check, a cache warmer, or a webhook to a server you control, that is often enough. For payment-provider webhooks where delivery guarantees matter, it is not.

EasyCron is the classic webcron product in this set. Timezones, custom HTTP methods, timeout configuration, regex matching on responses, execution logs with predictions, and notification integrations (Slack, webhooks, email). The free plan renews monthly and expresses capacity as frequency tables: up to 5 minutely jobs or 200 daily jobs. Logs stick around up to 6 months, which is unusually generous on free. Paid plans start at annual tiers.

Zeplo sits between a pinger and a queue. Five hundred requests per month on free, 30-day log retention, unlimited jobs subject to that quota. Standard cron schedules, default 3 retry attempts with exponential backoff, queue history, HMAC-signed webhooks. Status page showed 99.59% API uptime over 90 days when I checked. I would pick Zeplo over cron-job.org when I want URL calls to behave like queue jobs with retries, and pick cron-job.org when I want maximum free volume with zero account friction.

Queue and scheduler services: Upstash QStash

Upstash QStash is the strongest reliability-focused option among independent vendors in this comparison. One thousand messages per day free, cron with CRON_TZ, retries with custom exponential backoff, dead-letter queue, logs and stats, queue parallelism controls, and delays up to 7 days. Paid plans start at $1 per 100K messages.

The mental model is publish-to-HTTP with delivery guarantees, not “run my code.” You enqueue a message or define a schedule, QStash calls your endpoint, and failed deliveries retry before landing in the DLQ. That fits webhook fan-out, deferred API calls, and serverless endpoints that need at-least-once semantics without building your own retry layer. Log and DLQ retention on free is only 3 days, so plan your debugging window accordingly.

Workflow orchestration: Trigger.dev, Inngest, and Pipedream

These three treat scheduling as one trigger among many. They are stronger than plain cron when you need durable state, fan-out, concurrency controls, or multi-step logic.

Trigger.dev is the TypeScript-native pick. Ten thousand runs per month free, 500 concurrent runs, 7-day retention. Cron schedules with IANA timezones, declarative and imperative schedule definitions, retries with exponential backoff, concurrency controls, realtime run updates, and query dashboards. If your background jobs already live in a TS codebase and you want a run UI that feels like a product, Trigger.dev is the most natural fit here.

Inngest leans event-driven. Cron plus arbitrary events, per-step retries, concurrency throttling, batching, rate limiting, rich traces, run search, and Prometheus export. SDKs for TypeScript, Python, and Go with first-party integrations for Vercel, Netlify, Cloudflare, and DigitalOcean. I would pick Inngest over Trigger.dev when the workload is multi-step and event-centric rather than “one scheduled function that does a thing.”

Pipedream is the low-code outlier. Twenty-five daily credits on free, schedule triggers with timezone support, a strong run inspector, and thousands of app connectors (GitHub, Slack, Google Calendar, and the rest). I would not use Pipedream as a general-purpose background job runtime. I would use it when the scheduled task is mostly wiring SaaS APIs together without writing much code.

Both Trigger.dev and Inngest had visible 2026 incidents worth reading before you bet production on them. Trigger.dev: deploy failures May 22-23, DNS issues Mar-Apr, some schedules affected Jan 21. Inngest: a major Apr 15 scheduling and execution delay lasting about 19 hours. Pipedream’s May incident history included temporarily disabling new Python code steps. None of that means avoid them. It means read the status pages and design for idempotency.

Platform-native schedulers

If you already deploy on the platform, native scheduling is usually less moving parts than bolting on an external pinger.

Cloudflare Workers Cron Triggers give you five cron triggers per account on the free Workers plan, executing in UTC with up to 15 minutes propagation delay after changes. Your Worker can call Queues, KV, D1, R2, or external HTTP. Observability is solid via Workers Logs, metrics, analytics, and OpenTelemetry export. Cron Triggers themselves do not ship retries or DLQ; you build that in the Worker or use Cloudflare Queues separately. A Jun 12 status page item affected Workers-related products including Cron Triggers.

Vercel Cron Jobs invoke a path on your deployed Vercel Function, authenticated via CRON_SECRET. Up to 100 cron jobs per project. On Hobby, jobs run at most once per day within the specified hour, not at minute granularity. No automatic retries. Duplicate delivery is possible, and Vercel’s docs recommend locking or idempotency. Fine for a daily cleanup task on a side project. Wrong for minute-level polling. A Jun 8 incident involved elevated errors on some function invocations.

Netlify Scheduled Functions use UTC cron with RFC shortcuts, manual “Run now,” and a 30-second execution cap. Only published deploys auto-run scheduled functions. Free-plan economics are bundled into Netlify’s 300 monthly credits rather than a scheduler-only quota. Log history on free is 1 day. Recent status incidents reviewed affected Edge Functions and image delivery, not Scheduled Functions specifically.

GitHub Actions scheduled workflows are POSIX cron with optional timezone, plus the full GitHub CI environment: secrets, tokens, self-hosted runners. Public repos get free standard hosted runners. Private repos on GitHub Free get 2,000 Actions minutes per month. Shortest interval is 5 minutes. Ninety-day log retention by default. This is the right tool for repo-centric automation (nightly test runs, dependency updates, cache warming in CI). It is the wrong tool for generic external webhook scheduling at high frequency.

Val Town is the odd one out: a browser-based scripting runtime with cron, HTTP vals, email handlers, and webhooks. Free tier allows 15-minute cron intervals, 1 minute wall-clock per run, 3-day log retention, and 100,000 runs per day on unlimited public vals. Pro at $21/month drops cron to 1-minute intervals and extends logs to 10 days. Status page showed Scheduled Vals at 100% uptime in the reviewed window. Recent incidents were mostly website and preview outages in Apr-May 2026, not the scheduler itself.

Cloud enterprise: Google Cloud Scheduler and Amazon EventBridge Scheduler

For production workloads already in AWS or GCP, the differentiators are IAM integration, native targets, retry controls, and operational maturity, not nominal free-tier generosity.

Google Cloud Scheduler gives you 3 jobs per month free per billing account, then $0.10 per job-month. HTTP, Pub/Sub, and App Engine targets. Timezones, retry config with exponential backoff, custom HTTP headers, and up to 30-minute HTTP job duration. Default quota is 1,000 jobs per region. Public service health showed no recent Cloud Scheduler incidents when I checked; the last visible historical item was June 2024.

Amazon EventBridge Scheduler supports cron, rate, and one-time schedules with targets across Lambda, Step Functions, ECS, SQS, and other AWS APIs. IAM execution roles, optional KMS, timezones, flexible time windows, retries, and SQS DLQ support. Pricing is per-invocation through AWS Free Tier and standard rates. I did not find a scheduler-specific recent incident in the public AWS Health Dashboard snippets reviewed.

Reliability and observability on free

What you get for debugging varies more than the marketing pages suggest.

CapabilityWho has it on freeWho does not
Automatic retriesQStash, Zeplo, Trigger.dev, Inngestcron-job.org, EasyCron, Vercel Cron, Netlify Scheduled Functions
Dead-letter queueQStash (3-day retention), EventBridge (SQS DLQ)Most HTTP pingers and platform-native schedulers
Timezone-aware cronQStash (CRON_TZ), EasyCron, Trigger.dev, Inngest, Pipedream, GCP, EventBridge, GitHub ActionsCloudflare Workers Cron (UTC only), Netlify (UTC)
Longest free log retentionEasyCron (up to 6 months)QStash DLQ (3 days), Val Town free (3 days), Netlify free (1 day)

Status-page incidents that stood out during research:

  • Inngest: Apr 15 2026 scheduling and execution delay, about 19 hours.
  • Trigger.dev: May 22-23 deploy failures; Mar-Apr DNS incidents; Jan 21 affected some schedules.
  • Cloudflare: Jun 12 dashboard and API issues affecting Workers-related products, including Cron Triggers.
  • Vercel: Jun 8 elevated errors on some function invocations.
  • Zeplo: 99.59% API uptime over 90 days; no incidents in the past month reviewed.

If you are selecting for mission-critical scheduling, read the status pages yourself and design handlers to be idempotent. Duplicate delivery is documented behavior on Vercel Cron, and at-least-once semantics are common across queue-based systems.

What I would pick

flowchart TD
    start[Need hosted scheduling] --> typeQ{What kind of job?}
    typeQ -->|Ping a URL on a timer| pingQ{Need retries?}
    pingQ -->|No| cronJob[cron-job.org]
    pingQ -->|Yes, minimal setup| zeplo[Zeplo]
    pingQ -->|Yes, more volume| qstash[Upstash QStash]
    typeQ -->|Durable background work| codeQ{How do you want to write it?}
    codeQ -->|TypeScript codebase| trigger[Trigger.dev]
    codeQ -->|Event-driven multi-step| inngest[Inngest]
    codeQ -->|Low-code app wiring| pipedream[Pipedream]
    typeQ -->|Already on a platform| platformQ{Where do you deploy?}
    platformQ -->|Cloudflare| cfCron[Workers Cron Triggers]
    platformQ -->|Vercel or Netlify| vercelNetlify[Platform cron if interval fits]
    platformQ -->|GitHub repo| gha[GitHub Actions]
    platformQ -->|Browser scripts| valtown[Val Town]
    typeQ -->|AWS or GCP production| cloudQ{Which cloud?}
    cloudQ -->|AWS| eventbridge[EventBridge Scheduler]
    cloudQ -->|GCP| gcpScheduler[Cloud Scheduler]

Ping a health-check URL every minute for free: cron-job.org. No account upsell games, 1-minute intervals, custom headers. Just remember it will not retry on failure.

Webhook delivery with retries on a budget: Upstash QStash. Cleanest free-tier envelope for retries, backoff, schedules, and DLQ among independent vendors. Zeplo if 500 requests per month is enough and you want something simpler.

TypeScript background jobs with a realtime run UI: Trigger.dev. Ten thousand runs per month free, good concurrency controls, schedules as one trigger type among many.

Event-driven multi-step workflows with flow control and traces: Inngest. Especially strong when cron is just one entry point into a larger event graph.

Zapier-style scheduled app integrations: Pipedream. Thousands of connectors, daily credit cap on free, strong run inspector for debugging wiring.

App already on Cloudflare, Vercel, or Netlify: try the platform scheduler first. Cloudflare for edge cron with Worker logic. Vercel or Netlify only if the interval fits (daily on Vercel Hobby, 30-second cap on Netlify). Do not reach for an external pinger unless you need capabilities the platform scheduler lacks.

Repo-centric nightly automation: GitHub Actions. POSIX cron, secrets, self-hosted runners. Not for minute-by-minute external webhooks.

Quick browser-based scripts on a schedule: Val Town free for 15-minute intervals, Pro for 1-minute.

AWS or GCP production with IAM targets: EventBridge Scheduler or Cloud Scheduler. The free tiers are not the point. IAM, native targets, and retry controls are.

Explicit anti-picks for high-frequency external automation: Vercel Hobby cron (once per day within an hour) and GitHub Actions (5-minute floor). For minute-level scheduling on free, look at cron-job.org, Cloudflare Workers Cron, Upstash QStash, or Val Town Pro.

Gaps in the public docs

Pipedream, Inngest, and a few platform-native schedulers never publish one table with payload caps, concurrency, retention, and anti-abuse rules together. When a field in the comparison says “not publicly documented,” that is because I could not find a primary source, not because the product lacks a limit.

Inngest’s paid ladder and Pipedream’s free active-workflow cap were both fuzzier on public pages than inside the product UI.

Several status pages only showed uptime percentages. Where I could not find recent incident write-ups, I said so in the post rather than guessing.

I did not run timed cron execution tests across every provider here. Timing and reliability notes come from vendor docs and status pages.

Sources

cron-job.org

cron-job.org
cron-job.org API documentation

Upstash QStash

Upstash QStash documentation
Upstash QStash pricing

EasyCron

EasyCron
EasyCron

Zeplo

Zeplo
Zeplo pricing
Zeplo documentation

Trigger.dev

Trigger.dev
Trigger.dev pricing
Trigger.dev documentation

Inngest

Inngest
Inngest pricing
Inngest documentation

Pipedream

Pipedream
Pipedream pricing
Pipedream documentation

Cloudflare Workers Cron

Scheduled Handler (Cron Triggers)
Cloudflare Workers pricing

Vercel Cron Jobs

Vercel Cron Jobs
Vercel pricing

Netlify Scheduled Functions

Netlify Scheduled Functions
Netlify pricing

GitHub Actions

Schedule event
GitHub Actions billing

Val Town

Val Town
Val Town pricing
Val Town documentation

Google Cloud Scheduler

Cloud Scheduler overview
Cloud Scheduler pricing

Amazon EventBridge Scheduler

EventBridge Scheduler
Amazon EventBridge pricing