fshy

Home / Cloudflare

Cloudflare Pages builds

developers.cloudflare.com/pages/platform/limits/CI runnerci-cd-runners/cloudflare-pages-buildsJSONcomparereport an errorprovider JSON

Free allowance
Free plan: 500 builds a month, 1 build at a time, 20 minutes per build.
Verdict
caveatusable, with a named limit or an unprobed read path
Cost
free tier
Identity
emailno card, no phone
Binding limit
volume-quota500 builds a month on Free; 5,000 on Pro; 20,000 on Business
Evidence
documented15 sources; a first-party page was read and the sentence quoted
Freshness
stale on 2026-12-05checked 2026-11-04 (live); stale on 2026-12-05
Free tierFree plan: 500 builds a month, 1 build at a time, 20 minutes per build. Pro: 5,000 builds a month and 5 concurrent builds. Business: 20,000 builds a month and 20 concurrent builds
unit mixed; metered on unstated; the quota counts builds, not minutes: a one-minute build and a twenty-minute build each use one of the 500; the vocabulary has no builds term for the unit, so mixed stands in
Pricenone stated
Limits
  • volume-quota (binding) 500 builds a month on Free; 5,000 on Pro; 20,000 on Business source
  • request-rate 1 build at a time per account on Free; 5 on Pro; 20 on Business source
  • per-object-cap 20 minutes per build source
only GitHub and GitLab repositories connect; a project connected to Git cannot switch to Direct Upload later
Bindingvolume-quota the 500 monthly builds are spent by pushes and Deploy Hook calls whatever their length, so a busy repository reaches the count before the 20-minute cap matters
Identityemail a Cloudflare account opened with an email address and a password, verified by email; a GitHub or GitLab account authorised to Cloudflare for Git builds
Egressnot stated for the build container; the output of a build is a Pages deployment
Per-object cap20 minutes per build
Retentionunverified: the limits and build pages state no retention period for builds or build logs
Interfacegit, rest a push to a connected GitHub or GitLab repository builds and deploys the project; a Deploy Hook is a unique URL that starts a build for one branch on an HTTP POST
endpoint: unverified: the Deploy Hook URL is generated per hook in the dashboard and its format is not stated on the page read
Toolinga gVisor container with Ruby, Node.js, Python, PHP and Go preinstalled and versions overridable by environment variable or version file; the user supplies a build command and an output directory
Composes witha 20-minute job on every push or Deploy Hook call, ending in a Pages deployment. An external scheduler calling a Deploy Hook makes it a scheduled job, but each call spends one of the 500 monthly builds. Builds run by an external CI system and uploaded with Wrangler direct upload do not use the Pages build runner; Cloudflare Workers Builds is a separate service with its own record
Reliabilityunverified: no page read states what happens to a Free account once the 500 monthly builds are used
NotesA Git-driven build service whose job is bound to a Pages deployment: the build command writes an output directory that is deployed. Pro plan price is unverified; no page read states it. A separate Cloudflare service, Workers Builds, offers 3,000 build minutes a month on Free and has its own record.
Evidence notedocumented every number is quoted from the Cloudflare Pages limits page; no build was run, so CPU, memory and disk of the build container, outbound network access from it and what happens to a build after the 500 monthly builds are spent are unverified
Parsed numbers
  • has-free-tier 1
  • per-object-cap 20 minutes
Evidence 15
datesourcewhat it proved
2026-11-02developers.cloudflare.com/pages/platform/limits/Free allows 500 builds a month; Pro 5,000; Business 20,000
2026-11-02developers.cloudflare.com/pages/platform/limits/Free runs 1 build at a time; Pro 5 concurrent; Business 20
2026-11-02developers.cloudflare.com/pages/platform/limits/a build is terminated after 20 minutes; concurrency is counted per account
2026-11-02developers.cloudflare.com/pages/configuration/git-integratioGitHub and GitLab connect; self-hosted instances of either do not
2026-11-02developers.cloudflare.com/pages/configuration/git-integratioa Git-integrated Pages project cannot later become a Direct Upload project
2026-11-02developers.cloudflare.com/pages/configuration/git-integratioWorkers has a separate Git build service, Workers Builds
2026-11-02developers.cloudflare.com/pages/configuration/deploy-hooks/a Deploy Hook URL starts a new Pages build on an HTTP POST
2026-11-02developers.cloudflare.com/pages/configuration/deploy-hooks/a Deploy Hook can be called from a scheduler to run builds on a timetable
2026-11-02developers.cloudflare.com/pages/configuration/build-image/builds run in a gVisor container
2026-11-02developers.cloudflare.com/pages/configuration/build-image/the build image carries Ruby, Node.js, Python, PHP and Go
2026-11-02developers.cloudflare.com/pages/configuration/build-image/older build images are retired into the v3 image
2026-11-02developers.cloudflare.com/pages/how-to/use-direct-upload-witprebuilt assets can be deployed to Pages from an external CI system with Wrangler
2026-11-02developers.cloudflare.com/fundamentals/account/create-accounthe sign-up form asks for an email address and a password
2026-11-04developers.cloudflare.com/pages/platform/limits/Free allows 500 builds a month
2026-11-04probe: https://developers.cloudflare.com/pages/platform/limits/the limits page answered HTTP 200 on 2026-11-04
Unknown values 1
  • egress metered: egress metering was not published