Featured image of post Hugo Theme Comparison & GitHub Pages Setup Guide

Hugo Theme Comparison & GitHub Pages Setup Guide

A deep dive into Hugo blog themes — comparing PaperMod and Stack against several others — plus a practical guide to deploying a Hugo blog on GitHub Pages.

Overview

I did a thorough comparison of Hugo blog themes while planning a blog refresh, settling on GitHub Pages as the deployment target. PaperMod and Stack got the most attention, but I surveyed over eight themes in total and mapped out the full setup workflow for Hugo + GitHub Pages.

Hugo Theme Comparison

I explored a range of themes at themes.gohugo.io.

hugo-PaperMod | 13,100+ stars | 3,300+ forks

PaperMod is the most popular theme in the Hugo ecosystem. It bills itself as “Fast, Clean, Responsive” and runs on pure Hugo features — no webpack or Node.js dependencies.

Key features:

  • Three layout modes: Regular, Home-Info, and Profile
  • Client-side search powered by Fuse.js
  • Multilingual support and SEO optimization
  • Automatic light/dark theme switching
  • Code block copy button, auto-generated table of contents
  • Breadcrumb navigation

Notable recent changes:

  • llms.txt support added — an emerging standard that lets LLMs efficiently index blog content
  • Theme detection logic refactored into head.html for faster script execution

Live demo | Installation guide

Stack — Card-Style Blogger Theme

hugo-theme-stack | 6,200+ stars | 1,900+ forks

Stack is a card-style layout theme built specifically for bloggers. It’s the right choice when you want a visually rich blog.

Notable recent changes:

  • Markdown Alert support (GitHub-style > [!NOTE], > [!WARNING], etc.)
  • Generic taxonomy widget refactored for better extensibility
  • Custom canonical URL configuration added
  • Expanded i18n support

Live demo | Documentation

Theme Comparison Summary

ThemeStarsCharacterBest For
PaperMod13.1KMinimal, fast, SEO-optimizedTech blogs, portfolios
Stack6.2KCard UI, visually richGeneral blogs, photo blogs
Coder-Extremely minimalDeveloper portfolios
Book-Docs with sidebarTechnical documentation sites
Docsy-Google-backed, large-scaleCorporate technical docs
Terminal-Retro terminal styleDeveloper blogs with personality
Blox-Tailwind-Tailwind CSS-basedModern design blogs
Compose-Clean, multi-purposeGeneral-purpose blogs

Hugo + GitHub Pages Setup Guide

I used Integerous’s guide as a reference for the setup workflow.

Why Hugo?

Jekyll  — Ruby-based, most popular, good Korean docs, slow builds
Hexo    — Node.js-based, strong Chinese community, slow development activity
Hugo    — Go-based, fastest builds, well-documented, fewer Korean references

Hugo wins on build speed with no runtime dependencies, and its documentation is excellent.

The Build Flow

Key Points

1. Two repositories

  • blog — Hugo source files
  • username.github.io — the built static site for deployment

2. Always use git submodules for themes

# Submodule is recommended over cloning
git submodule add https://github.com/theme/repo.git themes/theme-name

This makes it easy to pull theme updates and you won’t lose the theme if your environment changes. Best practice is to fork the theme repo first, then add your fork as the submodule.

3. Automate deployment with deploy.sh A single shell script handles build → commit/push public/ → commit/push source.

4. Utterances for comments A comment system built on the GitHub Issues API. Readers can comment using their GitHub account — no separate server required.

Insights

When choosing a Hugo theme, the most important factor isn’t “does it look great right now” — it’s “is the community active, and is the project being maintained?” PaperMod’s llms.txt support is a good example: active projects evolve with the times. The submodule pattern for managing themes isn’t Hugo-specific either — it’s a broadly applicable approach for safely integrating external dependencies into any project.

Built with Hugo
Theme Stack designed by Jimmy