Skip to content

Material for MkDocs Feature Showcase

Kitchen sink documentation — Every feature, pattern, and capability of the Material theme ecosystem. Use this as reference for what's possible, copy/paste examples, or generate new documentation.

Last Updated: 2026-03-22 | Theme: Material 9.7.1


Theme Features Overview

This site uses Material for MkDocs 9.7.1 with all major features enabled. Below is the complete reference.

# Automatic with Material
- Pages load without full refresh
- URL updates smoothly
- Preserves scroll position
- Prefetches linked pages on hover

When enabled, navigation behaves like a single-page application. Click links and the page transitions smoothly without reloading. Enabled via navigation.instant.loading and navigation.instant.prefetch in mkdocs.yml.

Enabled via navigation.breadcrumbs feature. Shows the path:

Home > Awesome > Showcase

Helps users understand location and navigate backwards.

Sections are collapsible/expandable. With navigation.expand, all sections expand by default. Try collapsing the left sidebar sections.

The right sidebar shows page sections with toc.follow — it highlights the current section as you scroll.


Typography & Colors

Headings

Heading 1 — Page title

Heading 2 — Major section

Heading 3 — Subsection

Heading 4 — Sub-subsection

Heading 5 — Minor heading
Heading 6 — Smallest heading

Text Formatting

This is bold text and this is italic text. You can also use bold italic.

Strikethrough text is supported. Inline code looks like this with syntax highlighting.

Superscript: H2O Subscript: H2O

Lists

Unordered lists:

  • Item 1
  • Item 2
  • Nested item 2a
  • Nested item 2b
  • Item 3

Ordered lists:

  1. First step
  2. Second step
  3. Sub-step 2.1
  4. Sub-step 2.2
  5. Third step

Definition lists:

Term
Definition of the term goes here. Can be multiple lines.
Another term
Explanation of another term.

Task lists:

  • Completed task
  • Incomplete task
  • Another completed task

Code Blocks & Syntax Highlighting

Basic Code Block

# Install dependencies
source venv/bin/activate
pip install -r requirements.txt

# Run server
mkdocs serve

Python with Annotations

import requests  # (1)!

def fetch_api(url: str) -> dict:  # (2)!
    """Fetch data from API."""
    response = requests.get(url)
    return response.json()  # (3)!

data = fetch_api("https://api.example.com/data")  # (4)!
  1. Import the requests library
  2. Type hints for clarity
  3. Return parsed JSON
  4. Call the function

Code with Line Numbers

Enable globally in mkdocs.yml with linenums: true, or per-block with linenums="1":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# mkdocs.yml — Material theme config
site_name: Documentation
theme:
  name: material
  features:
    - navigation.instant.loading
    - search.suggest
plugins:
  - search
  - minify

Multiple Languages Tabbed

curl -X GET https://api.example.com/users
import requests
response = requests.get("https://api.example.com/users")
users = response.json()
const response = await fetch("https://api.example.com/users");
const users = await response.json();
resp, err := http.Get("https://api.example.com/users")
defer resp.Body.Close()
data := json.NewDecoder(resp.Body)

Inline Code

Use backticks for inline code. For highlighting within text: python, bash, yaml.


Admonitions

Admonitions draw attention to important information. Eleven types available:

Note

This is a note. Use for additional information that doesn't fit elsewhere.

Abstract

Short summary or overview of the section. Good for TL;DR sections.

Info

General informational content. Similar to note but slightly different tone.

Tip

Helpful advice or best practice. How to do something better.

Success

Positive outcome, successful operation, or confirmation.

Warning

Caution required. Potential issues or things to watch out for.

Danger

Critical warning. Do NOT do this or serious consequences may occur.

Bug

Known issue or limitation. Workaround may be available.

Example

Code example or usage demonstration.

Question

FAQ entry or common question.

Quote

Quote from external source.

Collapsible Admonitions

Click to expand

This note is collapsible. Click the header to expand/collapse.

Expandable warning

This warning starts closed. Great for side notes that might clutter the page.

Nested collapsible with admonition

You can nest admonitions inside collapsibles.

Bug inside collapsible

This bug is inside a collapsible admonition.


Tables

Feature Material Docusaurus Jekyll Status
Setup Time 5 min 15 min 20 min
Customization Excellent Excellent Good
Performance Fast Fast :fontawesome-solid-snail: Slow
Learning Curve Easy Moderate Easy

