Framer keeps your site on its own hosting infrastructure by default. If you want to move to Netlify — for cost control, cleaner infrastructure, or just more ownership over where your site lives — there's no direct path built into Framer.
This article covers the complete process: exporting your Framer site to static HTML and deploying that export to Netlify correctly.
The Quick Answer
Framer has no native “deploy to Netlify” option. You need to export your site as a static HTML/CSS/JS bundle first, then deploy that bundle. The fastest way to do this in 2026:
Use PullPage to generate a clean static export from your published Framer URL
Download the ZIP or sync the export to a GitHub repo
Deploy to Netlify via drag-and-drop, or connect the GitHub repo for automatic deploys on every re-export
The rest of this article walks through each step in detail.
Why You Can't Deploy Framer Directly to Netlify
Framer publishes to its own CDN. There's no export button in the editor that produces a deployable ZIP — not one that includes all assets, strips Framer's editor scripts, and preserves animations correctly.
What Framer gives you is a published URL. That URL renders your site correctly, but the output is tied to Framer's infrastructure. You can't point Netlify at a Framer URL and call it deployed.
To host on Netlify, you need a self-contained static export: HTML, CSS, JavaScript, fonts, images, and all other assets bundled locally with no dependencies back to Framer's servers.
That's the gap PullPage fills. If you want the broader picture on export options, Can You Export a Framer Website in 2026? Yes – Here's How covers everything available.
Step 1: Publish Your Framer Site
Before anything else, your Framer site needs to be live. PullPage works from a published URL — not from a Framer project file.
In Framer, click Publish and copy the URL. It'll look something like yoursite.framer.website, or your custom domain if you've already connected one.
Keep that URL handy. You'll paste it into PullPage in the next step.
Step 2: Export Your Framer Site to Static HTML
Go to pull.page and paste your published Framer URL into the export tool.
PullPage's rendering engine is purpose-built for Framer. The export captures:
Framer Motion animations and hover states
CMS content and multi-page structures
All local assets — images, fonts, videos, documents — on paid plans
SEO settings and sitemaps
Clean HTML output with Framer's editor scripts and the “Made in Framer” watermark removed
Exports generate in roughly 24 seconds. The result is a ZIP file containing everything Netlify needs to serve your site.
On a paid plan, you also get GitHub Sync — which commits the export directly to a repository and triggers automatic Netlify deploys every time you re-export.
Worth understanding: the free plan handles simple sites well. But if your site has CMS collections, local assets, or more than a handful of pages, a paid plan is the practical choice. The free plan has export size and page count limits. For a detailed comparison of export tools, see Best Framer Export Tools in 2026: 7 Tools Tested.
Step 3: Deploy the Export to Netlify
From here, you have two paths: drag-and-drop or GitHub-connected deploys.
Option A: Drag-and-Drop Deploy
The fastest option for a one-time or infrequent deployment.
Log into Netlify and go to the Sites section
Unzip the PullPage export on your machine
Drag the unzipped folder into Netlify's deploy drop zone
Netlify processes the files and gives you a live URL in under a minute
Your site is now on Netlify's CDN. Configure your custom domain, SSL, and any redirect rules from the Netlify dashboard.
Option B: GitHub-Connected Deploy (Recommended for Ongoing Sites)
If you update your Framer site regularly, connecting Netlify to a GitHub repo is the cleaner long-term workflow.
In PullPage, use GitHub Sync to push your export to a repository (available on paid plans)
In Netlify, go to Add new site → Import an existing project
Connect your GitHub account and select the repository PullPage syncs to
Set the publish directory to the root of the export, wherever the HTML files land
Click Deploy site
After that initial setup, every time you update your Framer site and re-export via PullPage, the new export commits to GitHub and Netlify redeploys automatically. No manual uploads. Agencies running multiple client sites use this exact workflow to keep overhead low — see How an Agency Saved $1,200+ by Self-Hosting Framer Sites in 2026 for a concrete example.
Configuring Netlify for a Framer Static Export
A few settings are worth adjusting after your first deploy.
Redirects and 404 Handling
Framer sites use client-side routing for some navigation. If a visitor lands directly on a subpage URL, Netlify needs to know how to handle it — otherwise it returns a 404.
Add a _redirects file to your export's root directory with this rule:
/* /index.html 200
This tells Netlify to serve index.html for any path it doesn't find a matching file for, letting the client-side router take over.
Custom Domain and SSL
In the Netlify dashboard, go to Domain settings and add your custom domain. Netlify provisions an SSL certificate automatically via Let's Encrypt. DNS propagation typically takes a few minutes to a few hours depending on your registrar.
Asset Caching Headers
Netlify's default cache headers are reasonable, but you can improve performance by adding long-lived cache headers for static assets. Add a netlify.toml file to your export root:
[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
Adjust the path pattern to match where PullPage places your assets in the export structure. For a deeper look at what to optimize after deployment, the guide on improving SEO for Framer websites covers the full post-migration checklist.
What Happens to the “Made in Framer” Watermark
Framer adds a “Made in Framer” badge to sites on its hosting. When you export via PullPage, that badge is automatically stripped from the static output — along with Framer's editor scripts and any other Framer-specific injected code.
Your Netlify-hosted site will be clean HTML with no reference back to Framer in the rendered output. If that matters for client work, the full process for removing the Framer watermark is covered separately.
Tradeoffs Worth Knowing Before You Commit
Self-hosting on Netlify via a static export isn't a perfect substitute for Framer's native hosting in every situation. Here's what changes:
Framer CMS updates require a re-export. If content editors update your site regularly through Framer CMS, each update needs a new export and redeploy. With GitHub Sync this is low-friction, but it's not instant the way Framer's native publish is.
Form handling needs a separate solution. Framer's native form submissions won't carry over to a static export. Netlify Forms can handle this — add a netlify attribute to your form HTML — but it requires a small manual edit to the exported files.
Framer's built-in analytics won't follow. If you rely on Framer's analytics dashboard, you'll need to add your own tracking (Google Analytics, Plausible, Fathom, etc.) to the exported site.
These are real tradeoffs. For most portfolios, marketing sites, and agency client work, they're acceptable. The complete self-hosting guide covers forms, analytics, and everything else you need to configure after the move.

