You've built a great site with Next.js. It looks sharp, it's fast on your machine, and the code is tidy. Then you launch, wait a few weeks, and nothing shows up in search results. Or worse, the wrong pages show up, with confusing titles and missing descriptions.

Next.js gives you a strong foundation for search engine optimization, including server rendering, static generation, and built-in tools for metadata. But a foundation isn't a finished house. You still have to set things up correctly, and it's very easy to miss small details that matter a lot to search engines.

This checklist covers the main things to review before you launch, and again after major changes. Go through it one section at a time, and you'll catch most of the common problems.

1. Make sure content is crawlable

Search engines need to see your content. Next.js helps by letting you render pages on the server or generate them ahead of time, so the HTML that arrives already contains your text.

Check that your important content is present in that initial HTML, instead of being loaded later by client-side code only. Avoid hiding key text behind interactions, like tabs that only fetch content when clicked, if that content matters for search.

A simple way to verify is to view the page source, or use the URL inspection feature in Google Search Console, and confirm that your headings and main text appear.

2. Give every page a clear title and description

Titles and meta descriptions are among the first things a search engine and a searcher see. Each page should have its own unique, descriptive title, and a meta description that summarizes the page in a sentence or two.

In the App Router, use the built-in metadata features to set these per page, including dynamic values for things like blog posts. In the Pages Router, use the head component. A common mistake is leaving every page with the same default title, which makes your pages look identical to search engines.

3. Set canonical URLs

Sometimes the same page can be reached through several URLs: with and without a trailing slash, with tracking parameters, or through different paths. Search engines may see these as duplicates and struggle to decide which one to show.

A canonical URL tells them which version is the main one. Set it explicitly on each page, and pick one consistent URL format for your whole site.

4. Provide a sitemap and a robots file

A sitemap is a list of the pages you want search engines to know about. Provide an XML sitemap, keep it updated as you add content, and submit it through the search console tools.

The robots file gives crawlers instructions about what they may or may not visit. It's useful, but it's also a place where a single wrong line can block your entire site. Double-check that it doesn't accidentally prevent crawling of important pages, which is a surprisingly common launch-day mistake.

5. Add structured data where it fits

Structured data, usually in JSON-LD format, gives search engines extra detail about your content. For a blog post, it can describe the headline, author, and publish date. For products, it can include price and availability. For other pages, it might describe breadcrumbs or frequently asked questions.

It doesn't guarantee special treatment in results, but it helps search engines understand your pages and can make you eligible for richer displays. Always validate it with the testing tools search engines provide.

6. Pay attention to performance

Speed affects both your visitors and your search visibility. Core Web Vitals are the metrics commonly used to describe the experience: how quickly the main content appears, how responsive the page is to interaction, and how stable the layout is as it loads.

Some practical steps: use the built-in image component to serve properly sized images, and set dimensions so the layout doesn't jump around. Load fonts efficiently. Reduce unnecessary JavaScript, since heavy bundles slow things down. And measure on real devices and real connections, not only on your fast development machine.

7. Use headings and structure logically

Each page should have one clear main heading, followed by logical subheadings that organize the content. This helps readers scan the page and helps search engines understand what each section is about.

Write descriptive link text instead of vague phrases like "click here," and add helpful alt text to images. It's good for accessibility, and it also gives search engines more context.

8. Build good internal linking

Links between your own pages help visitors find related content, and they help search engines discover and understand how your pages relate. Link naturally from one article to another, from category pages to posts, and from your home page to your most important content.

Watch out for orphan pages, which are pages that no other page links to. They're hard for crawlers to find and tend to get less attention.

9. Handle redirects and status codes correctly

If you move or delete a page, use a permanent (301) redirect from the old URL to the new one, so you keep the value of existing links. Return a proper 404 status for pages that really don't exist, and avoid showing a "not found" page with a normal success status, since search engines may treat it as real content.

Also watch for redirect chains, where one redirect leads to another and another. They slow things down and waste crawl effort.

10. Consider international needs

If your site serves multiple languages or regions, use a clear URL structure for each version and add language alternates (hreflang), so search engines show the right version to the right people. Mixing languages on the same page tends to confuse both readers and crawlers.

11. Monitor after launch

SEO isn't a one-time task. After launch, keep an eye on your indexing status, the search queries bringing people to your site, and any errors reported in search console tools. Check again after major releases, because a refactor can quietly remove titles or break redirects.

Be patient, too. New sites often take weeks or longer to build visibility, so measure trends over time instead of reacting to daily ups and downs.

Content still matters most

All of these technical steps help search engines understand your site, but they can't make weak content rank. The pages that perform best usually answer a real question clearly, go into useful depth, and are written for people first. Before launch, read your main pages as a visitor would. Is it obvious what each page is about? Does it deliver what the title promises? Is it better than what's already out there, even in a small way?

Technical SEO opens the door. Good content is what makes people, and search engines, want to stay.

A quick pre-launch routine

Before you go live, run through a short routine: view the source of a few key pages to confirm the content is in the HTML, check titles and descriptions on each template, test the sitemap and robots file, run a performance test on mobile, and click through the main links to catch broken ones. It takes under an hour and catches most of the avoidable mistakes.

Wrapping up

Good SEO is a combination of solid technical setup and genuinely useful content. Next.js handles a lot of the technical side well, but it still needs your attention: crawlable content, clear metadata, canonical URLs, sitemaps, structured data, fast pages, tidy structure, smart internal links, and correct redirects. Run through this checklist before launch and after big changes, and you'll give search engines every chance to find, understand, and rank what you've built.