Table with alignment:

Left Center Right
Aligned left Centered Aligned right
Git is Version Control

Data Table from Markdown

| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell     | Cell     | Cell     |

Icons & Emojis

FontAwesome Icons

Solid icons:

Brand icons:

Regular icons:

Icon Collections

Category Icons
Development
Deployment
Security
Status

Visit https://github.com/cosckoya/cosckoya.github.io or check out https://squidfunk.github.io/mkdocs-material/ for more.

This text has a footnote1.

Another footnote reference2 in the text.


Images

Basic Image

Material for MkDocs

Image with Caption

Architecture diagram

This is a caption below the image.

Image Alignment

Left aligned:

Left

Lorem ipsum dolor sit amet, consectetur adipiscing elit. The image floats to the left with text wrapping around it.

Right aligned:

Right

Lorem ipsum dolor sit amet, consectetur adipiscing elit. The image floats to the right with text wrapping around it.

Centered (default):

Center


:fontawesome-solid-square-up: Abbreviations

The HTML specification is maintained by the W3C.

Hover over "HTML" or "W3C" to see the abbreviation tooltip.


Horizontal Rules

Text before rule.


Text after rule. Use horizontal rules to separate major sections visually.


Code Snippets & Includes

Code snippets can be included from external files or inline highlighted sections.

Inline Snippet Example

# This is inline code - copy/paste ready
def hello_world():
    print("Hello, World!")

if __name__ == "__main__":
    hello_world()

Mermaid Diagrams

Diagrams are rendered via pymdownx.superfences with mermaid support:

graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Process A]
    B -->|No| D[Process B]
    C --> E[End]
    D --> E

Class Diagram

classDiagram
    class User {
        +name: str
        +email: str
        +login()
        +logout()
    }
    class Admin {
        +permissions: list
        +approve()
    }
    User <|-- Admin

Sequence Diagram

sequenceDiagram
    participant User
    participant Browser
    participant Server
    User->>Browser: Click link
    Browser->>Server: HTTP GET /api/data
    Server-->>Browser: JSON response
    Browser-->>User: Render page

Tabs & Panels

Tabbed content with persistent state across pages:

Installation

pip install mkdocs-material
mkdocs new my-site
cd my-site

mkdocs.yml

site_name: My Site
theme:
  name: material

Deploy to GitHub Pages

mkdocs gh-deploy

Multiple Platform Tabs

Nested tabs not supported

pymdownx.tabbed does NOT support nested tabs. Tabs must be flat at the same level. Use separate tab groups if you need multiple dimensions.

Tab group 1 — By OS:

sudo apt-get install python3-pip
pip install mkdocs-material
brew install python3
pip install mkdocs-material
python -m pip install mkdocs-material
mkdocs serve

Tab group 2 — By package manager:

pip install mkdocs-material
conda install mkdocs-material
poetry add mkdocs-material

Advanced Lists

Nested Lists with Mixed Content

  • Feature 1: Description here
  • Sub-feature 1a
    • Detail 1a1
    • Detail 1a2
  • Sub-feature 1b
  • Feature 2: Another description
  • With code example:
    mkdocs serve
    
  • And some text

Lists with Admonitions

  • First item !!! note "Note about item" This is a note about the first item
  • Second item
  • Third item with warning !!! warning "Be careful" Do not skip this step

Comments & Annotations

