Skip to main content

Frontmatter Config Reference

Frontmatter enables page-based configuration. Use YAML frontmatter at the top of any markdown file to override site-level or theme-level options.
Access frontmatter data via the $frontmatter global in Vue expressions: {{ $frontmatter.title }}

Site Metadata

These options override site-level configuration for individual pages.

title

string
Title for the page. Overrides site-level title.This becomes the page’s <title> tag and is combined with titleTemplate if configured.

titleTemplate

string | boolean
The suffix for the title. Overrides site-level titleTemplate.Use :title as a placeholder for the page’s main title. Set to false to disable the suffix.

description

string
Description for the page. Overrides site-level description.Renders as a <meta name="description"> tag.
HeadConfig[]
Additional head tags to inject for the current page. Appended after site-level head tags.

Layout

Control the page layout and structure.

layout

'doc' | 'home' | 'page'
default:"doc"
Determines the layout of the page.
  • doc: Default documentation styles applied to markdown content
  • home: Special layout for home/landing pages with hero and features sections
  • page: Similar to doc but no styles applied - fully custom page

hero

Hero
home layout onlyDefines the hero section content when layout is set to home.

features

Feature[]
home layout onlyDefines feature items to display when layout is set to home.
boolean
default:"true"
Whether to display the navbar on this page.
boolean
default:"true"
Whether to display the sidebar on this page.

aside

boolean | 'left'
default:"true"
Controls the aside (table of contents) rendering.
  • false: No aside
  • true: Aside to the right
  • 'left': Aside to the left
Overrides theme-level aside.

outline

number | [number, number] | 'deep' | false
default:"2"
The levels of headers to display in the outline.
  • Number: Single level (e.g., 2 for only <h2>)
  • Array: Range (e.g., [2, 4] for <h2> to <h4>)
  • 'deep': All levels from <h2> to <h6> (equivalent to [2, 6])
  • false: Disable outline
Overrides the level from theme-level outline.
Whether to display the footer on this page.Overrides theme-level footer.
Whether to display the edit link in the footer of this page.Overrides theme-level editLink.

lastUpdated

boolean | Date
default:"true"
Whether to display the last updated timestamp in the footer.If a Date object is provided, it will be displayed instead of the Git timestamp.

prev

string | boolean | { text: string; link: string }
Customize or disable the previous page link in the doc footer.
  • String: Use as link text with auto-detected URL
  • Boolean false: Disable previous link
  • Object: Fully customize text and link

next

string | boolean | { text: string; link: string }
Customize or disable the next page link in the doc footer.Same options as prev.

Styling

pageClass

string
Add an extra CSS class name to this specific page for custom styling.
Then style it in .vitepress/theme/custom.css:

Special Flags

isHome

boolean
Force the page to be treated as the home page by the theme.Useful when using a custom layout but wanting home page elements to appear.

SEO & Social

While not built-in frontmatter options, you can add custom frontmatter and use it with hooks:
Access in your theme or via transformPageData:

Example: Complete Frontmatter

Here’s a comprehensive example showing many options together:

Accessing Frontmatter

In Markdown

Use the $frontmatter global:

In Vue Components

Use the useData() composable:

In Config Hooks

Access via the pageData parameter: