lakecipher WhatsApp
Talk on WhatsApp

Our test

Astro vs Next.js vs plain HTML for SEO: we built the same page three times

By Karthikeyan Govindan. Published and last checked .

The short answer

  • Crawlers get the same text from all three. Full content, title, description and canonical were in the raw HTML every time.
  • All three scored 100 on Lighthouse's SEO check, and the text appeared equally fast: 428, 428 and 440 ms in a simulated test.
  • The difference is JavaScript. Astro and plain HTML sent 0 KB. Next.js sent 129.5 KB, with the page text included twice in the HTML.
  • Our pick for this site is Astro, because a mostly-text site gets nothing from that JavaScript. No framework earns you rankings by itself.

When we chose the technology for this website, the founder asked a fair question: why Astro, when Next.js is so widely used? We couldn't answer that with a blog post from someone else, so we tested it. We built the same page three ways, with the same text, the same styling and no interactive features.

How we tested

  • The page: about 1,800 words of real text, 12 headed sections, 12 FAQ answers in details tags, JSON-LD and 7 linked routes.
  • Versions: Astro 7.4.5, Next.js 16.4.5 and hand-written HTML. Next.js was given its best chance: static export, Server Components only, no client components and link prefetching turned off.
  • Serving: the same small local server with Brotli compression, for all three.
  • Phone profile: 6 Mbps, 85 ms round trip and a 4× slower processor, with a 6× run for cheaper phones. 6 Mbps and 85 ms are close to India's 75th-percentile connection in Alex Russell's 2026 performance research.
  • Tool: Lighthouse 13.6, 5 runs per version per speed, interleaved so no version always went first. We report medians.

What crawlers receive

CheckPlain HTMLAstroNext.js
All text in raw HTML, without running JSYesYesYes
Title, description, canonical in headYesYesYes
Lighthouse SEO score100100100
Raw HTML size13.9 KB13.8 KB36 KB
Readable text as a share of the HTML85%85%33%
Copies of each sentence in the HTML112
Copies of the JSON-LD block112

Next.js repeats the text because it embeds a copy of the page data for React to use in the browser. We found no evidence that this hurts rankings, and Google can handle it. It's just extra bytes in a file that some crawlers read as plain text.

What your phone has to do

Measure (4× slower processor)Plain HTMLAstroNext.js
JavaScript sent0 KB0 KB129.5 KB
JavaScript files007
Total download5.7 KB5.7 KB137.6 KB
Main content visible (simulated)428 ms428 ms440 ms
Ready to respond (simulated)428 ms428 ms672 ms
Time running JavaScript10 ms11 ms226 ms
Total processor work239 ms215 ms530 ms

On the 6× slower run, Next.js spent 383 ms running JavaScript and 883 ms on total processor work, against 14 ms and 379 ms for Astro.

A problem with our first method. Using real-time throttling, all three versions, including the plain HTML, randomly jumped to a load time of almost exactly 2.5 seconds. Because this hit identical pages at random, we treat it as a test artefact and report the simulated timing above. We kept the byte counts and processor figures from those runs, as they weren't affected.

What happens on real websites

Our test is one small page. HTTP Archive's Chrome UX data shows real visitors on real sites, for September 2026:

Mobile origins with good Core Web VitalsAstroNext.js
Worldwide71.1% of 47,27735.7% of 395,345
India48.7% of 5,72821.2% of 62,418

Please don't read this as "Astro makes you twice as fast". People use Next.js for large, complex apps and Astro mostly for content sites, so these groups aren't comparable. It only tells you what tends to happen with each in the wild.

So does this affect SEO, AEO and GEO?

  • Google: it can read all three. Speed is one signal among many, and all three pages pass here. Choosing Astro alone won't move your ranking.
  • AI crawlers: what matters is that the text is in the HTML. All three pass. Next.js is only risky if you render content in the browser.
  • People: 240 ms less delay and 130 KB less data is a small but real gain on a cheap phone or a slow connection, and it stays that way as the site grows.

Which should you use?

  • Mostly text, few interactions (a business site or a blog): Astro. Nothing is sent unless you ask for it.
  • A few pages that rarely change: plain HTML is fine. It gets harder once you have many pages sharing a header and footer.
  • A real application with logins and dashboards: Next.js. Its JavaScript is doing real work there, and it's fine for SEO if rendered on the server.
  • You already know one well: that counts for a lot. A framework you can maintain beats a theoretically better one you can't.

What this test can't tell you

  • It's a single simple page. A heavier page would show larger differences.
  • It's a lab test, not real users, and no real phone was used. The processor slowdown is an estimate.
  • The page has no images or web fonts, so absolute times are unusually low.
  • We couldn't test rankings directly, because that needs live sites over months.
  • Next.js is better than this for many apps. This only compares what a mostly-text page needs.

Common questions

Is Astro better than Next.js for SEO?

For what crawlers read, no. A pre-rendered Next.js page gave Google and AI crawlers the same full text as Astro in our test. Astro's advantage is that it sends no JavaScript by default, which matters for speed on slower phones, not for reading.

Does Next.js hurt SEO?

Not if pages are pre-rendered or server-rendered. Ours scored 100 on Lighthouse SEO. It sent 129.5 KB of JavaScript that a simple page doesn't need, and put the page text in the HTML twice, but nothing in that stops it ranking.

Should I switch my site from Next.js to Astro for SEO?

Usually not, if your Next.js site is already server-rendered and passes Core Web Vitals. Fix the pages and the content first. Switching frameworks doesn't earn rankings on its own.

Do AI crawlers run JavaScript?

Vercel's published analysis found that the major AI crawlers it monitored, including OpenAI's and Anthropic's, didn't run JavaScript, while Googlebot and Applebot do. That research is from December 2024, so check for updates, but it's safest to have your main text in the HTML.

Sources

Want your site tested like this?

We'll check what crawlers actually receive from your site, for free.