Comments can be added using HTML comments (they won't be rendered):

Code can have inline annotations as shown in the "Code with Annotations" section above.

Keyboard Input

Press Ctrl+Alt+Del to reboot.

Use Cmd+S on Mac to save.


Text Decorations

Strikethrough text shows what was removed.

Underlined text for emphasis.

Italic for emphasis

Bold for strong emphasis

Bold italic for maximum emphasis

Mark/Highlight

This is highlighted text using mark extension.


Content Actions

Pages can have action buttons (edit/view source):

These are controlled by:

features:
  - content.action.edit
  - content.action.view

Buttons appear in the header (if configured).


Blockquotes

This is a simple blockquote. It can span multiple lines. — Author Name

This is a longer blockquote with more content.

It has multiple paragraphs and can include other elements.

  • Lists
  • Even lists!

And formatting.


Math & Formulas

Requires additional setup

Math rendering requires pymdownx.arithmatex extension plus MathJax or KaTeX JavaScript. Add to mkdocs.yml:

markdown_extensions:
  - pymdownx.arithmatex:
      generic: true
extra_javascript:
  - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js
Not enabled by default on this site — examples below are syntax references only.

Inline math syntax: $E = mc^2$

Block math syntax:

$$
\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$
$$
\begin{align}
a &= b + c \\
d &= e + f \\
g &= h + i
\end{align}
$$

Material Plugins in Action

Search is built-in via search plugin. Try the search box (top right on desktop).

  • Powered by client-side indexing
  • Supports stemming (running → run)
  • Highlights matches
  • Shares search results via URL

Tags

Pages can be tagged for organization:

Tags

This page is tagged with: material, showcase, features, markdown, theme

Minify

HTML, CSS, and JavaScript are minified for smaller file size and faster loading.

Same Directory

The same-dir plugin allows static files (CSS, JS, images) to live alongside markdown in the same directory structure.

Section Index

With section-index plugin, sections with index.md files become clickable navigation items.

Literate Navigation

Navigation is defined in SUMMARY.md files (literate navigation) for readability and maintainability.


:fontawesome-solid-browser: Responsive Design

This page is fully responsive. Try resizing your browser:

  • Desktop: Full navigation sidebar
  • Tablet: Collapsible navigation
  • Mobile: Navigation drawer

Mobile Menu

On mobile/tablet, click the hamburger menu (three lines) to toggle the navigation sidebar.

Breakpoints

Material uses these breakpoints:

  • Small (< 768px): Mobile
  • Medium (768-1216px): Tablet
  • Large (> 1216px): Desktop

Dark & Light Mode

Toggle between dark (Maleficent theme) and light (Deep Purple + Teal) modes using the button in the top right.

Color schemes are defined in mkdocs.yml:

palette:
  - scheme: slate
    primary: purple
    accent: lime
  - scheme: default
    primary: deep purple
    accent: teal

Configuration Reference

Key Theme Options

theme:
  name: material
  logo: path/to/logo.png
  favicon: path/to/favicon.png
  language: en
  direction: ltr  # or rtl for right-to-left
  palette:        # Color schemes
  features:       # Feature toggles
  icon:           # Icon configuration

Essential Features

Complete feature list as configured on this site:

features:
  # Navigation
  - navigation.sections          # Expandable/collapsible sections
  - navigation.expand            # Expand all sections by default
  - navigation.breadcrumbs       # Breadcrumb trail
  - navigation.instant.loading   # SPA-like navigation (no full reload)
  - navigation.instant.prefetch  # Prefetch pages on hover
  - navigation.instant.progress  # Loading progress indicator
  - navigation.tracking          # URL fragment updates on scroll
  - navigation.top               # Back to top button
  - navigation.indexes           # Section index pages (index.md per section)
  - navigation.footer            # Previous/next page navigation
  - navigation.path              # Show full path in navigation

  # Search
  - search.suggest               # Search auto-complete
  - search.highlight             # Highlight matches in page
  - search.share                 # Share search results via URL

  # Content
  - content.code.copy            # Copy button on code blocks
  - content.code.select          # Text selection on code blocks
  - content.code.annotate        # Inline code annotations (# (1)!)
  - content.tabs.link            # Persistent tab state across pages
  - content.tooltips             # Abbreviation tooltips
  - content.footnote.tooltips    # Footnotes as inline tooltip popovers
  - content.action.edit          # "Edit this page" button
  - content.action.view          # "View source" button

  # TOC
  - toc.follow                   # Highlight current section while scrolling

  # Header
  - header.autohide              # Auto-hide header on scroll down
  - announce.dismiss             # Dismissible announcement bar

Common Patterns

"Real Talk" Pattern

Real talk:

  • This is how real things work
  • Practical advice for production
  • What actually matters
  • Skip the marketing speak

Pro Tips & Gotchas Pattern

Pro Tips

  • Use feature X for Y reason
  • Combine with Z for best results
  • Consider edge case ABC

Gotchas

  • Don't do X (it breaks Y)
  • Watch out for Z behavior
  • This is a common mistake

Three-Tab Quick Hits Pattern

Key commands and basic usage

command --flag argument

Real-world use cases

command pattern example

Advanced usage and warnings

  • Tip 1
  • Gotcha 1

Performance Tips

1. Use Instant Loading

Already enabled. Pages load without full refresh.

2. Minify Assets

Enabled via minify plugin. HTML, CSS, JS are compressed.

3. Lazy Load Images

Use markdown image syntax with proper alt text:

![Description](image.png){ alt="Detailed description" }

4. Organize Navigation

Use SUMMARY.md for clean, maintainable navigation structure.

5. Optimize Images

  • Compress images before adding to docs
  • Use WebP format when possible
  • Set width/height attributes

6. Cache-Friendly URLs

Material generates static URLs that leverage browser caching.


Accessibility (WCAG 2.1 AA)

This site aims for WCAG 2.1 AA compliance:

  • Color contrast: 4.5:1 minimum for text
  • Keyboard navigation: Fully functional
  • Screen reader support: Semantic HTML
  • Focus indicators: Visible on all interactive elements
  • Alt text: All images have descriptions

Keyboard Shortcuts

  • S or /: Focus search (Material default)
  • Esc: Close modals / exit search
  • Tab: Navigate elements
  • Enter: Activate buttons / confirm

File Organization

docs/
├── SUMMARY.md               # Main navigation (literate-nav)
├── index.md                 # Homepage
├── showcase.md              # This file (feature reference)
├── toolbox/                 # CLI tools: asdf, kitty, neovim, tmux, zsh
│   └── SUMMARY.md
├── os/                      # Operating systems: linux, macos, windows
│   └── SUMMARY.md
├── containers/              # Docker (+ Compose), Kubernetes
│   ├── SUMMARY.md
│   └── tools/               # helm, krew, kubectx, dive, popeye
│       └── SUMMARY.md
├── databases/               # Database tooling
│   ├── SUMMARY.md
│   └── tools/               # dbcli, oracledb-cli
│       └── SUMMARY.md
├── cloud/                   # Cloud & DevOps (AWS + merged tools)
│   ├── SUMMARY.md
│   ├── aws.cloud.md
│   └── tools/               # terraform, prowler, checkov, github, azure-devops, snyk, sonarcloud, trivy
│       └── SUMMARY.md
├── api/                     # API references
│   ├── SUMMARY.md
│   └── github-rest-api.service.md
├── code/                    # Programming languages + tools
│   ├── SUMMARY.md
│   └── tools/               # gitleaks, shellcheck, etc.
│       └── SUMMARY.md
├── ai/                      # AI tools: Claude Code, Copilot, Gemini
│   ├── SUMMARY.md
│   └── tools/
│       └── SUMMARY.md
├── 1337/                    # Security / CTF content
│   └── SUMMARY.md
├── awesome/                 # Curated references
│   └── SUMMARY.md
├── templates/               # Doc generation templates
│   ├── README.md
│   ├── tech-reference.template.md
│   └── tool-reference.template.md
└── resources/
    ├── css/
    │   ├── snape.css        # Custom styling (single file, DRY)
    │   └── images.css
    └── img/
        ├── logo.png
        └── favicon.png

Validation Checklist

When creating new documentation, use this checklist:

  • Page has title and description in frontmatter
  • All links are relative paths
  • All images have alt text
  • FontAwesome icons used (no plain emojis)
  • Code blocks have language specified
  • Admonitions used appropriately
  • "Real talk" sections for practical advice
  • Pro tips separated from gotchas
  • Tags placed at bottom of page
  • mkdocs build --strict passes
  • Tone is cynical/realistic (not aspirational)

Tips for Content Creation

1. Use Templates

Start with tech-reference.template.md or tool-reference.template.md for consistency.

2. Three-Tab Structure

Essential → Common Patterns → Pro Tips & Gotchas structure works for most content.

3. Practical Examples

Copy-paste code examples that actually work. Include inline comments.

4. Honest Tone

Say "this is painful" instead of "this is challenging." Marketing-speak has no place here.

Internal links help users navigate. Use relative paths.

6. Organize with Sections

Use heading hierarchy (h2, h3, h4) to structure content logically.


Learning Resources

External Resources:

Related Topics:

  • Markdown syntax and best practices
  • Color theory and accessibility
  • Static site generation
  • Full-text search optimization

Last Updated: 2026-03-22 Tags: material, showcase, features, markdown, theme, documentation


  1. This is the footnote content. Can be multiple lines and paragraphs. 

  2. Footnotes appear at the bottom of the page and are clickable.