# \[ANN\] MaterialDocs.jl - A Documenter.jl writer plugin that generates Material Design 3 documentation sites

**URL:** <https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581>\
**Category:** Package Announcements\
**Tags:** documentation, documenter\
**Created:** [September 21, 2026, 4:37pm UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581 "2026-09-21T16:37:17Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mthelm85](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mthelm85/32/224164_2.png) [@mthelm85](https://discourse.julialang.org/u/mthelm85)\
**Post date:** [September 21, 2026, 4:37pm UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/1 "2026-09-21T16:37:17Z")

</div>

Hello! [MaterialDocs.jl](https://github.com/mthelm85/MaterialDocs.jl) is a Documenter.jl writer for folks who want a modern docs site, but don’t want to change how their docs are built or deployed. Simply add it to your `docs` environment, replace `Documenter.HTML(...)` in `docs/make.jl` with `Material3(...)`, and it just works:

```julia
using Documenter, MaterialDocs, MyPackage

makedocs(
    sitename = "MyPackage.jl",
    modules = [MyPackage],
    format = Material3(theme = :ocean_depth, dark_mode = :toggle),
)

deploydocs(repo = "github.com/you/MyPackage.jl")

```

Check out the docs [here](https://mthelm85.github.io/MaterialDocs.jl/stable/) to see what a MaterialDocs.jl docs site looks like.

As the name suggests, it leverages [Material Design 3](https://m3.material.io/) principles, Google’s open source design system. Every color on the site (all 34 MD3 roles in light and dark, as well as the syntax highlighting) is generated from one seed color, placed at tones chosen for WCAG AA contrast. It comes with twelve built-in themes, but building your own from a single seed color is quick and easy with `MaterialDocs.editor()`, which rebuilds your docs, serves them locally and injects an editor panel that you can use to tweak the appearance of your pages. From there, just save the theme to `docs/.materialdocs.toml` where it will be picked up automatically, or use `ThemeConfig()` with your preferred options.

Please feel free to open issues/PRs or just provide feedback. Also note that the amazing DocumenterVitepress.jl package offers a lot of features that MaterialDocs.jl currently does not - the primary advantage to MaterialDocs.jl is that it is more of a drop-in replacement. It keeps every `Documenter.HTML` keyword argument, leaves `deploydocs` untouched, and there’s no Node.js in the loop.

---

<div class="post-metadata">

**Author:** ![dcelisgarza](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dcelisgarza/32/215951_2.png) [@dcelisgarza](https://discourse.julialang.org/u/dcelisgarza)\
**Post date:** [September 22, 2026, 9:13am UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/2 "2026-09-22T09:13:19Z")

</div>

Looks awesome. Do you know how it interplays with DocumenterCodeBlocks.jl and DocumenterLandingPage.jl?

---

<div class="post-metadata">

**Author:** ![scelles](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scelles/32/220408_2.png) [@scelles](https://discourse.julialang.org/u/scelles)\
**Post date:** [September 22, 2026, 9:32am UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/3 "2026-09-22T09:32:24Z")

</div>

Nice looking.  
Maybe you should add link to doc here also

 ![image](https://global.discourse-cdn.com/julialang/original/3X/8/b/8bf4bc393caf1c8d48584059ffd32d7e53b59a47.png)

---

<div class="post-metadata">

**Author:** ![mthelm85](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mthelm85/32/224164_2.png) [@mthelm85](https://discourse.julialang.org/u/mthelm85)\
**Post date:** [September 22, 2026, 1:40pm UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/4 "2026-09-22T13:40:43Z")

</div>

> [@dcelisgarza](#):
>
> Looks awesome. Do you know how it interplays with [DocumenterCodeBlocks.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/DocumenterCodeBlocks) and [DocumenterLandingPage.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/DocumenterLandingPage)?

Thanks! Neither are supported right now. It looks like DocumenterLandingPage.jl would be the easier of the two to add support for, so I’ll take a look!

---

<div class="post-metadata">

**Author:** ![csvance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csvance/32/218927_2.png) [@csvance](https://discourse.julialang.org/u/csvance)\
**Post date:** [September 22, 2026, 3:28pm UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/5 "2026-09-22T15:28:44Z")

</div>

> [@mthelm85](#):
>
> It looks like [DocumenterLandingPage.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/DocumenterLandingPage) would be the easier of the two to add support for, so I’ll take a look!

MaterialDocs.jl looks great! I’m looking into whether it’s possible to support it as is via an extension in DocumenterLandingPage.jl.

EDIT:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/a/b/abde505278a21e2435495567284e27e94b4944df.png)

Before I ship a release I will open an issue about the extension based approach I’m using + stylesheet mapping if you could check over it and make sure It’s something that will be relatively stable going forward.

---

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [September 22, 2026, 4:01pm UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/6 "2026-09-22T16:01:03Z")

</div>

looks fantastic, and the infrastructure around themeing is incredible. Themeing the default documenter output has been a long and difficult process, that was never formalised in such a way. I am genuinely interested to try it out!!!

---

<div class="post-metadata">

**Author:** ![mthelm85](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mthelm85/32/224164_2.png) [@mthelm85](https://discourse.julialang.org/u/mthelm85)\
**Post date:** [September 22, 2026, 4:30pm UTC](https://discourse.julialang.org/t/ann-materialdocs-jl-a-documenter-jl-writer-plugin-that-generates-material-design-3-documentation-sites/139581/7 "2026-09-22T16:30:37Z")

</div>

Thank you - my entire motivation for building this actually resulted from becoming exhausted while recently trying to customize the default documenter output. I found it a real pain and I couldn’t ever get it to look exactly like I wanted it to. After several hours of hopelessly adding `!important` CSS styles, I decided a new package would be less effort 😆
