Framer's hosting model is convenient but costly at scale. Every published site carries per-site fees, the "Made in Framer" badge, and no path to custom infrastructure. Cloudflare Pages offers a compelling alternative: unlimited bandwidth even on the free tier, commercial use allowed, and 330+ edge locations worldwide — all at no cost for most static sites. This guide covers the complete workflow to get a Framer site onto Cloudflare Pages in 2026.
The Quick Answer
You cannot deploy a Framer site directly to Cloudflare Pages. Framer has no native static export. The path is: publish your site in Framer → export it to static HTML/CSS/JS using a tool like PullPage → deploy that output to Cloudflare Pages.
For a simple site, the full process takes under 10 minutes. What makes Cloudflare Pages stand out compared to alternatives like Vercel and Netlify is that its free tier has no bandwidth caps and explicitly permits commercial use — which matters for agency work and client sites.
Why Cloudflare Pages Is Worth Considering for Framer Sites
Most static hosting platforms cap free-tier bandwidth at around 100 GB per month and restrict commercial use on free plans. Cloudflare Pages does neither. Static asset requests are free and unlimited on both the free and paid tiers — a direct consequence of Cloudflare's business model as a network company, where bandwidth is infrastructure rather than a revenue line.
In practical terms, this means:
A viral post won't generate unexpected bandwidth bills
Client sites can run on the free plan without violating terms of service
The same pricing structure applies whether you're deploying one site or twenty
Beyond pricing, Cloudflare's edge network spans 330+ locations worldwide. That translates to fast load times regardless of visitor location — Framer's Basic and Pro plans run on a 20-location CDN by comparison. For sites where Core Web Vitals scores matter for SEO, the infrastructure difference is real.
For a broader comparison of hosting options, Self-Hosting a Framer Site in 2026: The Complete Guide covers Cloudflare Pages alongside Netlify, Vercel, and GitHub Pages.
What You Need Before You Start
Before deploying to Cloudflare Pages, you need a clean static export of your Framer site — HTML, CSS, JavaScript, and all assets bundled locally, with no dependencies pointing back to Framer's CDN.
Here's what to have ready:
A published Framer site (you need a live URL to export from)
A PullPage account (free tier works for simple sites; paid plans handle CMS content, local assets, and SEO output)
A Cloudflare account (free to create at cloudflare.com)
A GitHub account if you want automated deployments via GitHub Sync — this is the recommended setup
If your export still references Framer's CDN for fonts, images, or scripts, those assets will break or load slowly once you're off Framer's hosting. A clean export bundles everything locally. PullPage's paid plans handle this automatically.
Step 1: Export Your Framer Site to Static HTML
Framer has no built-in export feature. You need an external tool to generate a deployable static export from your published Framer URL.
PullPage is purpose-built for this. Here's how it works:
Publish your site in Framer and copy the published URL
Paste the URL into PullPage
PullPage generates a static HTML/CSS/JS export — average export time is around 24 seconds
Download the ZIP file
The export strips the "Made in Framer" watermark, removes Framer editor scripts, and preserves Framer Motion animations, hover effects, and scroll transitions. For more on what the export process covers, see Can You Export a Framer Website in 2026? Yes – Here's How.
What Gets Exported
On the free plan, you get the core HTML/CSS/JS output. Paid plans also include:
All assets exported as local files (images, videos, fonts, documents, 3D models)
SEO settings preserved, with generated sitemaps
CMS content included, supporting 100+ page sites and exports over 500 MB
GitHub Sync for direct repo commits
If your site has a Framer CMS with dozens of collection items, use a paid plan. The free export will not capture all CMS pages reliably.
Step 2: Deploy the Export to Cloudflare Pages
Once you have the ZIP, you have two deployment paths: direct upload, or GitHub-connected auto-deployment.
Option A: Direct Upload via Cloudflare Dashboard
The fastest option for a one-time or infrequent deployment.
Log into Cloudflare and navigate to Workers & Pages in the sidebar
Click Create application → Pages → Upload assets
Give your project a name
Unzip the PullPage export on your machine and drag the folder into the upload area
Click Deploy site
Cloudflare processes the files and gives you a .pages.dev subdomain in under a minute. For subsequent deployments, you can upload a new folder to the same project without changing the domain or settings.
Option B: GitHub Sync for Automated Redeployment (Recommended)
This is the more durable setup if you update your Framer site regularly.
In PullPage, connect your GitHub account and select a target repository (paid plans)
PullPage commits the static export directly to the repo on each new export
In Cloudflare Pages, go to Workers & Pages → Create application → Pages → Connect to Git
Authorize Cloudflare to access your GitHub account and select the repository PullPage syncs to
Set the Build output directory to the root of the export (leave the build command blank — the site is already built)
Click Save and Deploy
After the initial setup, the update cycle is: edit in Framer, re-export via PullPage, and Cloudflare Pages picks up the new commit and redeploys automatically. No manual file handling.
This is the workflow that makes self-hosting practical at scale. Agencies managing multiple client sites use exactly this setup — see How an Agency Saved $1,200+ by Self-Hosting Framer Sites in 2026 for a concrete example.
Step 3: Configure Your Domain on Cloudflare Pages
Cloudflare Pages assigns a .pages.dev subdomain automatically. To use your own domain:
Go to your Pages project and click Custom domains
Enter your domain name and click Continue
If your domain is already on Cloudflare (i.e., using Cloudflare's nameservers), the DNS record is added automatically and the site goes live in minutes
If your domain is at a different registrar, Cloudflare shows you the CNAME record to add manually
Cloudflare provisions an SSL certificate automatically via its own certificate authority. Because Cloudflare also functions as a DNS provider, the domain setup is notably simpler than on Vercel or Netlify if you're already managing your DNS through Cloudflare.
Handling Framer CMS Content on Cloudflare Pages
Framer CMS is dynamic by nature. When you export a CMS-driven Framer site to static HTML, the CMS content gets rendered as static pages at export time. There is no live CMS connection after deployment.
In practice:
All CMS collection pages are exported as individual static HTML files
New CMS content added in Framer after the export will not appear on Cloudflare Pages until you re-export and redeploy
If your CMS updates frequently, you need a re-export workflow — either manual or automated via GitHub Sync
Cloudflare Pages' unlimited builds on the free tier (up to 500 per month) mean re-exporting and redeploying costs nothing beyond the time involved. For sites where content changes weekly or less, this is entirely manageable.
Performance on Cloudflare Pages After Export
A static Framer export on Cloudflare Pages typically delivers strong Core Web Vitals scores. The main factors:
LCP (Largest Contentful Paint): Improves significantly when assets are bundled locally rather than loading from Framer's CDN. Cloudflare's edge network serves files from one of 330+ locations worldwide — usually within milliseconds of the visitor.
CLS (Cumulative Layout Shift): Framer's layout system is CSS-based, so CLS is generally low in clean exports, regardless of host.
INP (Interaction to Next Paint): A clean export keeps Framer's interactive runtime intact, so INP stays comparable to the hosted site. Where the export helps is removing third-party tracking scripts and serving from the edge, and Cloudflare also adds free HTTP/3 and Brotli compression automatically.
Built-in analytics: Cloudflare Pages includes free, privacy-first web analytics at no extra cost — a useful baseline before adding a more detailed tracking solution.
PullPage's SEO-ready output also rewrites asset paths for optimized load times and generates a functioning sitemap. For the full configuration checklist, see How to Improve SEO for Framer Websites in 2026.
Common Issues and How to Fix Them
Broken Images or Fonts After Deployment
This happens when the export still references Framer's CDN instead of bundling assets locally. Switch to a paid PullPage plan, which exports all assets as local files, then re-export and redeploy.
Animations Not Working
Most Framer Motion animations are preserved in PullPage exports. If a specific animation is missing, it likely relies on Framer's runtime. Check the exported HTML for any remaining Framer script references.
404 Errors on Subpages or CMS Pages
Cloudflare Pages serves static files by path. If a visitor lands directly on a subpage URL that doesn't have a corresponding HTML file at that path, it will return a 404.
There are two ways to handle this. For client-side routed sites, add a _redirects file to your export's root directory:
For multi-page sites where each page has its own HTML file (the default PullPage output), this is usually not needed.
If CMS pages are returning 404, the export likely didn't capture all collection items. Verify you're on a paid PullPage plan with CMS export enabled.
Cloudflare Pages vs. Vercel vs. Netlify for Framer Exports
All three platforms work well for static Framer exports. The differences come down to pricing structure and infrastructure:
Cloudflare Pages is the most generous free tier for production use: unlimited bandwidth, commercial use explicitly allowed, and 330+ edge locations. The free plan covers most client and business sites without restriction. Limitations: 500 builds/month on the free plan (rarely an issue for most sites).
Vercel (Hobby plan) is free but restricted to personal, non-commercial projects. Business or client sites require the Pro plan at $20/seat/month. Developer experience is polished, particularly for JavaScript-heavy workflows.
Netlify offers a free plan suited to personal projects. Paid plans start at $9/month (Personal) and $20/month (Pro, per organization). Netlify has updated its pricing model to a credit-based system — check current limits before committing.
For agencies or anyone deploying commercial sites, Cloudflare Pages is the most cost-effective starting point. For a full breakdown of hosting costs when self-hosting Framer sites, see Framer Hosting Costs in 2026: What You're Actually Paying (And How to Cut It).
The Full Workflow, End to End
The complete path without ambiguity:
Design and publish your site in Framer
Paste the published URL into PullPage and generate a static export
Download the ZIP or use GitHub Sync to commit directly to a repository
Connect the repository to Cloudflare Pages — or upload the folder directly for a one-off deploy
Configure your custom domain in Cloudflare Pages' project settings
Re-export and redeploy whenever you update the Framer source
The economics work clearly: Cloudflare Pages' free tier handles most commercial static sites at no cost, and you eliminate Framer's per-site hosting fees entirely.
Export your Framer site and deploy it to Cloudflare Pages at pull.page

