N&T Software
Free audit

Technology

How to Move a WordPress Website to Next.js Without Losing SEO

By NNT Software Editorial Team · Published 23 October 2026 · Updated 23 October 2026 · 9 min read

Short answer

You can move from WordPress to Next.js and keep your rankings if you keep the same URLs where possible, 301-redirect every URL that changes, carry over titles, descriptions, headings, schema and internal links, test on a staging copy and watch Search Console after launch. The technology changes; the signals Google already trusts must not.

Why people move from WordPress to Next.js

WordPress is a capable publishing system, and it powers a very large share of the web. The reasons to leave it are rarely about publishing. They are about speed, security, control and cost of change. A typical WordPress site depends on a theme, a page builder and a dozen plugins, each of which adds code, database queries and a possible security hole. Over time the site gets slower and harder to update safely.

Next.js is a React framework that can build pages ahead of time, serve them from a content delivery network and render them on the server when needed. The result is usually faster pages, a smaller attack surface (there is no public admin login or plugin ecosystem on the live site) and complete control over markup, structured data and URLs. For businesses that depend on organic search, those are real advantages.

A move is not always the right answer. If your site is a simple blog with a handful of plugins, runs on good hosting and passes Core Web Vitals, you may gain little. The migration is worth considering when speed is poor and hard to fix, when security incidents keep returning, when you need custom features that fight the theme, or when you want a headless setup where editors keep a friendly interface.

Step 1: Take a full inventory before you touch anything

Most migration problems come from not knowing what the old site contained. Start with a crawl of the live site using a crawler such as Screaming Frog or a similar tool, and export every URL with its status code, title, meta description, H1, canonical, word count and inlinks. Add the URLs that earn traffic and links from Google Search Console and from your analytics, because some old pages are not linked from anywhere but still bring visitors.

Record the content types too: pages, posts, categories, tags, authors, custom post types, media, forms, comments and any plugin-generated pages such as events or portfolios. Note which plugins provide visible features, such as sliders, forms, booking, memberships or search, because each needs a replacement.

  • A spreadsheet of every indexable URL with its title, description, H1 and canonical
  • The top 100 pages by clicks, by impressions and by backlinks
  • A list of plugins that create front-end features or URLs
  • Existing redirects, including those in .htaccess, Nginx or a redirect plugin
  • The XML sitemap, robots.txt and any structured data in use

Step 2: Decide what the URLs will be

The safest rule is to keep every URL exactly as it is. If your posts live at /blog/post-name/ on WordPress, build the Next.js site so that the same path serves the same page. Matching URLs removes the biggest source of ranking loss, because there is nothing to redirect and nothing for Google to relearn.

Sometimes the structure must change, for example to remove dates from post URLs or to flatten categories. In that case write a redirect map: one row for every old URL and the exact new URL that replaces it. Use a permanent 301 redirect, point each old page to the closest equivalent rather than to the home page, and avoid redirect chains where one redirect leads to another.

Decide on trailing slashes and on the www or non-www host now, and apply the same choice in the canonical tags, the sitemap and the internal links. Mixed choices create duplicate URLs, which is a quiet but common SEO problem after a rebuild.

Step 3: Choose where the content will live

There are three common patterns. The first is to export WordPress content into files such as Markdown or MDX and store them with the code. This suits small and medium sites, gives editors a Git-based workflow and removes the database entirely. The second is to move content into a headless CMS such as Sanity, Contentful, Strapi or Payload, which gives editors a visual interface without the WordPress front end. The third is headless WordPress: keep WordPress as the editing back end, expose content through its REST API or WPGraphQL, and let Next.js render the public pages.

Headless WordPress is attractive when a large team already knows the WordPress editor, but it keeps the maintenance burden of WordPress, including updates and plugin security, behind the scenes. Files or a dedicated headless CMS remove more risk. Whichever you choose, export the content with its slug, publish date, modified date, author, categories, featured image and SEO fields, so that nothing the old site said about a page is lost.

Step 4: Rebuild the templates with SEO in the markup

