The Must-Have SEO Checklist for Developers For 2025
Sohail SJ | TheZenLabs

Sohail SJ | TheZenLabs @thesohailjafri

About: Developer | Biker | Athlete | Youtuber 70k Views on Dev.to

Location:
Mumbai | India
Joined:
Apr 5, 2023

The Must-Have SEO Checklist for Developers For 2025

Publish Date: Dec 29 '24
346 44

Hey, Devs!

So I have been working on a few SEO Focused projects lately and I thought I would share some of the best practices and strategies I have learned along the way for Next.js developers.


Next.js SEO Checklist For 2025

Table of Contents


1. Optimize Metadata

  • Use the next/head component to include metadata like titles, descriptions, and canonical tags (Next.js Head Documentation).
  • Optimizing metadata is crucial for SEO as it improves click-through rates, provides search engines with context about the page, and helps rank relevant content higher in search results.

Pages Router Example:

import Head from 'next/head'

export default function Page() {
  return (
    <Head>
      <title>Page Title</title>
      <meta name="description" content="Page Description" />
      <link rel="canonical" href="https://example.com/page" />
    </Head>
  )
}
Enter fullscreen mode Exit fullscreen mode

With Page Router approach is straightforward and easy to implement.

App Router Example:

export const metadata = {
  title: 'Page Title',
  description: 'Page Description',
}
Enter fullscreen mode Exit fullscreen mode

The App Router approach we use the metadata property in the layout or page file (Next.js Metadata API).


2. URL Structure and Routing

  • Implement clean, descriptive, and hierarchical URLs (e.g., /blog/seo-checklist instead of /blog?id=123).
  • Clean URLs improve user experience by making them easier to read and remember, and they help search engines understand the site’s structure more effectively, enhancing discoverability.
  • Use Next.js dynamic routing for better URL control (Dynamic Routing Guide).
  • Avoid deep nesting in URLs to keep them user-friendly.
# Good URL Structure
| root
|--- app
|------ blog
|--------- seo-checklist
Enter fullscreen mode Exit fullscreen mode
# Bad URL Structure
| root
|--- app
|------ blog
|--------- 2022
|------------ 01
|--------------- 01
|------------------ seo-checklist
Enter fullscreen mode Exit fullscreen mode

3. Content Optimization


4. Page Speed and Core Web Vitals

  • Monitor and improve metrics like LCP, FID, and CLS using tools like Lighthouse or PageSpeed Insights (Google PageSpeed Insights). Google PageSpeed Insights Image
  • Optimize fonts, use preloading, and avoid large layout shifts. Read more about Optimizing Fonts and Images.
  • Use tools like WebPageTest to analyze performance and identify bottlenecks.

5. Image Optimization


6. Mobile-Friendliness

  • Use responsive design principles ie Responsive Web Design.
  • Test pages with Google’s Mobile-Friendly Test tool (Mobile-Friendly Test).
  • Ensure content is easily accessible and readable on mobile devices as more 70% traffic from mobile devices on an avg.

7. Sitemap, Robots.txt and Favicons

Sitemap

  • A sitemap is a file that lists all the URLs on your site. It helps search engines discover and index your content more efficiently.
  • Create an XML sitemap and submit it to search engines like Google (Google Search Console Sitemap Submission).

Video on Generate Sitemap Via next-sitemap NPM Package

Sitemap Generation

Video on Generate Dynamic Sitemap For CMS/DB Data

Sitemap Generation

Robots.txt

  • A robots.txt file tells search engine crawlers which pages or files they can or cannot request from your site. It is important to have a well-structured robots.txt file to guide search engine crawlers.
  • Configure a robots.txt file to guide search engine crawlers (Robots.txt Guide).

Favicons

  • You must have seen favicons in the browser tab, bookmarks, and mobile apps. They are website icons that help users identify your site.
  • Include Favicons for better user experience and branding. Use tool like Favicon IO, Real Favicon Generator to generate favicons. This great tool as it provides favicons in different sizes and formats as well as manifest.json file.
# Example of favicon
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
Enter fullscreen mode Exit fullscreen mode

8. Internal Linking

