websites.new

Keep the editor, replace the front end, or move the content

WordPress to Next.js: headless first, or a clean move.

Free assessment01 / 02

Step one · Your website

Which website should we assess?

Public pages only. No login, no code installed, no obligation. The report link is unlisted and emailed once. Three checks per hour per connection. Read the privacy policy.

You have two paths to move your WordPress site to Next.js: run it headless or move the content out cleanly. Neither is automatic. Redirects, preview routes, and data transfer all need real attention, and staying put is often your best call. The free assessment reads your public pages and scores them. It does not log in to your admin, check your analytics, or interview your editors (that part is on you).

On this page 9 sections
  1. 01What transfers from WordPress to Next.js, and what does not?
  2. 02How do you plan the URL map and redirects so your search traffic survives?
  3. 03How is content moved from WordPress: export, API or crawl?
  4. 04What do your editors get on Next.js compared with WordPress?
  5. 05How long does a WordPress to Next.js migration take, and what drives the effort?
  6. 06When should you not move from WordPress to Next.js?
  7. 07The checklist, step by step
  8. 08Questions, answered
  9. 09Your next read

What transfers from WordPress to Next.js, and what does not?

Your posts, pages, categories, tags, media, and users move as data. Your theme, plugins, and shortcode output do not. Before you plan your build, check the REST API: it lists /wp/v2/posts, /wp/v2/pages, /wp/v2/categories, /wp/v2/tags, /wp/v2/media, and /wp/v2/users, and that tells you which content types actually return JSON.

Your layout layer stays behind. If your editors built pages with blocks or a page builder, your body field holds raw HTML or block markup that you must parse, such as into Portable Text in Sanity, while splitting visual layouts into structured fields. Forms and sliders require rebuilds, and so does markup from plugins. And your SEO metadata needs an export path too: WPGraphQL exposes Yoast titles and descriptions through its seo field.

Open /wp-json/ on your domain. Then inspect your page source, and you will have a list of your data gaps in minutes. The assessment parses these same public signals, recording your markup and headers, plus structured data, before you commit to code.

How do you plan the URL map and redirects so your search traffic survives?

Build your URL map by pairing each old URL with one new URL, then issue permanent server-side redirects so your search traffic follows your pages. Google asks you to map old URLs to new ones and avoid chained redirects. It also asks you to submit a new sitemap and track traffic on both ends. Skip the map and you are guessing.

In Next.js, write your rules in the redirects option of next.config.js. Test first. Setting permanent: true sends a 308 status that browsers and search bots cache indefinitely, so check each rule before you ship it. Path patterns match from the root, and '/old-blog/:slug' will not catch '/old-blog/a/b', so your nested URLs need explicit rules (the pattern is narrower than it looks).

Keep your redirects live for at least a year. Strip any noindex tags or robots disallow rules left on staging, and point your canonicals at the new URLs. If your headless backend discourages search engines, every post's seo field can return noindex, and your Yoast URLs may output your CMS host. Staging leftovers are the quiet way a launch goes wrong.

How is content moved from WordPress: export, API or crawl?

Migrate your content through the API once your site has more than a few pages, because the REST API returns your posts, pages, tags, categories, and media as JSON. Scraping rendered HTML is your fallback for data the endpoints omit. And you can copy Sanity's API pattern: run a CLI script that queries the REST API, writes documents, and paginates until the responses stop.

The media list returns 10 items per page by default, so your script must set page and per_page across a fetch loop. Sanity's tooling batches mutations. It runs dry by default and validates your documents against your Studio schema, so you catch errors before writing records. Make your script idempotent with deterministic IDs, and upload assets concurrently under a rate limit such as p-limit. A script you cannot safely rerun is a script you will fear.

If a page builder renders your markup, crawl the output, parse the HTML, and compare your record totals against your master URL list. Find the data gaps before launch, because after launch they are your readers' problem.

What do your editors get on Next.js compared with WordPress?

Your editors keep the WordPress admin if you go headless, and get a new Sanity Studio or Contentful editor if you move your content. In both setups, they lose the visual canvas of your theme and page builder. What they edit turns into fields: your editors fill forms rather than editing the page as it appears to your readers. That is a real change in how the work feels.

Previews are the first issue your editors will raise. Build a preview route in Next.js that pulls draft content, and test it with your slowest editor before launch. With ISR, the first request after your revalidate window still gets the stale page while regeneration runs, so tell your team what to expect (before they ask).

Plugins are the other loss you will feel. Your SEO, forms, and redirect plugins stop working on the new front end, so you rebuild each feature as a field, a service, or a routing rule. But the trade is real: you get a front end your editors cannot break with a plugin update.

How long does a WordPress to Next.js migration take, and what drives the effort?

Your migration takes as long as your URL count, content types, media library, integrations, and locales dictate. No public scan can promise you a date. What you can do is count each driver from the outside: your sitemap gives your URL count, your /wp-json/ routes show your content types, and your forms and scripts reveal your integrations. So count first, estimate second.

