zfb's markdown pipeline provides a set of **Core** features that are always active, plus a set of **Opt-in** features that you enable individually in `zfb.config.ts` under `markdown.features`.

## Core features

These 7 features are always active — no configuration required.

| Feature | Description |
| --- | --- |
| [CJK Friendly](https://zudo-doc.takazudomodular.com/docs/markdown-features/cjk-friendly) | Improves spacing and line-breaking for CJK (Chinese, Japanese, Korean) prose. |
| [Heading Links](https://zudo-doc.takazudomodular.com/docs/markdown-features/heading-links) | Adds anchor links to h2+ headings for direct deep-linking. |
| [Code Title](https://zudo-doc.takazudomodular.com/docs/markdown-features/code-title) | Renders a filename/title bar above fenced code blocks when `title="…"` is set. |
| [Resolve Links](https://zudo-doc.takazudomodular.com/docs/markdown-features/resolve-links) | Resolves relative `.mdx`/`.md` links to clean doc URLs. |
| [Strip .md Extension](https://zudo-doc.takazudomodular.com/docs/markdown-features/strip-md-ext) | Strips `.md`/`.mdx` from internal link hrefs in the final output. |
| [Syntax Highlighting](https://zudo-doc.takazudomodular.com/docs/markdown-features/syntax-highlighting) | Build-time semantic class highlighting mapped to the active color scheme. |
| [Directives Registry](https://zudo-doc.takazudomodular.com/docs/markdown-features/directives-registry) | The generic `:::name` directive engine — maps directive syntax to JSX components. The admonition vocabulary is registered separately as a recipe. |

## Opt-in features

These 14 features are opt-in at the zfb engine level — each is disabled unless explicitly configured, mostly under `markdown.features.*` (External Links and Image Enlarge use a differently-shaped key instead). This showcase doesn't hand-configure `markdown` itself, though: the `zudoDoc({...})` preset pre-enables most of the `markdown.features.*` entries below out of the box — see each feature's own page for its exact preset default. A bare `defineConfig({ markdown: { features: {...} } })` bypasses `zudoDoc()` entirely and discards everything else the preset wires (collections, chrome, code highlighting, and more), so always start from `zudoDoc({...})` and extend its `markdown` block instead.

| Feature | Config key | Description |
| --- | --- | --- |
| [External Links](https://zudo-doc.takazudomodular.com/docs/markdown-features/external-links) | `markdown.externalLinks` | Adds `target`/`rel` to outbound links when enabled. Off by default — content-body links get no automatic visual indicator either way. |
| [Admonitions Preset](https://zudo-doc.takazudomodular.com/docs/markdown-features/admonitions-preset) | `directives` | Registers the admonition vocabulary (note/tip/warning/danger/info/caution/details) via the `directives` map. |
| [Mermaid](https://zudo-doc.takazudomodular.com/docs/markdown-features/mermaid) | `mermaid` | Renders ` ```mermaid ` fences as diagrams via the client-side Mermaid library. |
| [Image Enlarge](https://zudo-doc.takazudomodular.com/docs/markdown-features/image-enlarge) | `settings.imageEnlarge` | Wraps images in a `<figure>` that expands them on click. Userland setting — the built-in `markdown.features` key was removed at next.18. |
| [Heading Marker TOC](https://zudo-doc.takazudomodular.com/docs/markdown-features/heading-marker-toc) | `headingMarkerToc` | Attaches per-heading anchor markers and feeds the TOC island. |
| [GitHub Alerts](https://zudo-doc.takazudomodular.com/docs/markdown-features/github-alerts) | `githubAlerts` | Converts `> [!NOTE]`/`[!TIP]`/`[!WARNING]`/`[!IMPORTANT]`/`[!CAUTION]` blockquotes to admonition markup. |
| [Reading Time](https://zudo-doc.takazudomodular.com/docs/markdown-features/reading-time) | `readingTime` | Computes estimated reading time and exposes it as page-level metadata. |
| [Code Enrichment](https://zudo-doc.takazudomodular.com/docs/markdown-features/code-enrichment) | `codeEnrichment` | Adds diff/line/word-highlight decorations to already-highlighted code blocks. The title bar is a separate, always-on core feature (see [Code Title](https://zudo-doc.takazudomodular.com/docs/markdown-features/code-title)), and the copy/wrap buttons are added to every code block regardless of whether this feature is enabled. |
| [Code Tabs](https://zudo-doc.takazudomodular.com/docs/markdown-features/code-tabs) | `codeTabs` | Renders `:::code-group` directives as tabbed code panels via `<CodeGroup>`. |
| [Ruby](https://zudo-doc.takazudomodular.com/docs/markdown-features/ruby) | `ruby` | Adds ruby annotation support (`{base}^{ruby}` syntax). |
| [TOC Export](https://zudo-doc.takazudomodular.com/docs/markdown-features/toc-export) | `tocExport` | Exports the page table-of-contents as an `export const toc` named export. |
| [Image Dimensions](https://zudo-doc.takazudomodular.com/docs/markdown-features/image-dimensions) | `imageDimensions` | Injects `width`/`height` attributes on images from disk metadata at build time. |
| [Link Validation](https://zudo-doc.takazudomodular.com/docs/markdown-features/link-validation) | `linkValidation` | Validates internal links at build time and warns (or errors) on broken references. |
| [Transclude](https://zudo-doc.takazudomodular.com/docs/markdown-features/transclude) | `transclude` | Splices another Markdown or MDX file into the source AST. Off by default; enable it with `zudoDoc({ transclude: true })`. |

:::note[Other pipeline knobs]

zfb also exposes `markdown.gfm` (fine-grained GitHub-Flavored-Markdown construct toggles) and `markdown.hardBreaks` (converts every soft line break to `<br>`) as top-level `markdown` config keys. Neither is part of the Core/Opt-in census above. `markdown.hardBreaks` isn't configured in this project's `zfb.config.ts`, but the `zudoDoc({...})` preset does set `markdown.gfm: { taskListItem: true, footnoteDefinition: true }` by default, so GFM task lists and footnotes render for real instead of as literal `[ ]` / `[^1]` text.

:::