Pro Advice I use linkMap to manage internal links in my projects. It is a simple key value pair object that I use to manage all the internal links in my project. This way I can easily update the links in one place and it will reflect across the entire project.

// linkMap.js
export const linkMap = {
  home: '/',
  about: '/about',
  services: '/services',
  contact: '/contact',
}
Enter fullscreen mode Exit fullscreen mode

9. Server-Side Rendering (SSR) and Static Site Generation (SSG)

  • Choose the appropriate rendering method (getServerSideProps, getStaticProps, or ISR) based on content requirements (Next.js Data Fetching).
  • Use SSR for dynamic content that changes frequently.
  • Use SSG or ISR for pages with static or semi-static content for better performance and SEO.

Video on App Router SSR and SSG

App Router SSR and SSG

Video on Page Router SSR and SSG

Page Router SSR and SSG


10. Schema Markup


11. Canonical Tags and Avoiding Duplicates

  • What is a canonical tag? A canonical tag is a meta tag that tells search engines which version of a URL you want to be treated as the primary version. This helps prevent duplicate content issues.
  • Like your home page can be accessed from multiple URLs like https://example.com, https://example.com/index.html, https://example.com/home, etc.
  • You can use a canonical tag to tell search engines that https://example.com is the primary URL. Read more about Canonical URL Guide.
  • Dynamically set canonical URLs in the <head> section based on the current route.
<link rel="canonical" href="https://example.com/page" />
Enter fullscreen mode Exit fullscreen mode

12. Open Graph and Twitter Cards

  • Add Open Graph tags (og:title, og:description, og:image) for social sharing (Open Graph Protocol).

Pages Router Example

import Head from 'next/head'

export default function Page() {
  return (
    <Head>
      <meta property="og:title" content="Page Title" />
      <meta property="og:description" content="Page Description" />
      <meta property="og:image" content="https://example.com/image.jpg" />
      <meta property="og:type" content="website" />
      <meta property="og:url" content="https://example.com/page" />
      <meta name="twitter:card" content="summary_large_image" />
    </Head>
  )
}
Enter fullscreen mode Exit fullscreen mode

App Router Example

export const metadata = {
  openGraph: {
    title: 'Page Title',
    description: 'Page Description',
    images: [
      {
        url: 'https://example.com/image.jpg',
        width: 800,
        height: 600,
        alt: 'Image description',
      },
    ],
    type: 'website',
    url: 'https://example.com/page',
  },
  twitter: {
    card: 'summary_large_image',
    title: 'Page Title',
    description: 'Page Description',
    images: ['https://example.com/image.jpg'],
  },
}
Enter fullscreen mode Exit fullscreen mode

13. Error Handling

// pages/404.js
export default function Custom404() {
  return <h1>404 - Page Not Found</h1>
}
Enter fullscreen mode Exit fullscreen mode
// pages/500.js
export default function Custom500() {
  return <h1>500 - Server-Side Error</h1>
}
Enter fullscreen mode Exit fullscreen mode

14. Semantic HTML

  • Use semantic HTML elements like <header>, <nav>, <main>, <section>, <article>, <aside>, and <footer> for better accessibility and SEO.
  • Check all available HTML elements at MDN Web Docs.
  • Semantic HTML helps search engines understand the structure of your content and improves accessibility for users with disabilities.
<!-- Bad Example of Semantic HTML -->
<div class="header">
  <div class="nav">
    <ul>
      <li><a href="/">Home</a></li>
      <li><a href="/about">About</a></li>
      <li><a href="/services">Services</a></li>
      <li><a href="/contact">Contact</a></li>
    </ul>
  </div>
</div>
<!-- Good Example of Semantic HTML -->
<header>
  <nav>
    <ul>
      <li><a href="/">Home</a></li>
      <li><a href="/about">About</a></li>
      <li><a href="/services">Services</a></li>
      <li><a href="/contact">Contact</a></li>
    </ul>
  </nav>
</header>
Enter fullscreen mode Exit fullscreen mode

