
- Next.js - Home
- Next.js - Overview
- Next.js - Project Setup
- Next.js - Folder Structure
- Next.js - App Router
- Next.js - Page Router
- Next.js Features
- Next.js - Pages
- Next.js - Data Fetching
- Next.js - ISR
- Next.js - Static File Serving
- Next.js - Pre-Rendering
- Next.js - Partial Pre Rendering
- Next.js - Server Side Rendering
- Next.js - Client Side Rendering
- Next.js Routing
- Next.js - Routing
- Next.js - Nested Routing
- Next.js - Dynamic Routing
- Next.js - Parallel Routing
- Next.js - Imperative Routing
- Next.js - Shallow Routing
- Next.js - Intercepting Routes
- Next.js - Redirecting Routes
- Next.js - Navigation and Linking
- Next.js Configuration
- Next.js - TypeScript
- Next.js - Environment Variables
- Next.js - File Conventions
- Next.js - ESLint
- Next.js API & Backend
- Next.js - API Routes
- Next.js - Dynamic API Routes
- Next.js - Route Handlers
- Next.js - API MiddleWares
- Next.js - Response Helpers
- Next.js API Reference
- Next.js - CLI Commands
- Next.js - Functions
- Next.js - Directives
- Next.js - Components
- Next.js - Image Component
- Next.js - Font Component
- Next.js - Head Component
- Next.js - Form Component
- Next.js - Link Component
- Next.js - Script Component
- Next.js Styling & SEO
- Next.js - CSS Support
- Next.js - Global CSS Support
- Next.js - Meta Data
- Next.js Advanced Topics
- Next.js - Error Handling
- Next.js - Server Actions
- Next.js - Fast Refresh
- Next.js - Internationalization
- Next.js - Authentication
- Next.js - Session Management
- Next.js - Authorization
- Next.js - Caching
- Next.js - Data Caching
- Next.js - Router Caching
- Next.js - Full Route Caching
- Next.js - Request Memoization
- Next.js Performance Optimization
- Next.js - Optimizations
- Next.js - Image Optimization
- Next.js - Lazy Loading
- Next.js - Font Optimization
- Next.js - Video Optimization
- Next.js - Script Optimization
- Next.js - Memory Optimization
- Next.js - Using OpenTelemetry
- Next.js - Package Bundling Optimization
- Next.js Testing
- Next.js - Testing
- Next.js - Testing with Jest
- Next.js - Testing with Cypress
- Next.js - Testing with Vitest
- Next.js - Testing with Playwright
- Next.js Debugging & Deployment
- Next.js - Debugging
- Next.js - Deployment
- Next.js Useful Resources
- Next.js - Interview Questions
- Next.js - Quick Guide
- Next.js - Useful Resources
- Next.js - Discussion
Next.js - Head Component
The <Head> component in Next.js extends the functionality of the standard HTML <head> element. Next.js will make sure that the data defined in <Head> component will be rendered in server-side for better SEO optimization. In this chapter we will explore Head component, it's syntax, features, props and examples.
Next.js Head Component
The <Head> component in Next.js is used to modify the <head> section of a page. This tag will allow you to set title, metadata, external links and other essential SEO feature to your webpage.
Features of Head Component
- <Head> component in Next.js can be used to set dynamic metadata for your webpage, For example title can be changed based on route user visiting.
- The <Head> component is rendered server-side by default, this will ensure metadata is available to crawlers.
- Next.js automatically ensures that duplicate tags are avoided. For example, if multiple <title> tags are defined, the most recent one overrides the previous ones
Note: <Head> component is only supported in Next.js page router. In App router, you can use generateMetadata() function to set metadata for your webpage.
Basic Usage of Head Component
The below code shows how to use <Head> component in Next.js About page we created in earlier chapters.
import Head from 'next/head' export default function About() { return ( <> <Head> <title>About Us - My Website</title> <meta name="keywords" content="about us, company, team" /> <link rel="icon" href="/favicon.ico" /> </Head> <h1>About Us</h1> <p>Welcome to the about us page of our website!</p> </> ) }
Output
The image below is output of above code.

Generate Dynamic Metadata Inside Head
We can generate dynamic metadata using JavaScript's string interpolation. By this we can fetch data from server, keep it in a variable and display as title of the page. See the code below.
import Head from 'next/head'; export default function About() { // Variable for dynamic title const companyName = "TutorialsPoint"; return ( <> <Head> {/* Dynamic title using variable */} <title>About Us - {companyName}</title> <meta name="keywords" content="about us, company, team" /> <link rel="icon" href="/favicon.ico" /> </Head> <h1>About Us</h1> <p>Welcome to the about us page of our website!</p> </> ); }
Output
The image below shows output of above code.
