---
title: "Unhead: Full Stack Head Manager"
description: "Manage document head in SSR and CSR environments. Lazy DOM patching, TypeScript API, flat SEO meta, Schema.org support, and script loading."
canonical_url: "https://unhead.unjs.io/docs/head/guides/get-started/intro-to-unhead"
---

> Index of every page on this site: [llms.txt](https://unhead.unjs.io/llms.txt)

## What is a head manager?

Adding tags to `<head>` is a fundamental web-development task, whether you're setting a page title with `<title>` or loading JavaScript with a `<script>` tag.

While setting tags in an HTML document is simple, JavaScript frameworks have moved us away from pure HTML and into
a world of fully dynamic client-side pages and server-side rendering.

Modern JavaScript applications need to render code outside the app entry (typically `<div id="app"></div>`) in both
server-rendered and client-rendered environments.

The role of a head manager is to manage tags in `<head>`, attributes on `<html>` and `<body>`, and supported tags outside the app entry.

```html
<!DOCTYPE html>
<html>  <!-- Unhead: htmlAttrs -->
  <head>
    <!-- Unhead: head -->
  </head>
  <body> <!-- Unhead: bodyAttrs -->
    <!-- Unhead: bodyOpen -->
    <div id="app"></div> <!-- Your app -->
    <!-- Unhead: bodyClose -->
  </body>
</html>
```

## Introducing Unhead

Unhead was built as a universal head manager for JavaScript applications. It initially allowed frameworks such as Vue and Nuxt to offload head management to a standalone library.

Many frameworks implement their own head-management solutions, but supporting every way tags can be inserted into a document is difficult.

As a dedicated library, Unhead provides a head-management API, plugins, and integrations that can be shared across frameworks.

## What Unhead Provides

- **Lazy DOM patching:** A small DOM diffing engine updates only the tags that changed.
- **Typed API:** Tag and attribute types include inline MDN documentation.
- **Flat SEO metadata:** Manage more than 100 meta tags without nested objects using [`useSeoMeta()`](https://unhead.unjs.io/docs/head/api/composables/use-seo-meta).
- **Schema.org support:** Generate typed structured data with [`useSchemaOrg()`](https://unhead.unjs.io/docs/schema-org/api/composables/use-schema-org).
- **Script API:** Load third-party scripts with proxied APIs, triggers, and resource hints using [`useScript()`](https://unhead.unjs.io/docs/head/api/composables/use-script).
- **SSR and CSR:** Render on the server, then adopt and update those tags on the client.
- **Framework integrations:** Use Unhead with Vue, React, Svelte, Solid, Angular, or vanilla TypeScript.

## Install for Your Framework

- [Vue Installation](https://unhead.unjs.io/docs/vue/head/guides/get-started/installation)
- [React Installation](https://unhead.unjs.io/docs/react/head/guides/get-started/installation)
- [Svelte Installation](https://unhead.unjs.io/docs/svelte/head/guides/get-started/installation)
- [Solid Installation](https://unhead.unjs.io/docs/solid-js/head/guides/get-started/installation)
- [Angular Installation](https://unhead.unjs.io/docs/angular/head/guides/get-started/installation)
- [TypeScript (Vanilla)](https://unhead.unjs.io/docs/typescript/head/guides/get-started/installation)

For framework-independent behavior, start with these guides:

- [Page Titles](https://unhead.unjs.io/docs/head/guides/core-concepts/titles): Set titles and title templates
- [Tag Positions](https://unhead.unjs.io/docs/head/guides/core-concepts/positions): Control tag placement and ordering
- [Loading Scripts](https://unhead.unjs.io/docs/head/guides/core-concepts/loading-scripts): Manage script loading and APIs

## Sitemap

See the full [sitemap](https://unhead.unjs.io/sitemap.md) for all pages.