Build each template so that the important signals are in the server-rendered HTML: one H1, a sensible heading order, the main content, internal links as normal anchor tags, and images with descriptive alt text and explicit dimensions. Next.js can generate the title, description, canonical and Open Graph tags for every page from the same data that renders the page, which keeps them consistent.

Carry over structured data. If the old site used a plugin to output Organization, Article, FAQ, Product or LocalBusiness markup, recreate it from your content data and validate it with Google's Rich Results Test. Rebuild the XML sitemap, robots.txt, RSS feed and any hreflang tags. Use the Next.js Image component and a modern font strategy so that the new site does not just match the old one but beats it on Core Web Vitals.

  • Metadata generated per page: title, description, canonical, Open Graph and Twitter tags
  • Server-rendered content, not content that appears only after JavaScript runs
  • Structured data recreated and validated
  • Sitemap, robots.txt and RSS regenerated
  • Images optimised, with alt text kept from the old site

Step 5: Test on staging before anyone else sees it

Put the new site on a staging address that is blocked from search engines with a noindex header and password protection, never just a robots.txt rule that might be copied to production. Crawl staging with the same tool you used on the live site, and compare the two exports row by row. Every old URL should either exist or have a redirect, titles and descriptions should match or be deliberately improved, and the number of internal links to key pages should not fall.

Test the redirects in bulk: feed the list of old URLs to a script or to the crawler and confirm that each returns a 301 to a page that returns a 200. Check forms, tracking tags, cookie banners, the contact flow and mobile layouts. Run Lighthouse on the main templates and fix anything that slows them.

Step 6: Launch, then watch closely

Launch at a quiet time and keep the old site available so that you can roll back. Switch the domain, confirm that the new site is indexable (the staging noindex must be gone), and submit the sitemap in Search Console. Request indexing for the home page and a few key pages. If the domain does not change, no change-of-address tool is needed.

For the next four to eight weeks, check Search Console every few days. Look at the Pages report for new errors, at Crawl stats for spikes in 404s, and at Performance for drops in clicks on the pages that mattered most. Small, temporary movement is normal while Google reprocesses the site. A steep, lasting fall usually points to a missing redirect, a blocked page or a change in titles and content that needs reversing.

Common mistakes that cost rankings

The mistakes repeat across projects. Redirecting everything to the home page tells Google that the old pages no longer exist. Forgetting to remove the staging noindex keeps the new site out of search. Changing titles and headings at the same time as the platform makes it impossible to tell what caused a change. Dropping pages that bring traffic because they look old removes real visitors for no benefit.

The fix for all of them is the same discipline: inventory first, redirects for every change, one major change at a time where possible, and measurement before and after.

Frequently asked questions

Will moving from WordPress to Next.js hurt my SEO?+

Not if the move is planned. Keep URLs the same or redirect each old URL with a 301 to its closest equivalent, carry over titles, headings, schema and internal links, and test on staging. Most lasting drops come from missing redirects or blocked pages.

How long does a WordPress to Next.js migration take?+

A small brochure site can take two to four weeks. A larger site with many content types, plugins and integrations usually takes six to twelve weeks, including testing and a monitored launch.

Can I keep WordPress as my editor and use Next.js for the front end?+

Yes. This is called headless WordPress. Next.js reads content through the WordPress REST API or WPGraphQL. It keeps a familiar editor but also keeps WordPress to maintain and secure.

Do I need to tell Google I am moving?+

If the domain stays the same, no. Submit the new sitemap in Search Console and monitor. If the domain changes, use the Change of Address tool in Search Console and keep 301 redirects in place for at least a year.

What happens to my WordPress plugins?+

Each plugin that creates visible features needs a replacement. Forms, search, redirects, SEO fields and analytics are replaced by code, services or CMS fields. Many plugins simply stop being necessary.

Want this done for your business?

Request a free audit and a fixed quote within 24 hours.

Free audit

Send us your enquiry

Tell us about your website or SEO goals. You get a free audit summary and a fixed written quote within 24 hours, with no obligation.

  • ✓ Reply within 24 hours
  • ✓ Fixed written quote, milestones agreed first
  • ✓ Work in your time zone, with WhatsApp or call support