← Alternatives

Keep the Markdown. Give the reference a home beside it.

Sourcey vs Material for MkDocs

Material made good-looking documentation accessible to a lot of projects. Sourcey offers another route, with its own themes, an importer for MkDocs content, and direct inputs for API and code reference.

What sourcey produces

A technical spec can look this good.

MailSchema specification in Sourcey’s reader theme, with chapter navigation and a table of contents

The MailSchema specification uses Sourcey’s reader theme through its Astro integration. Project fonts, colour, and CSS give the document its own identity; the chapter layout comes from Sourcey.

Read the MailSchema specification →

Comparison

Import the content; audit the build behaviour.

Sourcey’s one-time migration reads a MkDocs configuration for its pages and navigation. It does not run the Python plugins that may be producing part of your current site.

Material for MkDocs compared with sourcey, feature by feature
FeatureMaterial for MkDocssourcey
ContentMarkdownNative Markdown after migration
Navigationmkdocs.ymlMigrated once to native config
PresentationMaterial theme and extensionsSourcey themes and CSS
Python API referencemkdocstrings handlersNo Python autodoc built in
OpenAPI / C++ / Go / RustPlugins or extra generationBuilt-in adapters
Python pluginsRun during the buildNot executed
JavaScriptSearch and theme behaviourSearch and navigation behaviour
HostingYour static hostYour static host
Tradeoffs

Check what the configuration is really doing.

  1. 01

    The maintenance picture has changed

    As of 16 October 2026, Material for MkDocs is in maintenance mode. Its maintainers list 5 May 2027 as the end of upstream maintenance and point to Zensical as their successor. Include that option in your evaluation. Existing pages do not suddenly stop working, but the next build tool should be a deliberate choice.

    Material for MkDocs’ maintenance notice and changelog

  2. 02

    The importer is useful, with a clear boundary

    Sourcey’s one-time migration reads docs_dir and nav from mkdocs.yml, collects local assets, and converts supported admonitions, tabs, and local snippet includes. Later builds use native Sourcey files. It does not execute the plugins or Python Markdown extensions listed in that file. Pages produced by macros, API handlers, or custom plugins need their own migration plan.

    Sourcey’s migration workflow

  3. 03

    Python reference may belong with mkdocstrings

    Mkdocstrings has a handler-based system for generating reference, including Python documentation. If that is the centre of your site, Sourcey is not a like-for-like replacement. Its reference adapters cover different inputs. Test the actual packages you document before deciding that reducing the toolchain will reduce the work.

    Mkdocstrings’ handlers and reference generation

  4. 04

    Try the design on a long page

    Sourcey’s reader theme is built for pages people spend time reading. MailSchema shows it on a technical specification, with project branding and chapter navigation. Your existing Markdown gives you a quick way to compare layouts. Look at tables, nested lists, code, and the mobile page as well as the title screen.

    MailSchema’s specification in the reader theme

Migration

Preview the migration before applying it.

Keep the current build available so you can compare content and catch anything a plugin used to generate.

  1. 01

    Inventory plugins and extensions

    Read mkdocs.yml and the build script. List macros, generated pages, API reference handlers, custom hooks, and remote content. Check whether those produce source files Sourcey can read or depend on MkDocs execution.

  2. 02

    Convert to a native Sourcey project

    Run npx sourcey migrate mkdocs --dry-run, review the report, then run npx sourcey migrate mkdocs. This native config expects introduction.md and quickstart.md beside it, with an OpenAPI adapter for reference. Keep a copy of the original files while trying it. Remove the API tab if your project has no OpenAPI spec.

    import { defineConfig, markdown, openapi } from "sourcey";
    
    export default defineConfig({
      name: "My project",
      navigation: {
        tabs: [
          { tab: "Guides", slug: "", source: markdown({ groups: [{ group: "Start here", pages: ["introduction", "quickstart"] }] }) },
          { tab: "API", slug: "api", source: openapi("./openapi.yaml") },
        ],
      },
    });
  3. 03

    Check imported meaning, not just page count

    Inspect admonitions, tabs, snippet includes, image paths, and nested navigation. Look for literal plugin syntax left in the page and content that was present in the old build but is now absent.

  4. 04

    Compare the available migration routes

    Try Sourcey and, where relevant, the maintainer’s Zensical migration path using the same content. Include reference generation, custom plugins, search, URLs, and design in the comparison before replacing the current build.

FAQ

Common questions.

Will Sourcey execute my MkDocs plugins?

No. The one-time migration converts supported content and navigation to native Sourcey files. Later builds do not read mkdocs.yml. Python plugins, macros, and extension-generated pages need review and a replacement where necessary.

Are Material’s Insiders features still behind sponsorship?

The Material maintainers released the former Insiders features in version 9.7.0 and ended that model. A comparison based on a current Insiders paywall would be misleading. The more relevant question now is the maintenance and migration plan.

Should I move to Sourcey or Zensical?

Try Zensical when continuity with the Material ecosystem is the priority. Try Sourcey when you want its layouts and reference inputs alongside your Markdown. In either case, test the plugins and generated content your site actually uses; configuration import is not proof of full compatibility.