WebPage Schema · Unhead

[Unhead Home](https://unhead.unjs.io/ "Home")

- [Docs](https://unhead.unjs.io/docs/typescript/head/guides/get-started/overview)
- [Tools](https://unhead.unjs.io/tools)
- [Learn](https://unhead.unjs.io/learn/guides/what-is-capo)

[Releases](https://unhead.unjs.io/releases)

Search…```k`` /`

[Unhead on GitHub](https://github.com/unjs/unhead)

[User Guides](https://unhead.unjs.io/docs/typescript/schema-org/guides/get-started/overview)

[API](https://unhead.unjs.io/docs/typescript/schema-org/api/composables/use-schema-org)

TypeScript

- [Switch to TypeScript](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/webpage)
- [Switch to Vue](https://unhead.unjs.io/docs/vue/schema-org/api/schema/webpage)
- [Switch to React](https://unhead.unjs.io/docs/react/schema-org/api/schema/webpage)
- [Switch to Svelte](https://unhead.unjs.io/docs/svelte/schema-org/api/schema/webpage)
- [Switch to Solid.js](https://unhead.unjs.io/docs/solid-js/schema-org/api/schema/webpage)
- [Switch to Angular](https://unhead.unjs.io/docs/angular/schema-org/api/schema/webpage)
- [Switch to Nuxt](https://unhead.unjs.io/docs/nuxt/schema-org/api/schema/webpage)

v3 (beta)

You're viewing **Unhead v3 beta** documentation.

Schema.org

- [Discord Support](https://discord.com/invite/275MBUBvgP)
- [TypeScript Playground](https://stackblitz.com/edit/github-hhxywsb5)

- Composables
  - [`useSchemaOrg()`](https://unhead.unjs.io/docs/typescript/schema-org/api/composables/use-schema-org)
- Nodes
  - [Article](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/article)
  - [Book Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/book)
  - [Breadcrumb Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/breadcrumb)
  - [Comment Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/comment)
  - [Course Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/course)
  - [Dataset Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/dataset)
  - [Event Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/event)
  - [Food Establishment Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/food-establishment)
  - [HowTo](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/how-to)
  - [Image Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/image)
  - [ItemList](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/item-list)
  - [JobPosting](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/job-posting)
  - [LocalBusiness](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/local-business)
  - [Movie Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/movie)
  - [Music Album Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/music-album)
  - [Music Group Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/music-group)
  - [Music Playlist Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/music-playlist)
  - [Music Recording Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/music-recording)
  - [Organization](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/organization)
  - [Person Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/person)
  - [Podcast Episode Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/podcast-episode)
  - [Podcast Season Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/podcast-season)
  - [Podcast Series Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/podcast-series)
  - [Product Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/product)
  - [Question Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/question)
  - [Recipe Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/recipe)
  - [Service Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/service)
  - [SoftwareApplication](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/software-app)
  - [TV Episode Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/tv-episode)
  - [TV Season Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/tv-season)
  - [TV Series Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/tv-series)
  - [Video Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/video)
  - [WebPage Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/webpage)
  - [WebSite Schema](https://unhead.unjs.io/docs/typescript/schema-org/api/schema/website)

Schema

# WebPage Schema

[Copy for LLMs](https://raw.githubusercontent.com/unjs/unhead/refs/heads/main/docs/schema-org/5.api/9.schema/webpage.md)

Last updated Jan 19, 2026 by [Harlan Wilton](https://github.com/harlan-zw) in [docs: sync](https://github.com/unjs/unhead/commit/d2f86454774aa60706628b46a850653e1e4d56d9).

On this page

- [Schema.org WebPage](#schemaorg-webpage)
- [Useful Links](#useful-links)
- [Recommended properties](#recommended-properties)
- [Defaults](#defaults)
- [Sub-Types](#sub-types)
- [Relation Transforms](#relation-transforms)
- [Resolves](#resolves)
- [Example](#example)
- [Types](#types)

## [Schema.org WebPage](#schemaorg-webpage)

- **Type**: `defineWebPage(input?: WebPage)`Describes a single page on a WebSite. Acts as a container for sub-page elements (such as Article).Acts as a connector from a page's content to the parent WebSite (and in turn, to the Organization).

## [Useful Links](#useful-links)

- [Schema.org WebPage](https://schema.org/WebPage)

## [Recommended properties](#recommended-properties)

- **name** `string`The title of the page.A name can be provided using route meta on the `title` key, see [defaults](#defaults).

## [Defaults](#defaults)

- **@type**: inferred from path, fallbacks to `WebPage`, see [resolves](#resolves)
- **@id**: `${canonicalUrl}#webpage`
- **url**: `canonicalUrl`
- **name**: `currentRouteMeta.title` _(see: [Schema.org Params](https://unhead.unjs.io/docs/schema-org/guides/core-concepts/params))_
- **isPartOf**: WebSite reference

Home page only

- **about**: Identity Reference
- **primaryImageOfPage**: Logo reference

## [Sub-Types](#sub-types)

- `AboutPage`
- `CheckoutPage`
- `CollectionPage`
- `ContactPage`
- `FAQPage`
- `ItemPage`
- `MedicalWebPage`
- `ProfilePage`
- `QAPage`
- `RealEstateListing`
- `SearchResultsPage`

## [Relation Transforms](#relation-transforms)

[WebPage](https://unhead.unjs.io/docs/schema-org/api/schema/webpage)

- sets `potentialAction` to `ReadAction`
- sets `dateModified` to articles `dateModified`
- sets `datePublished` to articles `datePublished`

## [Resolves](#resolves)

- `dateModified` or `datePublished` can be resolved from Date objects

```
defineWebPage({
  // will resolve to ISO 8601 format
  datePublished: new Date(2020, 10, 1)
})
```

- providing a single string of `@type` which isn't `WebPage` will convert it to an array `TechArticle` -> `['WebPage', 'AboutPage']`

```
defineWebPage({
  // will be resolved as ['WebPage', 'AboutPage']
  '@type': 'AboutPage',
})
```

- @type based on last URL path-- `/about`, `/about-us` -> `AboutPage`-- `/search` -> `SearchResultsPage`-- `/checkout` -> `CheckoutPage`-- `/contact`, `/get-in-touch`, `/contact-us` -> `ContactPage`-- `/faq` -> `FAQPage`

## [Example](#example)

```
defineWebPage({
  name: 'Page Title',
  image: '/image.jpg',
})
```

## [Types](#types)

```
/**
 * A web page.
 * Every web page is implicitly assumed to be declared to be of type WebPage,
 * so the various properties about that webpage, such as breadcrumb may be used.
 */
type ValidSubTypes = 'WebPage' | 'AboutPage' | 'CheckoutPage' | 'CollectionPage' | 'ContactPage' | 'FAQPage' | 'ItemPage' | 'MedicalWebPage' | 'ProfilePage' | 'QAPage' | 'RealEstateListing' | 'SearchResultsPage'

/**
 * A web page.
 * Every web page is implicitly assumed to be declared to be of type WebPage,
 * so the various properties about that webpage, such as breadcrumb may be used.
 */
export interface WebPageSimple extends Thing {
  ['@type']?: Arrayable<ValidSubTypes>
  /**
   * The unmodified canonical URL of the page.
   */
  url?: string
  /**
   * The title of the page.
   */
  name?: string
  /**
   * The page's meta description content.
   */
  description?: string
  /**
   * A reference-by-ID to the WebSite node.
   */
  isPartOf?: NodeRelation<WebSite>
  /**
   * A reference-by-ID to the Organisation node.
   * Note: Only for the home page.
   */
  about?: NodeRelation<Organization>
  /**
   * A reference-by-ID to the author of the web page.
   */
  author?: NodeRelation<Person | string>
  /**
   * The language code for the page; e.g., en-GB.
   */
  inLanguage?: Arrayable<string>
  /**
   * The time at which the page was originally published, in ISO 8601 format; e.g., 2015-10-31T16:10:29+00:00.
   */
  datePublished?: ResolvableDate
  /**
   * The time at which the page was last modified, in ISO 8601 format; e.g., 2015-10-31T16:10:29+00:00.
   */
  dateModified?: ResolvableDate
  /**
   * A reference-by-ID to a node representing the page's featured image.
   */
  primaryImageOfPage?: NodeRelation<ImageObject | string>
  /**
   * A reference-by-ID to a node representing the page's breadrumb structure.
   */
  breadcrumb?: NodeRelation<BreadcrumbList>
  /**
   * An array of all videos in the page content, referenced by ID.
   */
  video?: NodeRelations<VideoObject>
  /**
   * A SpeakableSpecification object which identifies any content elements suitable for spoken results.
   */
  speakable?: unknown
  /**
   * The time at which the page was last reviewed, in ISO 8601 format.
   */
  lastReviewed?: string
  /**
   * An array of keywords describing the page.
   */
  keywords?: string[]
  /**
   * Potential actions for this web page.
   *
   * Note it's on by default for most page types.
   */
  potentialAction?: Arrayable<(ReadAction | unknown)>
}
```

[Edit this page](https://github.com/unjs/unhead/edit/main/docs/schema-org/5.api/9.schema/webpage.md)

[Markdown For LLMs](https://raw.githubusercontent.com/unjs/unhead/refs/heads/main/docs/schema-org/5.api/9.schema/webpage.md)

Did this page help you?

[Video Schema Use defineVideo() to add VideoObject structured data. Enable video rich snippets with thumbnails, duration, and upload date in Google search results.](https://unhead.unjs.io/docs/schema-org/api/schema/video) [WebSite Schema Use defineWebSite() to add WebSite structured data. Establish your site identity and enable sitelinks search box in Google search results.](https://unhead.unjs.io/docs/schema-org/api/schema/website)

On this page

- [Schema.org WebPage](#schemaorg-webpage)
- [Useful Links](#useful-links)
- [Recommended properties](#recommended-properties)
- [Defaults](#defaults)
- [Sub-Types](#sub-types)
- [Relation Transforms](#relation-transforms)
- [Resolves](#resolves)
- [Example](#example)
- [Types](#types)

[GitHub](https://github.com/unjs/unhead) [ Discord](https://discord.com/invite/275MBUBvgP)

[ /llms.txt](https://unhead.unjs.io/llms.txt)

[Part of the UnJS ecosystem](https://unjs.io/)

### Articles

- [Announcing Unhead v2](https://unhead.unjs.io/releases/v2)

### Tools

- [Meta Tag Generator](https://unhead.unjs.io/tools/meta-tag-generator)
- [OG Image Generator](https://unhead.unjs.io/tools/og-image-generator)
- [Schema.org Generator](https://unhead.unjs.io/tools/schema-generator)

### Head

- [Overview](https://unhead.unjs.io/docs/typescript/head/guides/get-started/overview)
- [Introduction to Unhead](https://unhead.unjs.io/docs/typescript/head/guides/get-started/intro-to-unhead)
- [Starter Recipes](https://unhead.unjs.io/docs/typescript/head/guides/get-started/starter-recipes)

### Schema.org

- [Introduction](https://unhead.unjs.io/docs/typescript/schema-org/guides/get-started/overview)

Copyright © 2025-2026 Harlan Wilton - [MIT License](https://github.com/unjs/unhead/blob/main/license)