Skip to main content
All articles

How to Export Code From Webflow: 2026 Migration Checklist

Webflowwebflow export codestatic hostingweb design

To export code from Webflow, open the site, press Shift + E (or go to Main menu > Code export), click Prepare ZIP and download the file. You need a paid Workspace plan for it; the cheapest is Freelancer at $16 a month billed yearly, as of October 2026. The ZIP leaves out CMS content, Ecommerce, form handling, site search, password protection, secondary locales, the sitemap, robots.txt and 301 redirects.

That's the easy part. If you build client sites in a Freelancer or Agency Workspace, Webflow's new Site plan prices reach them at their first renewal or billable change on or after November 16, 2026, and you might be deciding which ones to migrate. A live client site is a different job from a ZIP on your desktop: Google knows its URLs, the forms have to keep landing somewhere, and the old site shouldn't go dark early. This is the full Webflow migration checklist: what to save, how to keep every URL working, and when to switch DNS.

What does Webflow's code export include?

Webflow's code export is a ZIP of the whole site as static HTML, CSS and JavaScript, plus your images; there's no per-page option. Per Webflow's help center, forms, navbars, sliders, tabs and interactions all rely on the exported JS, so don't delete it. Here's the shape of a real export, going by Webflow exports people have published on GitHub:

your-site/
  index.html
  about.html
  detail_post.html      <- CMS template page, exported empty
  401.html
  404.html
  css/
    normalize.css
    webflow.css
    your-site.webflow.css
  js/
    webflow.js
  images/
  fonts/                <- custom fonts, if you uploaded any
  documents/            <- other uploads, such as Lottie JSON files

Two more things worth knowing:

  • Pages are .html files, and links point at them. Your nav links to about.html, not /about. Remember that. It comes back in the URL section.
  • jQuery still loads from Webflow. Exported pages pull jQuery 3.5.1 from d3e54v103j8qbb.cloudfront.net, Webflow's CloudFront address, and some newer exports also load scripts from cdn.prod.website-files.com. It works, but it isn't fully self-contained.

What does Webflow's code export leave behind?

A Webflow export is a snapshot of the front end. Anything that needs Webflow's servers stays behind:

What the Webflow export keeps and leaves behind, checked October 2026.

FeatureIn the export?What to doSource
CMS Collection contentNo. Template pages export empty and Collection lists show their empty stateExport a CSV per Collection, then pick a route belowCode export
CMS images and filesNo. The CSV lists them as Webflow-hosted URLs, which break if the site is deletedDownload them before you delete anythingCMS CSV export
FormsThey render but don't submit. File upload and reCAPTCHA don't work. Past submissions are exported separatelyPoint each form at a form service and export the submissions CSVCode export, Form submissions
EcommerceNo (products and checkout)Stay on WebflowCode export
Site searchNoAdd a third-party search tool or drop searchCode export
Secondary localesNo. Only the primary locale is exportedStay on Webflow, or rebuild the locale pagesCode export
Password protection (page and site)No. Protected pages become publicPassword-protect the new site with the host's access controlCode export
Code componentsNoRebuild them outside WebflowCode export
sitemap.xml and robots.txtNo. Webflow generates them as hosting featuresSave the live files and upload them with the exportSitemap, robots.txt
301 redirectsNo, but you can export them as a CSVRecreate them on a host with redirect rules301 redirects
Lottie animationsYes, but they won't load from file://Test from a local web serverCode export FAQ
Custom code embedsYesCheck third-party scripts still load on the new domainCustom code embed
InteractionsYes, they run from the exported webflow.jsClick through every animated sectionCode export

A mostly static site (portfolio, marketing site, landing page) is covered once forms and the files below are handled. CMS content needs a plan of its own.

CMS content: three routes

  1. Rebuild from the CSV. Each Collection exports as a CSV, with rich text as HTML, so a static site generator or a few hand-built pages can recreate it. If the client needs a real CMS afterward, moving from Webflow to WordPress is the other well-worn path, and moving a Webflow site to Framer works from the same CSVs.
  2. Keep it on Webflow. For CMS-heavy sites, Webflow Premium at $25 a month billed yearly ($39 monthly, as of October 2026) is often the sensible answer. Export the brochure sites, keep the content-heavy ones.
  3. Crawl a snapshot. A crawler saves every published CMS page as plain HTML, frozen as it looks today. It's workable for your own sites, or for a client's with their sign-off once you've read Webflow's acceptable use policy. The checks are in the exporters section below.

Which Webflow plan do you need to export code?

Code export lives on paid Workspace plans; a Site plan or the free Starter Workspace won't do, per Webflow's help center. As of October 2026, the cheapest way in is Freelancer at $16 a month billed yearly. In-house teams start at Core, $19 a month billed yearly.

Webflow Workspace plans per webflow.com/pricing, checked October 2026.

