Skip to content

Migration Guide

Moving from MkDocs/Material to DocsForge is straightforward for most sites. This guide covers what migrates easily and what requires effort.

Easy to Migrate (Zero/Low Effort)

FeatureStatusNotes
Markdown content✅ DirectAll .md files work as-is
Navigation (nav)✅ Directnav: section copies over directly
Theme settings✅ DirectColors, fonts, logos, favicons
Extra CSS/JS✅ Directextra_css, extra_javascript
Markdown extensions✅ Directadmonition, pymdownx, etc.
Search✅ DirectBuilt-in, no config needed
Tags✅ Directtags: plugin built-in
Git revision info✅ DirectGit dates displayed automatically
PWA / Service Worker✅ DirectBuilt-in, auto-generated
Sitemap✅ DirectAuto-generated

Requires Some Effort

FeatureStatusMigration Path
Custom hooks⚠️ AdaptRewrite as DocsForge plugins or use hooks: if compatible
Custom plugins⚠️ AdaptCheck if DocsForge has equivalent; otherwise rewrite
Custom templates⚠️ AdaptTemplate paths differ; check docsforge/templates/
Insiders features⚠️ AdaptMany are included in DocsForge; check feature parity
Privacy plugin⚠️ Built-inDocsForge includes privacy features by default
Optimize plugin⚠️ Built-inAsset optimization runs automatically post-build

Requires Significant Effort

FeatureStatusNotes
Post-build scripts🔧 CustomNode.js/Python scripts that modify built HTML need porting
Deep MkDocs internals🔧 CustomPlugins that monkey-patch MkDocs classes
Custom extensions🔧 CustomPython markdown extensions with MkDocs-specific logic

OI Wiki Specific Migration Notes

OI Wiki uses several advanced features. Here's how each maps:

OI Wiki FeatureDocsForge EquivalentEffort
hooks/on_env.py (nav_math filter)Custom plugin or hookMedium
toggle-sidebar pluginTheme customizationLow
document-offsets-injection extensionBuilt-in or custom pluginMedium
extra: disqusDisqus integration (manual)Low
extra: pagetimeBuilt-in git date displayNone
_static/css/extra.cssextra_css — direct copyNone
_static/js/math-csr.jsextra_javascript — direct copyNone
MathJax external CDNBuilt-in KaTeX or MathJaxLow
Post-build Node scriptsCustom build pipelineHigh

Estimated Migration Effort

  • Basic content + styling: < 1 hour
  • Custom hooks + extensions: 2–4 hours
  • Post-build pipeline: 4–8 hours
  • Full OI Wiki migration: ~1–2 days for a developer familiar with both systems

Feature Parity: Material vs DocsForge

FeatureMaterialDocsForge
Material theme✅ (included)
Search✅ (built-in)
Tags✅ (built-in)
Social cards✅ (Insiders)❌ Not built-in
Blog✅ (Insiders)✅ (built-in)
Privacy plugin✅ (Insiders)✅ (built-in)
Optimize plugin✅ (Insiders)✅ (auto post-build)
PWA / Offline✅ (Insiders)✅ (built-in)
Git revision dates✅ (plugin)✅ (built-in)
Minification✅ (Insiders)✅ (auto)
Built-in icons✅ (58MB bundled)
Instant navigation
Custom admonitions
Mermaid diagrams✅ (plugin)✅ (built-in)
Code annotations✅ (Insiders)✅ (built-in)
Content tabs
Data tables
Tooltips

Step-by-Step Migration

1. Backup Your Site

cp mkdocs.yml mkdocs.yml.bak
git add -A && git commit -m "backup before docsforge migration"

2. Create docsforge.yml

Copy your mkdocs.yml to docsforge.yml. Most settings work directly:

site_name: Your Site
site_url: https://yourdomain.com
copyright: Copyright © 2025

nav:
  - Home: index.md
  # ... copy your nav structure

# Theme settings work as-is
theme:
  name: material
  palette:
    - media: "(prefers-color-scheme: light)"
      scheme: default
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-7
        name: Switch to dark mode
    - media: "(prefers-color-scheme: dark)"
      scheme: slate
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-4
        name: Switch to light mode

# Extra CSS/JS copy directly
extra_css:
  - stylesheets/extra.css
extra_javascript:
  - javascripts/extra.js

# Markdown extensions copy directly
markdown_extensions:
  - admonition
  - pymdownx.superfences
  - pymdownx.tabbed:
      alternate_style: true
  # ... etc

plugins:
  - tags
  - search
  # - blog        # built-in, customize only if needed

3. Convert Config Keys

DocsForge uses docsforge.yml with the same schema as mkdocs.yml. Replace these keys:

MkDocsDocsForge
mkdocs.ymldocsforge.yml
site_dirsite_dir (same)
docs_dirdocs_dir (same)
pluginsplugins (same)

4. Install DocsForge

pip install docsforge

5. Build and Test

cd your-project
docsforge build
# Check site/ directory
docsforge serve

6. Deploy

DocsForge outputs static HTML to site/ — deploy to any static host. See Deployment Guide for platform-specific instructions.

Troubleshooting

IssueCauseFix
plugin not foundPlugin not in DocsForgeCheck feature parity or install separately
theme not foundMaterial theme pathDocsForge bundles Material; use name: material
Custom hook failsMkDocs API differencesUpdate hook to use DocsForge APIs
CSS/JS not loadingPath resolutionCheck paths relative to docs_dir
Search not workingMissing indexEnsure search plugin is in plugins:

Getting Help