Each driver multiplies the others. Many URLs with one content type are mostly redirect work. Few URLs with many types are mostly schema modeling. If your media list pages at 10 items by default, a large library means thousands of requests, and additional locales multiply every URL you map. I plan and run moves like this one, and the pattern holds: the slow part is rarely the build. It is deciding what your content should become.

ISR lets you update cached static content without rebuilding the entire site. So your deploy times stop growing with your page count.

When should you not move from WordPress to Next.js?

You should not move when your site is in good standing, your editors work well in it, and you have no application, personalization, or editor problem a new front end would solve. Stay put until the evidence says otherwise. Run the free assessment first: if your score sits in the 80 to 100 band, your evidence shows the current build is not your bottleneck, and a rebuild would spend your budget and risk your search traffic for little return.

Headless WordPress is worth the intermediate step only when your editors must keep their admin and your front end is the problem. Otherwise you run two systems: WordPress for content and Next.js for pages. You also patch, host, and monitor both. If you do move, match the stack to your site: Astro for a content or marketing site, Next.js with Sanity or Contentful when you run an application, personalization, or a large editorial team. Each path gives up what your editors know: the visual canvas, plugins, and a hosted admin (all three, not one).

The checklist, step by step.

  1. 01

    Inventory every URL and content type

    List every URL on your WordPress site and group them by content type, from posts and pages to custom types and media. This list becomes the base for your redirect table and your content model, so do not skimp on it.

  2. 02

    Design the content model on the target

    Decide how each source structure becomes fields in Sanity or Contentful, or in your Next.js templates. Turn layout-driven blocks into structured fields now, not during data extraction. Doing it later costs more.

  3. 03

    Extract content by export, API or crawl

    Pull content through the REST API or WPGraphQL where you can. Crawl rendered pages where you cannot. Make your script idempotent and run it as a dry run first, because a dry run is cheap and a bad write is not.

  4. 04

    Map media and build the redirect table

    Upload your media under a rate limit. Record each new asset location. And build one old-to-new row per URL, with permanent redirects and no chains.

  5. 05

    Build and preview the new site

    Render your templates in Next.js or Astro. Then wire up a preview route for draft content. Rebuild your forms and any plugin output as fields or services (this is where the plugin loss finally shows up).

  6. 06

    Check SEO parity

    Compare titles, canonicals, structured data, hreflang, and sitemaps between old and new pages. Remove staging noindex tags and robots blocks, and point canonicals at the new URLs. Parity is the whole point of this step.

  7. 07

    Launch in stages with monitoring

    Move sections or locales in stages. Watch traffic on old and new URLs after each one. Fix redirect gaps while the change set is still small, because small problems are the cheap ones.

  8. 08

    Keep the source read-only, then decommission

    Leave your WordPress site read-only for a rollback window. Keep your redirects live for at least a year. And retire the source only when your parity checks and traffic hold up.

Questions, answered.

01Can I keep WordPress and just use Next.js for the front end?

Yes. You keep your WordPress admin, fetch content through WPGraphQL or the REST API, and render pages in Next.js. WPGraphQL recommends a minimal theme for this setup. The cost is that you host and secure two systems, so choose it only if your editors must keep the admin.

02Will I lose my Google rankings if I move to Next.js?

Not necessarily, and the losses you can avoid are ones you control. Map every old URL to one new URL. Use permanent redirects without chains, remove staging noindex tags, and keep redirects live for at least a year. A public read cannot see your rankings, so track your search traffic yourself.

03Does the assessment read my WordPress admin or analytics?

No. The free assessment reads your homepage and up to eight sampled public pages: headers, markup, structured data, headings, script and image weight, and robots and canonical signals. It does not log in, pull your analytics, run field performance data, or interview your team. And it takes about two minutes.

04Should I move the content to Sanity or Contentful instead of staying headless?

Move the content if you want to retire WordPress and its plugins. Sanity's course covers converting WordPress HTML and blocks to Portable Text, then restructuring layout-driven content into fields. Stay headless if your editors need the WordPress admin. Either way, your forms, previews, and permalinks need rebuilding (none of the three carries over).

  1. 01WordPress alternativesStay, go headless or move: judged by your pages.
  2. 02WordPress to AstroPre-built pages, content in Markdown or a headless CMS.
  3. 03Next.js SEO auditRendering mode, metadata, hydration cost.
  4. 04Headless CMS SEO auditRendering, canonicals, previews, schema from the template.

Sources

Facts on this page come from the documents below, checked on 2026-11-01. Figures about the assessment itself describe how it works.

  1. Compatibility Guide - WPGraphQL Docs
  2. Code Syntax Highlighting in Headless WordPress - WPGraphQL
  3. SEO in Headless WordPress with Yoast, Next.js and WPGraphQL - WPGraphQL
  4. What the WPGraphQL + SEO Guide Doesn't Tell You: Running It on wpgraphql.com - WPGraphQL
  5. Introducing WPGraphQL Smart Cache - WPGraphQL
  6. REST API Handbook | Developer.WordPress.org
  7. Media – REST API Handbook | Developer.WordPress.org
  8. Reference – REST API Handbook | Developer.WordPress.org

Free automated assessment

Find out where your website stands.