How to Add SEO Meta Tags Dynamically in Next.js

How to Add SEO Meta Tags Dynamically in Next.js

Next SEO and Next.js

When you are building a website with Next.js, it is extremely important to ensure that it appears well in search engines. Next.js has a feature called static site generation, which helps with this by making your site more SEO-friendly than other methods.

A big part of SEO is adding specific information like title and description to every page of your site. But as your site grows, it can be difficult to keep track of all this information.

This is where Next-SEO comes into play. It’s a tool that makes it easy to manage SEO content in your Next.js project. With Next-SEO, you just tell it what information you want for each page, and it automatically takes care of adding it in the right place.

The nice thing about Next-SEO is that you can either set it up individually for each page or use a default setup that you can change for specific pages if needed.

Let’s take a deeper look and see how easy it is to use Next SEO to make our site more search engine-friendly!

How to Add Global Head Tag to All Next.js Pages

Next.js provides _app.js to initialize pages. You can use it to create meta tags shared across all pages.

import '../styles/globals.css'
import Head from 'next/head'
function MyApp({ Component, pageProps }) {
  return <>
      <meta name="author" content="John Doe"/>
    <Component {...pageProps} />
export default MyApp

Next.js will use the custom title and description of the head component instead of the default ones in the App component if you add the head component to the page.

Add Meta Tags and Description to in Next.js Pages

The use of static meta tags and descriptions is appropriate for pages whose content remains the same, such as a home page.

Modify the head tag in the file /pages/index.js with the appropriate title and description.

import Head from "next/head";
const Home= () => {
  return (
      <meta name="viewport" content="initial-scale=1.0, width=device-width" />
      <meta name='description' content='Programming Articles'/>
      <h1>Welcome to my blog!</h1>
export default Home;

In your Next.js application, you use the Next/Head to Head component to manage certain elements on your web pages. This component lets you add important details like the page title, how it should appear on different screen sizes (viewport width), and a short description.

By placing this component in the _app.js file, you ensure that all pages in your app share the same title, viewport settings, and description. This helps maintain consistency across your site, making it easier for visitors to navigate and understand.

While the current page may consist primarily of content that doesn’t change often (static content), sometimes you’ll want to include content that updates frequently (dynamic content). To do this, you can use methods like server-side rendering or data fetching to create pages that display this dynamic content, giving users a more interactive experience.

How to Add Dynamic Meta Title and Descriptions in Next.js Pages

To fetch data in Next.js, you can use getStaticProps(), getStaticPaths(), or getServerSideProps(). This data influences the page’s content. Use it to construct the page’s metadata.

Creating metadata for a Next.js application that displays blog posts can seem like a task.

But there is a better way! Instead of manually adding metadata for each post, you can set up a special page that automatically brings up the right content based on the identifier. This way, you can easily include all the necessary information in the page header without the hassle of doing it manually for each post. This saves time and ensures that your blog looks professional and polished.

import { getAllPosts, getSinglePost } from "../../utils/mdx";
import Head from "next/head";
const Post = ({ title, description, content }) => {
  return (
        <meta name="description" content={description} />
      <main>{/* page content */}</main>
export const getStaticProps = async ({ params }) => {
  // get a single post
  const post = await getSinglePost(, "posts");
  return {
    props: { },
export const getStaticPaths = async () => {
  // Retrieve all posts
  const paths = getAllPosts("posts").map(({ id }) => ({ params: { id } }));
  return {
    fallback: false,
export default Post;

The getStaticProps method sends post data to the Post component as props. The Post component separates the title, description, and content from the props. The meta tags’ title and description are then used by the head component.

Next.js Is an Optimized Framework

Using the Next.js core component helps you improve your website’s visibility on search engines by optimizing meta titles and descriptions. By optimizing your headers for SEO, you can climb the search engine results pages (SERPs) and attract more visitors to your site. Additionally, Next.js offers other components like links and images, which are pre-optimized to ensure faster loading and better search engine performance, making it easier for you to create an SEO-friendly website.


Having good SEO is extremely important if you want people to find your website without paying for ads. To rank high on search engines like Google, your site needs to be set up in a way that makes it easy for those search engines to understand what your site is about.

Next SEO is a tool that makes it really easy to manage SEO content in Next.js projects. This helps developers add important SEO details to their site without forgetting anything and also ensures that you don’t have duplicate information that could confuse search engines.

If you want to learn more about what you can do with Next SEO, you should check out the official documentation.

Have you ever used Next SEO? Let us know about your experience in the comments below. Thanks for reading!

How useful was this blog?

Click on a star to rate it!

Average rating 4.6 / 5. Vote count: 410

No votes so far! Be the first to rate this blog.

Leave a comment

Your email address will not be published. Required fields are marked *