Most SEO checklists online are either too generic to be useful or written for WordPress and do not map onto how Next.js actually works. This is the checklist I actually go through before launching a Next.js project, whether it is my own site or a client's.
It is grouped by what breaks most often, in roughly the order I check them.
Metadata
Every page has a unique title and description. Duplicate or missing titles across pages is one of the most common issues I find auditing existing sites, usually from a layout applying the same generic title everywhere instead of per-page metadata.
Titles stay under roughly 60 characters. Longer titles get truncated in search results, which can cut off the part meant to actually convince someone to click.
Descriptions are written for humans, not stuffed with keywords. A description that reads like ad copy, what the reader actually gets from clicking, converts better than one that just repeats the target keyword three times.
Open Graph tags are set for social sharing, at minimum og:title, og:description, and og:image, so links shared on social platforms show a proper preview instead of a blank or broken card.
Technical Foundations
One canonical version of every URL. www versus non-www, and http versus https, need to redirect to a single canonical version. Serving both as separate live URLs splits ranking signals between two pages competing for the same content.
A generated sitemap.xml that stays current. Using Next.js's sitemap.ts file means new pages get added automatically on each build, instead of a static sitemap that quietly goes stale as content grows.
A robots.txt that points to the sitemap and blocks the right paths. Admin routes, API routes, and anything not meant for search results should be disallowed, while the sitemap directive helps crawlers discover it directly.
HTTPS enforced everywhere, with no mixed content warnings from images or scripts still loading over plain http.
Performance
Images run through next/image, not raw img tags. Unoptimized images are still one of the most common causes of slow page loads, and next/image handles resizing and modern formats automatically once it is actually used consistently across a project.
Server Components used by default, Client Components only where interaction is needed. Every unnecessary use client directive ships more JavaScript to the browser than the page actually needs, which slows down interactivity metrics.
Fonts loaded through next/font, avoiding layout shift from web fonts loading late and avoiding an extra external request to Google's font servers at request time.
Core Web Vitals checked in Search Console, specifically Largest Contentful Paint, since it is one of the more direct ranking factors tied to actual page speed rather than just a nice to have.
Content and Structure
Heading structure follows a logical order, one h1 per page, with h2 and h3 used to actually reflect the content's structure rather than styled to look right regardless of hierarchy.
Internal links connect related pages. A blog post about a technical topic linking to a relevant product or template page, and that page linking back, reinforces relevance for both pages rather than leaving them isolated.
Alt text on meaningful images, describing what the image actually shows rather than a generic filename or nothing at all, which also matters for accessibility beyond just SEO.
Content actually answers the query it is trying to rank for. A page targeting a specific search term needs to genuinely answer that question in the first few paragraphs, not bury the actual answer under unrelated framing.
Structured Data
JSON-LD added for content types that support rich results, articles, products, FAQs, where applicable. This does not guarantee a rich result in search, but it gives Google the clearest possible signal about what the content actually is.
Structured data validated before launch, using Google's Rich Results Test to confirm the markup is actually read correctly rather than silently malformed.
Indexing and Monitoring
Search Console connected before launch, not after. Verifying ownership and submitting the sitemap early means Google starts discovering pages sooner instead of waiting for an unassisted crawl to eventually find them.
New or updated key pages submitted through URL Inspection. For a page that specifically needs to rank soon, requesting indexing directly speeds up discovery instead of relying purely on Google's own crawl schedule.
A regular check of Search Console's Performance report, specifically watching for pages with high impressions but low click-through rate, which usually signals a metadata problem worth fixing rather than a ranking problem.
What I Skip on Most Projects
Not everything on a comprehensive SEO checklist matters for every project. Multi-language hreflang tags are irrelevant for a single-language site. AMP is largely deprecated at this point and not worth the added complexity for most projects. Heavy schema markup for content types the site does not actually have adds maintenance overhead without benefit.
The checklist above covers what actually moves the needle for a typical Next.js project, a blog, a SaaS marketing site, a portfolio. Anything beyond that is worth adding only if a specific project genuinely needs it.
Frequently Asked Questions
Does Next.js help with SEO by default, or do I need to configure it manually? Next.js provides the tools, the Metadata API, sitemap generation, image optimization, but none of it applies itself automatically. A default Next.js project with no metadata configuration is not meaningfully better for SEO than any other framework until these pieces are actually set up.
How long does it take for Next.js SEO changes to show results? Indexing itself can happen within days once pages are submitted through Search Console. Actual ranking movement typically takes weeks to months, since it depends on Google evaluating the page against competitors over time, not just recognizing that changes were made.
What is the single most common SEO mistake in Next.js projects? Missing or duplicate metadata across pages, usually from relying entirely on the root layout's title and description instead of setting unique metadata per page through generateMetadata or a static metadata export.
If your site is already live and you are not sure which of these are actually in place, I offer audits as part of freelance projects, going through a site against this exact checklist and fixing what is missing.
Get in touch: https://pixelanas.com/contact
Anas, full-stack Next.js developer building SaaS products and premium templates. X: @ASheikh69751