PlanBilled yearlyBilled monthlyCode export?
StarterFreeFreeNo
Core$19/mo$28/moYes
Growth$49/mo$60/moYes
Freelancer$16/mo$24/moYes
Agency$35/mo$42/moYes

Code export belongs to the Workspace, so one paid plan covers every site in it.

Third-party Webflow exporters

Look for a free way to export Webflow code and you'll find tools that skip Webflow's export and crawl the published site instead:

  • ExFlow (exflow.site, which the old Webflow Exporter address now redirects to). It says it includes CMS collection pages, with a free tier and paid plans from $5.99 a month (October 2026).
  • NocodeXport (nocodexport.com). Paste a URL, get a ZIP; full-site exports are a one-time paid purchase per site (October 2026).
  • HTTrack and wget. General-purpose copiers that mirror any public site.

You get a frozen snapshot of the rendered pages, CMS item pages included. Three checks before you rely on one:

  • Asset paths. Search the saved HTML for Webflow domains. Images or scripts still loading from Webflow's servers will disappear with the Webflow site.
  • The terms. Read Webflow's terms and acceptable use policy (effective October 6, 2026), which has a clause about page-scraping tools, plus the tool's own disclaimer. ExFlow's footer says complying with Webflow's terms is your responsibility.
  • Forms and interactions. Same rules as the official export.

I'm not endorsing any of these. For a paying client's site, the official export plus the checklist below is the path I'd stand behind.

Before you export: what to save from Webflow

