--- navigation.icon: uil:file-search-alt description: Improve your Nuxt app's SEO with powerful head config, composables and components. --- # SEO and Meta Improve your Nuxt app's SEO with powerful head config, composables and components. ## Defaults Out-of-the-box, Nuxt provides sane defaults, which you can override if needed. - `charset`: `utf-8` - `viewport`: `width=device-width, initial-scale=1` ```ts [nuxt.config.ts] export default defineNuxtConfig({ app: { head: { charset: 'utf-8', viewport: 'width=device-width, initial-scale=1', } } }) ``` Providing an [`app.head`](/docs/api/configuration/nuxt-config#head) property in your [`nuxt.config.ts`](/docs/guide/directory-structure/nuxt.config) allows you to customize the head for your entire app. ::alert{type=info} This method does not allow you to provide reactive data. We recommend to use `useHead()` in `app.vue`. :: Shortcuts are available to make configuration easier: `charset` and `viewport`. You can also provide any of the keys listed below in [Types](#types). ## `useHead` The `useHead` composable function allows you to manage your head tags in a programmatic and reactive way, powered by [Unhead](https://unhead.harlanzw.com/). As with all composables, it can only be used with a components `setup` and lifecycle hooks. ```vue [app.vue] ``` We recommend to take a look at the [`useHead`](/docs/api/composables/use-head) and [`useHeadSafe`](/docs/api/composables/use-head-safe) composables. ## `useSeoMeta` The `useSeoMeta` and `useServerSeoMeta` composables let you define your site's SEO meta tags as a flat object with full TypeScript support. This helps you avoid typos and common mistakes, such as using `name` instead of `property`. In most instances, the meta does not need to be reactive as robots will only scan the initial load. So we recommend using `useServerSeoMeta` as a performance-focused utility that will not do anything (or return a `head` object) on the client. **Simple example:** ```vue [app.vue] ``` **Reactive example:** When inserting tags that are reactive, for example, from an API request, you should use the computed getter syntax, the same as `useHead`. ```vue [app.vue] ``` Read more on the [`useSeoMeta`](https://unhead.harlanzw.com/guide/composables/use-seo-meta) composable. ## Components Nuxt provides `