15. Performance Optimization

  • Use CDN for serving static files (Vercel Edge Network).
  • Minimize and bundle JavaScript with code-splitting and tree-shaking (Webpack Optimization Guide).
  • Implement lazy loading for images and components.
  • Enable next.config.js settings like compression and reactStrictMode (Next.js Configuration).
  • These settings contribute to faster page loads and better user experiences.

Example Configuration

// next.config.js
module.exports = {
  reactStrictMode: true,
  compress: true,
  images: {
    domains: ['example.com'], // Add domains for optimized images
  },
}
Enter fullscreen mode Exit fullscreen mode

16. Analytics and Monitoring

  • Integrate Google Analytics or other tracking tools (Next.js Analytics Integration).
  • Use Google Search Console to monitor indexing, search performance, and errors (Search Console Guide).
  • These tools help monitor user behavior and identify potential areas for SEO improvement, such as high bounce rates or underperforming pages.

If you want a lite setup use these

  • UMAMI - A simple, easy-to-use, self-hosted web analytics tool.
  • Google Web Master Tools - Google Search Console is a free service offered by Google that helps you monitor and maintain your site's presence in Google Search results.

I prefer using Umami + Google Web Master Tools for my personal projects such (Chakra Framer)


17. General Best SEO Practices for 2025

  • Focus on Search Intent: Understand and address the user’s needs and queries. Align your content with the questions and needs your audience is searching for.
  • Voice Search Optimization: Optimize for long-tail, conversational queries by incorporating structured FAQs and direct answers on pages.
  • A/B Testing for SEO: Regularly A/B test meta descriptions, titles, or content variations to identify what resonates with users and drives traffic.

I hope these tips help you build your next Billion Dollar App. Happy Coding!


Get in touch

Platform Handle
Youtube @thesohailjafri
X/Twitter @thesohailjafri
LinkedIn @thesohailjafri
Instagram @thesohailjafri
Github @thesohailjafri

