hugo-theme-pure is a Hugo port of the hexo-theme-pure blog theme, delivering a clean, content-focused blog layout with five configurable color schemes. It runs on the Hugo static site generator, accepts Markdown posts from the posts directory (or any directory you set), and outputs a static blog with table of contents, pagination, MathJax rendering, and bilingual i18n.
What is hugo-theme-pure?
hugo-theme-pure is a Hugo theme created by xiaoheiAh as a port of the popular hexo-theme-pure, licensed under the MIT License. It transforms Markdown content placed under content/posts into a blog with archive, tags, categories, and custom menu sections. The theme is configured through a YAML file; the repository provides an exampleSite/config.yml that you copy to your Hugo root and adjust.
Key Features
- Five color skins — choose between grey, black, blue, green, and purple presets; the repository's screenshot section demonstrates each scheme.
- MathJax support — enabled through an accepted pull request and documented with Hugo's MathJax guide; write LaTeX block equations between double dollar signs.
- TOC powered by tocbot — a table of contents can be enabled per site via the
config.tocsetting, using the tocbot library for smooth scrolling. - Pagination — built-in support for splitting the post list across multiple pages, configurable from the site config.
- Multilingual (i18n) — ships with
en.ymlandzh.ymlunderpure/i18n; setdefaultContentLanguageto switch, or add a new language by copying an existing locale file. - Custom menu icons — the
menuIconsblock maps home, archives, categories, tags, repository, books, links, and about entries to Iconfont icon classes. - Highlight shortcode — supports basic Hugo highlight usage with a language name; advanced options like line numbers are not supported and render poorly.
- Minified assets — the theme minifies CSS and JS for production, as noted in the 2019-12-31 changelog.
mainSectionsparameter — lets you specify which content directory to render (defaults toposts) instead of hard-coding the path.
Who should use hugo-theme-pure?
- Hugo bloggers — anyone who wants a simple, clean blog with minimal configuration and a built-in color switcher.
- Developers migrating from Hexo — because the theme is a direct port of hexo-theme-pure, the directory structure and look will feel familiar.
- Backend-focused writers — the author explicitly states he built it to avoid deep front-end work, so configuration stays in YAML and posts are plain Markdown.
- Technical authors — MathJax integration makes it suitable for publishing math-heavy content such as notes or tutorials.
Use cases
- Personal blogging: clone the repo into
themes/pure, copyexampleSite/config.yml, and runhugo server -t pureto get a working blog with TOC and pagination. - Math-rich documentation: write LaTeX equations in posts and render them through MathJax, using the documented formula syntax.
- Bilingual publishing: run a site under
defaultContentLanguage: zhorenwithout extra tooling, since both locale files are bundled.
FAQ
Is hugo-theme-pure free?
Yes, it is released under the MIT License, so you can use, modify, and redistribute it freely, including for commercial projects.
How do I install hugo-theme-pure?
Run git clone https://github.com/xiaoheiAh/hugo-theme-pure themes/pure from your Hugo root, then copy exampleSite/config.yml to the root and start the server with hugo server -t pure.
Does hugo-theme-pure support languages other than English and Chinese?
It includes English and Chinese out of the box. To add another language, copy either en.yml or zh.yml in pure/i18n, rename it to the new language code, and translate the strings.
How do I change the color scheme?
The theme offers five predefined skins named grey, black, blue, green, and purple. You select one through the theme configuration; each skin is shown in the repository's screenshot section.
Does the theme support MathJax?
Yes, MathJax was added on 2019-11-19 and works with inline and block LaTeX. For block equations, use double dollar signs; the theme follows Hugo's MathJax-with-Hugo documentation.





