Migration Guides

Migrate to Bengal from other static site generators

2 min read 372 words
Edit this page

Was this page helpful?

Move from Hugo, Jekyll, MkDocs, Sphinx, Docusaurus, Mintlify, or Fern without restarting from scratch.

Note

Do I need this? Yes when you have an existing site on another SSG. Start with the guide for your current platform below. For a greenfield site, use Get Started instead.

All migrations share the same high-level flow — install Bengal, copy content, convert syntax, update config, then verify withbengal buildand bengal check.

Common Migration Steps

  1. Install Bengalpip install bengal or uv add bengal
  2. Create a new sitebengal new site mysite
  3. Copy content — transfer markdown files tocontent/
  4. Convert syntax — replace platform-specific syntax with Bengal directives
  5. Update configuration — convert config files tobengal.toml and config/
  6. Test and verify — runbengal build and bengal check

Universal Conversions

Most platforms use similar concepts that map to Bengal directives:

Source Syntax Bengal Directive Common Use Case
Shortcodes/Components :::{directive} Callouts, tabs, cards
Code highlighting ```lang Code blocks
Includes :::{include} Reusable content
Frontmatter YAML frontmatter Page metadata

What Stays the Same

  • Markdown files — content transfers directly
  • YAML frontmatter — compatible format
  • Directory structurecontent/works similarly
  • Static output — all generators produce static HTML

What Changes

  • Template syntax — platform template language → Kida
  • Component syntax — platform components → Bengal directives
  • Configuration — platform config →bengal.toml / config/
  • Build process — platform CLI →bengal build

Tip

Not sure which guide to follow? Pick your current platform. If you use a custom setup, start with the guide closest to your syntax (Hugo for shortcodes, Docusaurus for MDX components, Sphinx for RST directives).

Platform-Specific Guides

Troubleshooting Migrations

Template variables not working?

  • Check the template variable mapping in your platform's guide
  • Hugo:{{ .Params.x }}{{ page.metadata.x }}
  • Jekyll:{{ page.custom }}{{ page.metadata.custom }}

Directives not rendering?

  • Use triple colons::::{note} not :::note
  • Directive names are case-sensitive
  • See Directives Reference for the full list

Configuration errors?

Links broken after migration?

  • Runbengal checkto find broken links
  • Update relative paths if directory structure changed
  • Ensure asset paths use the correct prefix for your theme

In This Section

From Docusaurus/MDX Onboarding guide for Docusaurus and MDX users migrating to Bengal
From Fern Onboarding guide for Fern Docs users migrating to Bengal
From Hugo Onboarding guide for Hugo users migrating to Bengal
From Jekyll Onboarding guide for Jekyll users migrating to Bengal
From Mintlify Onboarding guide for Mintlify users migrating to Bengal
From MkDocs Onboarding guide for MkDocs and Material for MkDocs users migrating to Bengal
From Sphinx/RST Onboarding guide for Sphinx and reStructuredText users migrating to Bengal
Related Pages