Configuration Reference
This theme follows a Jekyll-native split:
- Behavior and rendering options in
_config.ymlunderjekyll_vitepress - Navigation/social/version/sidebar content in
_data/*.yml
For parity notes compared to VitePress core, see VitePress Parity. For optional extras, see Extensions to VitePress.
Minimal setup
jekyll_vitepress:
branding:
site_title: My Docs
- title: Guide
url: /getting-started/
collections: [introduction, core_features, advanced]
- title: Getting Started
collection: introduction
_config.yml (jekyll_vitepress)
Branding
branding.site_titlebranding.logo.defaultbranding.logo.lightbranding.logo.darkbranding.logo.altbranding.logo.widthbranding.logo.height
jekyll_vitepress:
branding:
site_title: My Project
logo:
default: /assets/images/logo.svg
light: /assets/images/logo-light.svg
dark: /assets/images/logo-dark.svg
alt: My Project
width: 24
height: 24
Typography and Tokens
typography.body_font_familytypography.code_font_familytypography.google_fonts_url(falsedisables external font loading)tokens.lighttokens.dark
jekyll_vitepress:
typography:
body_font_family: "'Inter', ui-sans-serif, system-ui, sans-serif"
code_font_family: "'JetBrains Mono', ui-monospace, monospace"
google_fonts_url: "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"
tokens:
light:
--vp-c-brand-1: "#3451b2"
--vp-c-brand-2: "#3a5ccc"
dark:
--vp-c-brand-1: "#a8b1ff"
--vp-c-brand-2: "#bac2ff"
Syntax Highlighting (Rouge)
syntax.light_themesyntax.dark_theme
These values map directly to installed Rouge theme names.
jekyll_vitepress:
syntax:
light_theme: github
dark_theme: github.dark
SEO and Discovery
Core SEO is enabled by default. The theme generates page metadata, Open Graph and Twitter cards, JSON-LD, sitemap.xml, and robots.txt without jekyll-seo-tag or jekyll-sitemap.
seo.enabled(defaults totrue;falsedisables the theme’s SEO output)seo.index(defaults totrue;falseemits site-widenoindexand disallows crawling)-
seo.title_separator(defaults to ``) seo.title_template(optional; supports:pageand:site)seo.robots(default indexable-page directive)seo.image.path,alt,width,height(default social and structured-data image)seo.page_type(defaults toWebPage; article-style documentation may useArticle)seo.publisher.type(OrganizationorPerson),name,url,logo,same_asseo.schema.enabled(defaults totrue)seo.sitemapandseo.robots_txt(both default totrue)seo.robots_txt_rules(optional extra literal rules)
title: My Project Docs
description: Install, configure, and use My Project.
url: https://docs.example.com
baseurl: ""
lang: en-US
author:
name: Your Name
url: https://example.com
jekyll_vitepress:
seo:
page_type: Article
title_template: ":page | :site"
image:
path: /assets/images/social-card.png
alt: My Project documentation
width: 1200
height: 630
publisher:
type: Organization
name: My Project
url: https://example.com
logo: /assets/images/logo.png
same_as:
- https://github.com/example/project
The theme also understands the standard Jekyll twitter, facebook, webmaster_verifications, author, locale, and logo keys. A source sitemap.xml or robots.txt takes precedence over generated output. seo: false in page frontmatter disables all theme metadata for that page, which is useful when a custom head include owns it instead.
LLM Discovery
The theme generates two AI-readable files without an additional plugin:
/llms.txt: a concise index grouped in sidebar/collection order, with canonical URLs and page descriptions/llms-full.txt: the complete Markdown content of every eligible page in one file
Redirects, 404 pages, noindex pages, and pages canonicalized to another URL are excluded. A page can be excluded independently with llms: false. Source files named llms.txt or llms-full.txt override the corresponding generated output.
llms.enabled(defaults totrue)llms.full(defaults totrue; set tofalseto omitllms-full.txt)llms.titleandllms.description(default to the site values)llms.details(optional introductory Markdown without headings)
jekyll_vitepress:
llms:
enabled: true
full: true
details: >-
Start with the installation and API reference sections.
llms.txt is an emerging convention intended to help agents find authoritative documentation at inference time; it is not a search-ranking control or a replacement for robots.txt and sitemap.xml.
Footer and Doc Footer
footer.enabledfooter.show_on_docs(defaults tofalse; footer only shows on home page unless set totrue)footer.messagefooter.copyrightdoc_footer.enableddoc_footer.previous_labeldoc_footer.next_label
jekyll_vitepress:
footer:
enabled: true
message: Released under the MIT License.
copyright: © 2026-present You
show_on_docs: false
doc_footer:
enabled: true
previous_label: Previous page
next_label: Next page
Edit Link, Last Updated, GitHub Star, GitHub Sponsor, and Gem Downloads
edit_link.enablededit_link.patternedit_link.textlast_updated.enabledlast_updated.textlast_updated.format(vitepressfor browser-local VitePress-style formatting, or a Jekyll strftime string)github_star.enabledgithub_star.repository(owner/repo)github_star.textgithub_star.show_countgithub_sponsor.enabledgithub_sponsor.user(GitHub Sponsors account name)github_sponsor.url(optional custom sponsorship URL)github_sponsor.textgithub_sponsor.labelgem_downloads.enabledgem_downloads.nameorgem_downloads.gemgem_downloads.url(optional custom downloads URL)gem_downloads.textgem_downloads.labelgem_downloads.show_count
jekyll_vitepress:
edit_link:
enabled: true
pattern: "https://github.com/you/project/edit/main/docs/:path"
text: Edit this page on GitHub
last_updated:
enabled: true
text: Last updated
format: vitepress
github_star:
enabled: true
repository: you/project
text: Star
show_count: true
github_sponsor:
enabled: true
user: you
text: Sponsor
gem_downloads:
enabled: true
name: your_gem
text: Gem downloads
url: https://rubygems.org/gems/your_gem
label: View gem downloads
show_count: true
If github_sponsor.url is omitted, the theme links to https://github.com/sponsors/:user.
If gem_downloads.url is omitted, the page-level downloads include links to https://rubygems.org/gems/:name.
If last_updated.format is vitepress, the static fallback is replaced in the browser using Intl.DateTimeFormat with medium date and medium time, matching VitePress. Use a Jekyll strftime string such as "%b %-d, %Y, %-I:%M:%S %p" for a static custom format.
Copy Page
copy_page.enabled(defaults totrue)
Copy page adds a split button to each doc page header. The main button copies the page as raw Markdown. The dropdown includes a “View as Markdown” link that opens the page as a plain .md file (generated alongside the HTML at build time). The link is marked nofollow, and the generated robots.txt excludes .md files so search engines favor the canonical HTML pages.
To disable:
jekyll_vitepress:
copy_page:
enabled: false
Per-page disable via frontmatter:
jekyll_vitepress:
copy_page: false
Labels and Behavior
labels.outlinelabels.sidebar_menulabels.return_to_toplabels.skip_to_contentlabels.appearance_menulabels.switch_to_darklabels.switch_to_lightbehavior.scroll_offset
jekyll_vitepress:
labels:
outline: On this page
sidebar_menu: Menu
return_to_top: Return to top
skip_to_content: Skip to content
appearance_menu: Appearance
switch_to_dark: Switch to dark theme
switch_to_light: Switch to light theme
behavior:
scroll_offset: 134
_data files
Navigation (_data/navigation.yml)
Top navbar links:
- title: Guide
url: /what-is-jekyll-vitepress-theme/
collections: [introduction, core_features, advanced]
- title: Reference
url: /configuration-reference/
collections: [reference]
Sidebar (_data/sidebar.yml)
Collection-driven sidebar groups:
- title: Introduction
collection: introduction
- title: Core Features
collection: core_features
- title: Advanced
collection: advanced
- title: Reference
collection: reference
Within each collection, page frontmatter controls hierarchy:
---
title: Tools
nav_order: 2
has_children: true
---
---
title: Tool Parameters
parent: Tools
nav_order: 1
---
The theme supports nested items using parent, optional grand_parent, and nav_order, matching common Jekyll documentation conventions while rendering a VitePress-style sidebar tree. Set collapsed: true on a parent page to close that branch by default.
Social links (_data/social_links.yml)
icon: built-in icon slugurl: link targetlabel: aria labelicon_svg: optional custom inline SVG
- icon: github
url: https://github.com/you/project
label: GitHub
- icon: x
url: https://x.com/you
label: X
- icon: custom
url: https://bsky.app/profile/you
label: Bluesky
icon_svg: '<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 11.388c0-.756 1.676-3.35 3.43-4.594 2.296-1.627 3.726-1.348 4.3-.225.672 1.316-.53 4.77-2.257 6.48-.958.949-1.786 1.433-2.84 1.356-.67-.05-1.167-.35-1.586-.824-.49-.554-.732-1.346-1.047-2.193-.315.847-.557 1.64-1.047 2.193-.419.474-.916.775-1.586.824-1.054.077-1.882-.407-2.84-1.356C5.8 11.339 4.6 7.885 5.271 6.57c.574-1.124 2.004-1.402 4.3.225 1.754 1.243 3.43 3.838 3.43 4.594Z"/></svg>'
Built-in icon slugs are:
github, gitlab, bitbucket, discord, slack, x, twitter,
mastodon, linkedin, youtube, facebook, instagram, reddit,
bluesky, telegram, twitch, npm, medium, devdotto, dribbble,
stackoverflow, rss, and blog (alias of rss).
Versions (_data/versions.yml)
If this file exists, it drives the version selector:
current: auto
items:
- id: v2.0.0
title: v2.0.0 (latest)
url: /
- id: v1.0.0
title: v1.0.0
url: /v1.0.0/
- title: Changelog
url: https://github.com/you/project/releases
external: true
current: auto resolves to v#{Jekyll::VitePressTheme::VERSION} at build time.
Theme hooks (Jekyll include overrides)
Use these optional include files to inject custom markup without forking layouts:
_includes/jekyll_vitepress/head_end.html_includes/jekyll_vitepress/doc_footer_end.html_includes/jekyll_vitepress/layout_end.html
If the files are absent in your site, the theme’s empty defaults are used.
<div class="my-doc-footer">
Need help? <a href="/support/">Contact support</a>.
</div>