Before you export, save the sitemap and robots.txt, the 301 redirects CSV, a CSV per CMS Collection plus its images and files, past form submissions, any secondary-locale URLs and each page's SEO settings, then point the forms at their new backend. Treat it like a save point before a boss fight: once the Site plan ends, Webflow unpublishes the site, and some of this gets a lot harder to recover. Work through it while the site is still live:

  1. Save /sitemap.xml and /robots.txt. Open both on the live domain and save the files. The sitemap doubles as your list of every URL that has to keep working.
  2. Export the 301 redirects. Site settings > Publishing > 301 redirects > Export. Webflow emails you a link to the CSV.
  3. Export a CSV per CMS Collection. CMS panel > pick the Collection > Export, once per locale. Then download the images and files: Webflow's help center warns that the links in the CSV break if you delete the site, images inside rich text included.
  4. Export form submissions. Site settings > Forms > View submissions > Export all, per form. Uploaded files come through as URLs, so download those too.
  5. List secondary-locale URLs. With Localize on, the sitemap carries hreflang tags for every locale. Decide now where those pages go.
  6. Set each form's Custom action in the Designer (see the forms section). Do it after step 4: once a form uses a Custom action, Webflow stops storing its submissions.
  7. Check each page's SEO settings. Title, meta description and Open Graph image live in Page settings. If Site settings > SEO > Global canonical tag URL is empty, set it to your site's default domain (like https://www.example.com, no trailing slash) and publish before you export.

How to export a Webflow site (step by step)

  1. Open your site in Webflow.
  2. Open Code export. Click the "W" logo in the upper-left corner for the Main menu, then choose Code export. Or press Shift + E.
  3. Minify the HTML (optional). In the export window, press Cmd + O (Mac) or Ctrl + O (Windows) to reveal a hidden Minify HTML checkbox, and tick it.
  4. Click Prepare ZIP.
  5. Download the ZIP file.

Next, unzip it and test it from a local web server, not by double-clicking index.html, because Lottie animations won't load from your file system. With Python 3 installed:

cd ~/Downloads/your-site
python3 -m http.server 8000

Open http://localhost:8000, click through every page, trigger the interactions and resize the window to check breakpoints. Ctrl + C stops the server.

Fixing forms after export

Forms are the part most likely to break silently. They still render, but submissions go nowhere, because Webflow's form handling needs a Webflow Site plan. Swap in a third-party form backend, and do it in the Designer so every re-export ships with a working form.

Option 1: Formspree

Formspree's Free plan handles 50 submissions a month, and Formspree pitches it "for testing and development" (October 2026).

  1. Sign up at formspree.io and create a form to get its endpoint URL
  2. In the Webflow Designer, select your form and open the Settings panel
  3. Under Send to, remove the Webflow and Email notifications destinations (they can't be combined with a custom action), then add a Custom action with your Formspree endpoint as the URL
  4. Set the method to POST, save, publish and re-export

Hand-edit the exported HTML instead and your next re-export wipes the fix. The form tag in the export ends up roughly like this (Webflow adds a few attributes of its own):

<form action="https://formspree.io/f/your-form-id" method="POST">
  <!-- your existing form fields stay the same -->
  <button type="submit">Send</button>
</form>

Option 2: Formspark or Basin

Formspark (250 free submissions per account, one-time) and Basin (one endpoint, 50 a month, 30-day data retention on free) work the same way, as of October 2026.

Option 3: Netlify Forms (if you host on Netlify)

Netlify picks up forms with a data-netlify="true" attribute: add it in the Designer as a custom attribute on the form (name data-netlify, value true) so it survives re-exports, then turn on form detection under Forms in the Netlify UI. Its examples use method="POST", so check the exported <form> tag, and keep in mind this ties your forms to Netlify hosting.

Whichever you pick, send a real test submission from the new host before the cutover.

How do you keep your URLs working after leaving Webflow?

Old URLs keep working only if the new host serves about.html at /about, as every host in the table below does. Then recreate the 301s from the exported CSV and check every sitemap URL on the preview before DNS switches. Most Webflow export guides skip this part.

On Webflow, your About page lived at /about. In the export, it's about.html, and the export's own links point there, so clicking around works anywhere. But Google indexed /about, other sites link to it, and it might be on the client's business cards.

How hosts handle /about for an exported about.html, checked October 2026.

Host/about serves about.html?Redirect rulesSource
Cloudflare Workers static assetsYes, by default. /about.html gets a 307 redirect to /about_redirects file, up to 2,000 static and 100 dynamic rulesHTML handling, Redirects
NetlifyYes (200 in a live test, October 15, 2026)_redirects file or netlify.tomlRedirects, live netlify.app test
GitHub PagesYes. /about.html also returns 200None (no server-side 301s)Test of a Webflow export live on github.io, October 15, 2026
HostsmithYes. /about.html also returns 200NoneHostsmith team test deploy, October 19, 2026

Netlify's docs describe Pretty URLs (on by default) redirecting these paths differently from what the test showed, so run the URL check below on your own site; it catches either behavior. Host not on the list? Test it the same way. Webflow's own FAQ points Apache users to an .htaccess rule for dropping the .html.

Check every URL before the DNS switch

Deploy the export to the new host's preview URL first, with your saved sitemap.xml in the folder you run this from:

LIVE="https://www.example.com"
NEW="https://example-preview.netlify.app"
grep -q "<loc>$LIVE" sitemap.xml || echo "LIVE doesn't match the sitemap's domain"
grep -o '<loc>[^<]*</loc>' sitemap.xml | sed -e 's|<loc>||' -e 's|</loc>||' -e "s|$LIVE|$NEW|" |
while read -r url; do
  code=$(curl -s --max-time 10 -o /dev/null -w '%{http_code}' "$url")
  [ "$code" = "200" ] || echo "$code $url"
done

What each part does:

  • LIVE is the domain exactly as your sitemap writes it, and NEW is the preview URL, both without a trailing slash.
  • The first grep is a guard: if LIVE doesn't match the sitemap, nothing gets swapped and the loop silently tests the old Webflow site.
  • The second grep pulls every <loc> entry out of the sitemap, and sed strips the tags and swaps in the preview domain.
  • The loop requests each URL with curl, gives up after 10 seconds, and prints anything that isn't a 200. No output means every URL answered.

Expect CMS item URLs in that list unless you rebuilt or crawled those pages. That's your to-do list. After the DNS switch, set NEW to the same value as LIVE and run it again.

Canonicals. On Netlify, GitHub Pages and Hostsmith both /about and /about.html return 200, and the export links to about.html, so the canonical tag tells Google which one counts. Webflow builds each page's canonical from the global canonical URL plus the page slug. Check a few exported pages: <link rel="canonical"> should use the clean /about form on the live domain, not a .html path, webflow.io or the preview URL.

Redirects. Turn the exported CSV into rules wherever the host supports them. Each row is an old path and a new one, so in a _redirects file it becomes one line:

/old-services /services 301

Spell out the 301: Cloudflare uses a 302 if you leave the status off. On a host without redirect rules, those old paths will 404; if any of them still get traffic or links, pick a host with a _redirects file. The fallback is a stub page at the old path with an instant meta refresh, which Google's redirect docs say it treats as a permanent redirect.

When to cancel Webflow hosting and switch DNS

Switch DNS while the Site plan still has time left, then let the downgrade take effect at the end of the billing period, so the old Webflow site stays up as your fallback.

Canceling a Site plan (Site settings > Plans > Website tab > Downgrade to Starter, after removing any add-ons) removes the custom domains and unpublishes the site, on both the custom domain and webflow.io, at the end of the current billing period. Purchases are non-refundable, and "Downgrade now" skips the overlap, so don't use it. If the cutover slips, Webflow Support can cancel a scheduled downgrade. Scheduled before the renewal, the downgrade ends the Site plan, so there's nothing left to reprice. Whether a given site should move at all is a money question, and the Webflow Freelancer and Agency Workspace plans post models a ten-site book.

The order:

  1. Deploy and test early. Add the saved sitemap.xml and robots.txt to the export (minus URLs you're not keeping), deploy to the preview URL and run the URL check.
  2. Schedule the downgrade to Starter once that check passes, before the renewal date.
  3. Lower the DNS TTL on the domain's records, then wait at least as long as the old TTL.
  4. Switch DNS to the new host, well before the billing period ends. Add both example.com and www.example.com on the new host, and check that the one Google didn't index redirects to the one it did.
  5. Wait for the SSL certificate to issue on the new host.
  6. Run the URL check against the live domain.
  7. Submit the sitemap in Google Search Console.

Keep the Workspace plan if you'll re-export: every design change means a fresh export, and the site now counts as one of your Workspace's staging sites (10 on Freelancer, unlimited on Agency, as of October 2026).

Where to host the export

Any static host can serve the files; the URL table above is what separates them. For prices and limits, compare hosts for an exported Webflow site. One gotcha each:

  • GitHub Pages: GitHub's docs say Pages is "not intended for or allowed to be used as a free web-hosting service to run your online business", which rules out most client sites. More in GitHub Pages alternatives.
  • Netlify: the Free plan gets 300 credits a month, a production deploy costs 15 and each GB of bandwidth 20 (October 2026). When a Free account runs out, every project on it is paused.
  • Cloudflare (Workers static assets or Pages): the Pages docs say "Start new projects with Workers", and requests to static assets are free and unlimited (October 2026).

Hostsmith (Drag-and-Drop, Fast CDN)

Hostsmith takes the exported ZIP as is: drag it onto the page and the site is live in under a minute, on a hostsmith.link address you can show the client before the domain moves over. No Git, no build configuration, no framework selection screens.

Run the URL check above against the hostsmith.link address before the domain moves. Hostsmith answers /about from about.html, so the static pages in the old sitemap should all come back 200.

Your site gets served from a global CDN, so it loads fast regardless of where your visitors are. As of October 2026, the Free plan gives you one site with 5,000 monthly visitors on a hostsmith.link address and 5 MB of storage (also the cap on a single upload), so it suits a lean landing page or a quick client preview. An image-heavy portfolio export will outgrow it fast. If you're hosting several client sites, Pro costs $15 a month on yearly billing ($21 on monthly) and covers 5 sites with custom domains, 500 MB of storage and 100,000 monthly visitors (you'll still need a Workspace plan for the exports, if you don't already pay for one).

For agencies moving client sites off Webflow regularly, that's one bill and one dashboard for all of them, from the ZIP to the client's own domain.

If you want a deeper comparison of drag-and-drop platforms, there's a breakdown of drag-and-drop website hosting options that covers the workflow differences in detail.

When you should NOT export from Webflow

Exports suit sites whose content is set once: landing pages, event pages, a portfolio website. Keep the site on Webflow hosting if:

  • It depends on something in the table you can't replace. CMS content none of the three routes fits, Ecommerce, or secondary locales.
  • The client edits content themselves. Client seats let them edit in Webflow (1 per site on Freelancer, 3 on Agency, as of October 2026); after an export, their edits need a re-export and redeploy to go live.

If the client wants off Webflow altogether, a rebuild elsewhere is the other route; start with these Webflow alternatives for client sites.

The export is the easy part

Pressing Shift + E takes a minute. The migration is the URL check and the renewal date. If the check isn't clean two weeks before the renewal, renew once more and do it properly (on a yearly site, check whether a month on monthly billing is the cheaper bridge).

Frequently asked questions

Can I export Webflow code for free?

Not with Webflow's own tool: it needs a paid Workspace plan, from $16 a month billed yearly for Freelancer (October 2026). Crawler-based exporters like ExFlow, NocodeXport, HTTrack and wget can copy the published site without one, but read Webflow's acceptable use policy and check the asset paths first.

Does Webflow export CMS content?

No. Collection lists show their empty state and template pages come out blank. Export each Collection from the CMS panel as a CSV, and download its images, because the Webflow-hosted URLs in the CSV break if the site is deleted.

Will my Webflow interactions still work after export?

Yes. Per Webflow's help center, interactions run from the exported JS, so keep the js folder intact. Lottie animations work too, but only from a web server, not straight from disk.

Can I re-import exported code into Webflow?

No. Webflow's migration overview says there's no automated way to convert a site from another platform into Webflow, and that migrating to Webflow "will be a rebuild, not a transfer." What does go back in: 301 redirects and CMS Collections, both as CSV files imported into another Webflow site (file fields need uploading by hand).

Do I still need a Webflow plan after exporting?

Not for the site to work: Webflow says the export needs no attribution and no Webflow plan on your own server. You do need a paid Workspace plan for each future export.

What happens when I cancel the Webflow Site plan?

Webflow removes the custom domains and unpublishes the site, on both the custom domain and webflow.io, at the end of the billing period, with no refund. The cutover steps above show how to time it.