Comments 44 total

  • Jackson Kasi
    Jackson KasiDec 30, 2024

    Hi @thesohailjafri 👋

    I read this article, and it's really valuable. Should I add it to my dev document?

    If you create a Pull Request to include it in the document, I’d be happy :)

    For example:

    • Add a new page in the document
    • Add a link to the Dev Resources pages

    github.com/jacksonkasi1/docs
    peacockindia.mintlify.app

  • sahilchaubey03
    sahilchaubey03Dec 30, 2024

    This is pure gold! Thanks for sharing such a detailed checklist. Bookmarking this for future reference. 🙌

  • Memories From
    Memories FromDec 30, 2024

    I didn’t know about Umami for analytics. Gotta try it out for my projects. Thanks for the tip

  • WebDevWarrior
    WebDevWarriorDec 30, 2024

    Loved the emphasis on Core Web Vitals. It’s becoming more important than ever for SEO.

  • ReignsEmpire
    ReignsEmpireDec 30, 2024

    Time to add them to my project!

  • ReactNinja
    ReactNinjaDec 30, 2024

    🔥🔥🔥🔥🔥🔥

  • Ashfak
    AshfakDec 30, 2024

    Thanks for the comprehensive guide

  • Eustachio
    EustachioDec 30, 2024

    Such a great article. Thanks, I'm working on a project and this will help a lot. Cheers. Happy New Year 🎊

  • Mayuresh Tiwari
    Mayuresh TiwariDec 31, 2024

    🔥🔥🔥❤️❤️❤️

  • Makechi™
    Makechi™Dec 31, 2024

    Great post. I find valuable information that I have never known. I've bookmarked for easier access and I'll implement these in my projects. Thanks 😊

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 2, 2025

      Hey thanks for bookmarking this post. if find any difficulties implementing anything from post do let me know. this will help me improve the quality of post as well as fix any edge cases

  • Fazlay Rabbi
    Fazlay RabbiJan 1, 2025

    For url structure if the blog is about in another language what to do?

    is it better to make the url in english or relevent language with focus keyword is enough

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 2, 2025

      if you are running multi language website I would highly suggest implement internationalization via this NPM package npmjs.com/package/next-i18next

      example below of url structure:

      └── public
          └── en
              ├── blog
              |   └── awesome-blog-article
          └── de
              └── blog
                  └── toller-blog-artikel
      
      Enter fullscreen mode Exit fullscreen mode
    • Fin Chen
      Fin ChenJan 12, 2025

      From my experience:

      1. URL doesn't affect ordering of SEO ranking
      2. but a more semantic URL (usually in English) will be more understandable when sharing , that will raise the chances of sharing
      3. What affect ranking the most is the backlinks (sharing of the links)

      Based on these two points I would recommend using a English semantic url
      such as your.domain/posts/blog-title-in-en...

      Also, another facet to add to the post:
      You can use alternative url if the post is in multiple different languages, to let let search engine know that they are the same content, related but in different language

      example:
      "thingsaboutweb.dev/zh-TW/posts/cod..."
      "thingsaboutweb.dev/en/posts/code-r..."
      they have a
      <link rel="alternate" hreflang="en" href="https://www.thingsaboutweb.dev/en/posts/code-review"> in the head

      • Sohail SJ | TheZenLabs
        Sohail SJ | TheZenLabsJan 12, 2025

        Yup, but managing those url from the developer becomes difficult. But I have seen forbe use complex URL structure like I mentioned in bad structure.

        Also thanks for highlight alternate URL totally missed 👏

  • Nas
    NasJan 1, 2025

    So 90% "Don't be bad/lazy at web dev and make your webpage properly" and only 1 bullshit voodoo "guess how the algorithm works", solid article!

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 2, 2025

      for SEO you can't be lazy you have to cover every edge case optimize for every other schema and tag feed algo as much as possible don't just reply on keywords

  • Kissasian Tv
    Kissasian TvJan 1, 2025

    On official Myasiantv9 you can watch asian dramas, movies and shows hd online free. Also download Korean dramas with English subtitles.

  • Kissasian Tv
    Kissasian TvJan 1, 2025

    MyAsianTV watch online k-dramas offers a collection of latest and classic Asian dramas, movies and TV shows from Korea, Japan, Thailand and China. Stream and download in full HD with English sub for free.

  • Mouad Harmouche
    Mouad HarmoucheJan 3, 2025

    Great article ! Thanks :)

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 3, 2025

      Thanks for giving it a read. Do share if you find something of or could be added to improve the quality of this article

  • Fab Senchuri
    Fab SenchuriJan 3, 2025

    you just solved a lot of problems i found while working in few projects but didn't quite found solutions any where. thanks @thesohailjafri

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 3, 2025

      I am glad it helped you fab, let me know if you face any problems I'm open to improving this article so that it becomes a one-stop solution for any developer out there struggling/implementing SEO

  • L Rodríguez
    L RodríguezJan 3, 2025

    I use NextJS as part of my stack currently. I really appreciate the list, SEO is very important for public facing websites.

  • BaziotaBeans
    BaziotaBeansJan 4, 2025

    amazing guide, thansks so much I wanna use this every time I need to perform the SEO of my app...

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 5, 2025

      Bookmark it my man. Also ping if you need any additional SEO stuff you do aside from these so that I will include that in this guide

  • Babar Khan
    Babar KhanJan 8, 2025

    i have spent alot of time by figuring these things in last 3,4 months . after implementing all of these i found your Blog :D

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsJan 8, 2025

      My bad I shouldn't had procrastinated, but it took me time to compose videos explaining few concepts of seo in nextjs.

      hey but let me know some new tips you have which this guide dont cover. thanks babar!

  • yasiramus
    yasiramusFeb 27, 2025

    thanks for sharing such insight checklist and adding the links to various site

  • Văn Hiếu Lê
    Văn Hiếu LêMar 1, 2025

    Hi @thesohailjafri
    Which is better for image optimization: using local images or a CDN? Currently, I use Cloudflare R2 for CDN and host my site on a 1Gbps Ethernet VPS.

    • Sohail SJ | TheZenLabs
      Sohail SJ | TheZenLabsMar 10, 2025

      Next.js provides an Image component for optimizing the image. it uses its own CDN network and optimize the size of image file

  • Michelle Duke
    Michelle DukeMar 3, 2025

    Great checklist - I'll be keeping an eye on this so I can follow it 😄.

Add comment