Henry is a Hugo theme built to deliver a gorgeous reading experience, packed with features for bloggers and static site creators. It runs on the Hugo static site generator, uses Tailwind CSS for styling, and is released under the MIT License by Kaushik Gopal.
What is Henry?
Henry is a Hugo theme that transforms Markdown content into a static blog with a focus on typography and readability. It takes Hugo content files as input and produces a fully styled website with features like automatic table of contents, configurable RSS and JSON feeds, and related-post suggestions. The theme is designed to be simple to install and customize, with a Makefile included to streamline the workflow.
Key Features
- Gorgeous reading experience — Typography-driven design using the IBM Plex and Recursive font families, with a responsive layout that adapts to mobile and desktop screens.
- Table of contents — Automatically generated on single pages containing H1–H3 headings; can be disabled site-wide via config or per page with frontmatter, and requires Hugo 0.111.0 or newer.
- RSS and JSON feed customization — Configure output formats for home, sections, and terms; rename feed paths to /feed.xml and /feed.json by setting the baseName in hugo.toml.
- Related posts — Built-in Hugo related-content module with configurable weights for tags (weight 80), categories (weight 20), and title (weight 10).
- Tailwind CSS styling — Uses Tailwind CSS with the @tailwindcss/cli tool; you copy the theme's input.css to your assets folder and compile it to output.css.
- Makefile convenience — Ships a Makefile that wraps setup and server commands, so you can run the blog with a single
make command and view it at http://0.0.0.0:1313/.
- Sample content included — The theme's content folder contains example posts; simply mark them from draft true to false to see them live.
- Open source and community-friendly — Licensed under MIT, with bug reports and pull requests welcomed on GitHub, and a Contributor Covenant code of conduct.
Who is it for?
- Bloggers — Individuals who want a Hugo-based blog with a clean, reading-focused layout and built-in SEO-friendly features like table of contents and RSS.
- Developers — Developers who prefer the Hugo static site generator and want a Tailwind CSS-based theme that they can customize using modern front-end tooling and a Makefile.
- Personal site owners — Anyone building a personal website or portfolio where typography and content presentation matter more than complex page builders.
What can you do with Henry?
- Publish a static blog — Write posts in Markdown and generate a fast, static site deployable to any hosting service, including GitHub Pages (as indicated in the repository topics).
- Customize content delivery — Adjust RSS and JSON output formats to control how your content is syndicated, and tune related-post settings to keep readers engaged.
- Rapid local development — Use the included Makefile to start the Hugo development server with a single command, making iteration on content and design fast.
How does Henry work?
Henry works as a standard Hugo theme: after installing Hugo, you clone the theme into the themes directory, copy the Tailwind input CSS, install npm dependencies, and configure the hugo.toml file with theme = "henry". The included Makefile automates these steps, and running make starts a local server at port 1313.
Pros and cons
- Pros: Free under MIT license; feature-rich out of the box; easy setup with Makefile; uses modern Tailwind CSS tooling; includes sample content.
- Cons: Requires Node.js and npm to compile Tailwind CSS, which adds a build step beyond a pure Hugo theme.
FAQ
Is Henry free?
Yes, Henry is open source under the MIT License, so you can use, modify, and redistribute it freely, including for commercial projects.
What Hugo version do I need?
The table of contents feature requires Hugo 0.111.0 or newer. Other features may work with earlier versions, but the stated requirement for full functionality is at least 0.111.0.
Does Henry include sample content?
Yes, the theme comes with sample posts stored in the themes/henry/content folder. To see them, change their frontmatter draft status from true to false and rebuild the site.
You can set the baseName to "feed" in the RSS output format definition in hugo.toml, which changes the default XML path from index.xml to /feed.xml. Similar settings apply for JSON feeds.
Can I disable the table of contents?
Yes, set enableTableOfContents to false under params in your hugo.toml to disable it site-wide, or use toc: false in a page's frontmatter for per-page control. Pages with type or layout "short" or "shorts" never display a table of contents.
