Static SiteWordPressMigrationGatsbyNetlify

Convert Static Site to WordPress: 5 Methods Ranked by Speed, Fidelity & Cost

May 21, 20268 min readBy Ash de Backer

"Static site to WordPress" covers a huge range of starting points: a Gatsby-generated site, a hand-coded HTML template, a Netlify-hosted marketing page, a downloaded Webflow export, a Next.js app deployed to Vercel. Each one has different conversion complexity, different fidelity risks, and a different optimal method. This guide ranks all five approaches by the metric that actually matters for your project.

What "static site" means in 2026

The term is broader than it was five years ago. A "static site" might be:

  • Classic static HTML: An HTML file, a CSS file, maybe a few JS libraries. No build process, no framework.
  • Framework-generated static: Gatsby, Next.js with output: 'export', Astro, Hugo — a build tool outputs HTML files that are served directly from a CDN.
  • Rendered SPA: A React or Vue app where JavaScript assembles the page in the browser. Technically not static, but hosted statically on Netlify or Vercel.
  • Platform export: A Webflow export, a Framer static export, a Wix export. Platform-specific HTML with dependencies on the platform's CSS/JS infrastructure.

Each type requires a different conversion approach. Let's rank them.

Method 1: Manual PHP theme assembly

Speed: Slow (6–20 hours) · Fidelity: 100% · Cost: Developer time

Split your HTML into WordPress template files, enqueue assets via functions.php, and wire up the WordPress loop where content appears. Full guide in HTML to WordPress Theme: The Complete 2026 Guide.

Manual assembly produces the cleanest result for classic static HTML. For framework-generated static sites (Gatsby, Next.js export), you're working with a compiled HTML output that references hashed asset filenames (/_next/static/chunks/xyz.js) — those paths don't exist in WordPress and need to be re-mapped or the assets re-bundled.

For rendered SPAs (React, Vue), manual conversion means extracting the pre-rendered HTML (which requires running the app and saving its output), then converting that to PHP template files. This is significantly more work than converting classic static HTML.

Best for: Simple HTML/CSS/JS sites where a developer will maintain the theme long-term.

Method 2: Page builder widget embedding

Speed: Fast (1–3 hours) · Fidelity: 75–85% · Cost: Page builder subscription

Open Elementor, Divi, or Beaver Builder. Create a new page. Paste your HTML into a Custom HTML widget. Add your CSS to the page's custom CSS field. Add your JavaScript to a Code Snippet plugin or the Custom HTML widget.

This works well for simple designs. It breaks for complex ones because:

  • Page builder containers add wrapper divs that change the CSS cascade
  • CSS that was scoped to body now needs to be re-scoped to the container
  • JavaScript that measured element positions relative to the viewport gets miscalculated inside a builder column
  • The page builder's own CSS conflicts with yours on naked elements (h1, p, a)

The fidelity loss is manageable for simple designs. For anything with complex layout, custom scroll behaviors, or canvas-based animations, plan to spend significant time debugging.

Best for: Clients already on a page builder who need a quick result and don't need pixel-perfect fidelity.

Method 3: Headless WordPress with static front-end

Speed: Very slow (setup + ongoing) · Fidelity: 100% · Cost: Significant infrastructure

Keep your static site as-is. Use WordPress purely as a CMS and content API (WPGraphQL or REST API). Your Gatsby, Next.js, or Astro site queries WordPress for content and renders statically.

This is the "correct" architectural answer for teams with strong JavaScript capabilities. It's also massive overkill for most projects and creates ongoing infrastructure complexity: you're now maintaining two systems (WordPress CMS + JS frontend), two deployment pipelines, and two sets of performance concerns.

Best for: Large sites with heavy editorial teams and dedicated DevOps capacity. Not for agencies or freelancers doing one-off client projects.

Method 4: WordPress importer with redesign

Speed: Medium (2–10 hours) · Fidelity: Low · Cost: Page builder subscription + time

Import your static site's content into WordPress using the WordPress importer or WP All Import. Pick a WordPress theme that's close to your design and customize it to match.

This is the "start over" approach. You're not converting the design — you're recreating something close to it using WordPress-native tools. For sites where the design doesn't matter much (internal tools, simple informational sites), this is fine. For design-first projects where the client approved a specific visual, this usually results in 4 rounds of revision as you try to match a design with the wrong building blocks.

Best for: Sites where content matters and design is generic. Not for any project with a custom, approved design.

Method 5: Automated URL-based capture

Speed: <1 minute · Fidelity: 100% · Cost: $499 per theme

Tools like StaticToWP render the live URL of your static site in a real browser, capture all computed CSS (including framework-generated styles, CSS-in-JS, Tailwind JIT output), bundle external scripts locally, and output a complete WordPress theme zip.

This approach works for every static site type:

  • Classic HTML: Source CSS and JS captured directly, converted to WordPress enqueue calls
  • Gatsby/Next.js export: The rendered HTML output is captured — compiled assets are inlined, not referenced by hashed URLs that won't exist in WordPress
  • React/Vue SPA: The page renders in a real browser, so JavaScript-generated content is captured as static HTML; React remount scripts are stripped for SSR sites
  • Webflow export: The live Webflow URL is rendered post-IX2-execution, capturing interaction CSS as static keyframes
  • AI-generated designs: Any publicly accessible Lovable, v0, Bolt, or Framer deployment works

The theme zip includes front-page.php, functions.php, theme.json, all assets, block patterns from detected sections, ACF field groups for editable content, and Elementor-compatible templates for page builder users.

Best for: Any project where speed and fidelity both matter. The tradeoff vs. manual: less developer control over the generated PHP (though all files are editable). More details on what the theme contains and how to install it in v0, Lovable & Bolt to WordPress.

Ranked by use case

Starting pointFastest methodHighest fidelity
Plain HTML/CSS siteAutomated captureManual or automated
Webflow exportAutomated capture (live URL)Automated capture
Gatsby / Next.js static exportAutomated capture (deployed URL)Manual (complex, hashed assets)
React / Vue SPAAutomated capture (live URL)Automated capture
AI tool design (Lovable, v0, Bolt)Automated captureAutomated capture
Design doesn't matterWP importer + new themeN/A

What about preserving SEO through the migration?

Regardless of which method you use, protect your organic rankings:

  1. Match URL structure. WordPress defaults to /?p=123. Set Permalinks to Post name. Match your static site's URL patterns exactly.
  2. Set up 301 redirects. Any URL that changed — even a trailing slash difference — needs a redirect. Use the Redirection plugin.
  3. Transfer meta tags. Your static site's <title> and <meta name="description"> don't automatically become WordPress SEO. Install Yoast or Rank Math and re-enter them.
  4. Update canonical tags. Ensure WordPress generates canonical tags pointing to your new domain, not the old static host.
  5. Submit new sitemap. After migration, submit your WordPress sitemap to Google Search Console and remove the old sitemap URL.

Ash de Backer

Founder, StaticToWP

Ash builds tooling at the intersection of AI-generated design and WordPress production environments. He's converted hundreds of static sites, Webflow exports, and vibe-coded UIs into production WordPress themes — and built StaticToWP to do it automatically.

Skip the manual work

Paste a URL. Get a WordPress theme.

Any static site, Webflow export, or AI-generated design — converted to a production-ready WordPress theme in under a minute. Every CSS rule, animation, and font intact.

Try it free

Free to convert · $499 to download