
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
mkdocs-material-extensions
Advanced tools
NOTE: This project is now deprecated as MkDocs for Material now implements this logic directly. Users should migrate to using
mkdocs-material'smaterial.extensions.emoji.twemojiandmaterial.extensions.emoji.to_svgin place of the respectivematerialx.emoji.twemojiandmaterialx.emoji.to_svgfunctions provided by this library.
Markdown extension resources for MkDocs for Material
Generally, just installing MkDocs Material will automatically install mkdocs-material-extensions. But if you had a
need to manually install it, you can use pip.
pip install mkdocs-material-extensions
But make sure you've also installed MkDocs Material as well as this won't work without it.
pip install mkdocs-material
MkDocs Material provides numerous icons from Material, FontAwesome, and Octicons, but it does so by inlining the SVG icons into the source. Currently there is no easy way access these icons and arbitrarily insert them into Markdown content. Users must include the icon fonts themselves and do it with HTML.
This module allows you to use PyMdown Extensions' Emoji extension to enable easy insertion of MkDocs Material's
SVG assets using simple :emoji-syntax:. This is done by creating our own emoji index and
emoji generator. The custom index provides a modified version of the Emoji extensions Twemoji
index.
In addition to the custom index, you must also specify the associated custom generator. This will will find the appropriate icon and insert it into your Markdown content as an inlined SVG.
Example:
markdown_extensions:
- pymdownx.emoji:
emoji_index: !!python/name:materialx.emoji.twemoji
emoji_generator: !!python/name:materialx.emoji.to_svg
Then, using the folder structure of Material's .icons folder, you can specify icons:
We can use Material Icons :material-airplane:.
We can also use Fontawesome Icons :fontawesome-solid-ambulance:.
That's not all, we can also use Octicons :octicons-octoface:.
In MkDocs, you can override theme assets locally, and even add assets to the theme. Unfortunately, the Markdown parsing
process isn't aware of the MkDocs environment. Luckily, if you are using PyMdown Extensions 7.1, you can pass in custom
icon paths that will be used when constructing the emoji index and include your custom SVG assets. If a folder path of
theme/my_icons was given to the index builder, all icons under my_project/my_icons, even in sub-folders, would
become part of the index.
markdown_extensions:
- pymdownx.emoji:
emoji_index: !!python/name:materialx.emoji.twemoji
emoji_generator: !!python/name:materialx.emoji.to_svg
options:
custom_icons:
- theme/my_icons
If given an icon at my_project/my_icons/animals/bird.svg, the icon would be available using the emoji syntax as
:animals-bird:. Notice that the base folder that is provided doesn't contribute to the icon's name. Also, folders
are separated with -. Folder names and icon names should be compatible with the emoji syntax, so special characters
should be avoided -- - and _ are okay.
You can provide as many paths as you would like, and they will be evaluated in the order that they are specified. The Material theme's own icons will be evaluated after all custom paths. This allows a user to override Material's icons if desired.
If an icon name is already in the index, the icon will not be added. It is recommended to always have your icons in
sub-folders to help namespace them to avoid name collisions. In the example above, bird was under animals which
created the name :animals-bird: and helped create a more unique name with less of a chance of creating a duplicate
name with existing emoji and Material icons.
FAQs
Extension pack for Python Markdown and MkDocs Material.
We found that mkdocs-material-extensions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.