Overview

Quartz is a static site generator for Obsidian-flavored markdown: it parses a folder of notes, resolves wikilinks, and emits HTML. This site runs Quartz 4.5.2, configured in quartz.config.ts and quartz.layout.ts. The Quartz pages here were checked against that source, not against upstream docs.

Check which Quartz major you are on

Upstream’s current docs describe Quartz 5, which moves configuration to quartz.config.yaml, adds community plugins with npx quartz plugin add (and restores configured ones with npx quartz plugin install), and replaces quartz.layout.ts with per-plugin layout settings. The v4 branch remains available. The snippets on these pages are Quartz 4 (TypeScript config); if a repo has quartz.config.yaml, they do not apply. Sources: What’s new in Quartz 5, Migrating to Quartz 5.

Use Quartz for an Obsidian-first knowledge base

Pick Quartz when the content is a vault where wikilinks, backlinks, and a folder tree are the navigation, hosted on GitHub Pages, Cloudflare Pages, or Vercel. Pick something else for a marketing site with rich layouts (astro) or an interactive app.

Require Node 22 and update on purpose

Quartz 4.5.2 declares "node": ">=22" in engines. Use the repo’s own copy (npx quartz ...), never a global install. In a fork, npx quartz update adds the upstream remote, pulls its v4 branch, and runs npm i. Run it on a branch, rebuild, and read the diff, because customized layout, component, and plugin files can conflict.

Local commands: npx quartz build --serve for a live preview on port 8080, npx quartz build for a one-off build into public/.

Know this site’s deviations from stock Quartz

  • CustomHead replaces Head; it falls back to the summary frontmatter field for the meta description.
  • RawMarkdown serves each page’s source at <slug>.md next to the HTML.
  • AliasRedirects is patched to write an absolute canonical link in each stub, so crawlers are pointed at the real page (quartz-plugins).
  • Graph is deliberately absent from the layout for performance (quartz-components).
  • cdnCaching: false, so fonts are downloaded at build time and served from this domain (quartz-config).

Publish llms.txt as an asset

The Assets emitter copies every non-markdown file under content/, so content/llms.txt ships at /llms.txt. Markdown files become pages. See llms-txt for the format.

Find the topic page

TopicPage
quartz.config.ts fields, dates, themequartz-config
Transformers, filters, emitters, orderingquartz-plugins
Layout slots and custom componentsquartz-components
Build failures and silent wrong outputquartz-debugging
GitHub Pages, Cloudflare, Vercel, CNAMEquartz-deployment
Vault sideobsidian-publishing-to-quartz