Last updated July 11, 2026
SEO & Metadata
3 minutes read
folio.md handles the SEO essentials for every page at build time. You don’t need to configure anything for basic SEO to work.
What folio.md does for you
For every page, folio.md automatically generates:
- Browser tab title: formatted as
{page title} | {site name} - Search engine description: from your page
description, or the site-level fallback fromfolio.config.ts - Canonical URL: built from
siteUrlinfolio.config.ts; omitted for pages markednoIndex: true - Social sharing cards: Open Graph and Twitter card tags so links preview correctly on social platforms
- Social sharing image: a generated image for every page; see Open Graph images
- Structured data: JSON-LD to help search engines understand your content; see Structured data
- Sitemap:
/sitemap.xmllisting all public pages; see Sitemap - Atom feed:
/feed.xmllisting all public pages; see Atom feed - Robots file:
/robots.txtcontrolling crawler access; see Robots.txt - Author credit: included in metadata when you add
author:to a page - Mobile theme color: derived from your configured theme gradient
Customizing SEO per page
Control metadata on individual pages through page settings:
| What you want | What to set |
|---|---|
| Description in search snippets | description: on the page |
| Author credit | author: on the page |
| Extra search keywords | keywords: on the page |
| Hide from search engines and the sitemap | noIndex: true on the page |
See Page Settings for the full list of per-page options.
To change SEO settings across the whole site, use folio.config.ts. See Configuration for details.
Open Graph images
folio.md generates a social sharing image for every page at build time using Satori (opens in new tab) and Sharp (opens in new tab). Each image is 1200×630 px and includes the page title, description, and site name, styled with your configured gradient colors.
These images appear automatically when someone shares a link to your site on social platforms. You don’t need any extra configuration.
Sitemap
folio.md generates /sitemap.xml at build time, listing every page that doesn’t have noIndex: true. Each entry includes a lastmod date from git history where available.
folio.md links to the sitemap from every page so search engines can discover it automatically.
Atom feed
folio.md generates /feed.xml at build time, listing every page without noIndex: true, sorted by most recently modified. Each entry includes the page title, description, canonical URL, and dates from git history.
folio.md links to the feed from every page so feed readers can discover it automatically.
Robots.txt
folio.md generates /robots.txt at build time. By default, it allows all crawlers to index all pages. To change this, set seo.robots in folio.config.ts. See Configuration for details.
Structured data
folio.md injects JSON-LD structured data into every page:
- WebSite: site name and URL on every page
- Article: title, description, author, and dates on every non-
noIndexpage - BreadcrumbList: the sidebar path to the current page, on pages nested at least two levels deep
folio.md generates this automatically from your page settings and folio.config.ts. No configuration needed.