Your Webflow site can be beautifully designed and still be difficult to move. The usual point of friction is CMS content: a marketing site may have collection-driven pages, image assets, scripts, and internal paths that must all survive outside the editor. This guide shows how to create a portable static copy of a published Webflow CMS site and put it on GitHub Pages. You need a published Webflow URL, access to a GitHub repository, and a few minutes for testing.

1. Decide what the static copy must include

Start with a short inventory before you export. List the public pages, the CMS collection templates that matter, key images, downloadable files, site navigation, and any redirects you expect visitors to use. For a catalogue or resource site, include a few representative collection items rather than checking only the homepage.

A static copy is most useful when it gives you a deployable backup, a client-handoff version, or a hosting path you control. It is not a substitute for live Webflow editing; changes made after the export need another export and deployment. If your goal is specifically to preserve a CMS-led Webflow site, use a platform-aware exporter instead of assuming a generic downloader will understand every asset and route.

Aurora checklist for auditing a Webflow CMS export

2. Export the published Webflow site

Open ExFlow’s Webflow exporter and enter the published site URL. ExFlow is designed to collect the published pages, CSS, JavaScript, images, media, and CMS-style routes into a static export. Choose the option to download a ZIP if you want a local review first, or select a deployment target if your process already uses Git, S3, or FTP.

When the export finishes, unpack the ZIP into a new local folder. Your expected result is a root document plus asset folders and pages or directories corresponding to the routes you inventoried. Keep this folder separate from an existing production repository until the checks below pass. For a fuller routing checklist, see how to export a Webflow CMS site to static HTML without missing key pages.

3. Check CMS routes and static paths locally

Open the exported index.html in a local static server if you have one, or use the preview feature in your editor. Visit the homepage, one page from each important CMS collection, and at least one nested route. Check that navigation lands on the expected file or folder, not a development-only URL.

Then inspect the page source or browser network panel for missing image, CSS, font, or JavaScript requests. Watch for root-relative paths such as /assets/...; these can be correct on a custom domain but need deliberate handling if you will publish under a subpath. Confirm metadata too: the page title, description, canonical setting, and social image should still make sense after the move.

4. Put the export in a clean GitHub Pages repository

Create a repository for the static site, or use a branch that is explicitly dedicated to the exported build. Copy the contents of the export folder—not the folder itself—into the repository root. Commit the files with a message that identifies the source and date, such as Add Webflow static export.

Push the commit, then open Settings → Pages in GitHub. Choose Deploy from a branch, select the branch containing the export, and select the root folder unless your site is intentionally in /docs. GitHub Pages will publish the files and give you a site URL. Your expected result is a live homepage with the same main layout and asset loading as your local check.

Aurora static website files flowing into a versioned deployment

If you need a repeatable handoff, this complements the workflow in how to move a Webflow campaign site into Git before the next launch. A versioned export makes it easier to compare changes before another deployment.

5. Run a production QA pass

After Pages finishes building, test the public URL rather than assuming the local preview was enough. Use this small checklist:

  1. Open the homepage, major navigation links, and sample CMS pages in an incognito window.
  2. Test at a narrow mobile width and a desktop width; check menus, breakpoints, and hero media.
  3. Confirm images, fonts, scripts, and animations load without console errors.
  4. Test forms or replace them with the form provider URL you intend to use—static hosting does not automatically recreate a platform form backend.
  5. Review redirects, metadata, canonical URLs, and any analytics or custom scripts.

Aurora quality assurance view of a responsive exported website

The best time to find an asset-path or interaction problem is before you tell a client the handoff is complete. The same discipline is useful for polished landing pages too; this Framer static-export testing guide is a useful adjacent checklist.

6. Make the next export easier

Save your page inventory and QA checklist in the repository. On the next release, export again, review the changed files in Git, and repeat the public smoke test. If the exported site is the long-term destination, connect a custom domain only after the public routes and metadata are correct.

Start a Webflow export with ExFlow when you need a static HTML, CSS, JavaScript, asset, and CMS-page copy of a published Webflow site. ExFlow also has dedicated Squarespace and Framer exporters, but keep the platform-specific workflow as your starting point.

A portable Webflow CMS export is not just a ZIP: it is a checked, versioned deployment. Export one representative site, validate its public routes on GitHub Pages, and keep the checklist beside the repository for the next handoff.