In short
A Next.js site can look perfect and still fail to rank because of missing metadata, weak pages or indexing problems.
Give every page unique metadata, a sitemap, canonical URL and structured data, keep pages substantial and server-render content.
For Next.js SEO, give each page unique metadata, a sitemap and canonical URL, render real content on the server and make every page worth indexing.

Unique title and description per page#
Use the Metadata API to set them for each route.
Add a sitemap#
Generate it from your routes and content.
Set canonical URLs#
Avoid duplicates from parameters or alternate domains.
Render content on the server#
Prefer static or server rendering for content that should be indexed.
Add structured data#
JSON-LD for organisation, article and FAQ helps search understand the page.
Optimise images#
Use the image component, sizes and descriptive alt text.
Keep pages substantial#
Thin pages risk indexing problems. We traced one case to only 173 words on a page.
Use clean, readable URLs#
Short slugs with meaningful words.
Check environment and deployment config#
A missing variable can break a live site, as in this outage story.
Monitor with Search Console#
Check coverage and queries regularly and act on what you find.
save this checklist
- Unique metadata per route
- Sitemap generated
- Canonical URLs set
- Structured data added
- Search Console monitored
More#
See how we added an MDX blog on Next.js 16.
- nextjs
- seo
- technical-seo
- web-development
Common questions
Is Next.js good for SEO?
Yes, server rendering and static generation make content easy for crawlers, but you still need good metadata and content.
Do I need a sitemap?
It helps search engines discover pages, especially on larger sites.
What does crawled, currently not indexed mean?
Google found the page but chose not to index it, often due to thin or duplicate content.
Share this
One click opens LinkedIn with a ready-written post: a hook, the short version of this guide and the link. The caption is also copied, so you can paste it if it does not appear.
Instagram has no web share link, so this gives you both pieces: copy the caption, save the card, then post it.
Keep reading
How We Rebuilt the Concept Dash Website for Clarity and SEO (A Before-and-After Case Study)
A case study on rebuilding a company website that lagged, had no clear structure and no SEO: expertise pages with their own URLs, optimised images, a new landing page, two sister sites and a 3D showcase.
One Website, Three Domains: How We Launched Malaysia and GCC Without Building Two More Sites
How Concept Dash expanded into Malaysia and the GCC with conceptdash.my and conceptdash.ae pointing to routes on one site, each with its own brand tokens and language, so one person maintains one codebase.
Crawled - currently not indexed: the cause was 173 words
Search Console said crawled and refused. The cause was not robots.txt or canonicals - the project grid rendered client-side, so Googlebot got 173 words.
Got this problem too?
Websites, web apps and SaaS products in React and Next.js, with the backend, payments and integrations they need to actually run a business.