Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A minimal Hugo theme for writers: serif type, inlined CSS, light and dark palettes, responsive images, and no web fonts or CDN.

Apache-2.0 Astro blog theme with Markdown and MDX posts, 41 content components, local search, five comment systems, and typed config.

Minimalist, dark-first Hugo theme with Nunito typography, four palettes, a typed masthead, ⌘K client-side search and around 50 KB first paint.
austere is a minimal Hugo theme by Tom Wright (tomwrw) for people who mostly write, built around serif typography, a light and dark palette, and pages that load no stylesheet file, no web font, and nothing from a CDN.
austere is a Hugo theme — a port of the author's austere theme for Zola — that renders a writing-focused site with serif type, a light and dark palette, and inlined CSS. It takes ordinary Hugo content (Markdown files in content/posts/ or any other section, plus optional TOML parameters in hugo.toml) and outputs a site where a post is one request: the CSS is inlined and the icons are inline SVG. It requires Hugo 0.146 or newer, and the extended edition is needed only if WebP is kept as the image format. The design descends from Zap by jimmyff, though this Hugo version is a separate repository.
params.images.sizes (defaults 512, 1024, 2048) and served as a srcset, with a 1024px src fallback, quality 80, and output as webp, jpeg, png, or the original.static/, and images on other domains are left alone.localStorage and applied before first paint to avoid a flash, and with nothing stored the page follows prefers-color-scheme and reacts to changes.--bg, --text, --heading, --muted, --quote, --accent, --accent-hover, --code-bg, --border, plus --c-* for syntax highlighting. A site-level assets/css/custom.css is appended, so only overridden lines are needed.--font-serif requests Source Serif, then Charter, Sitka and Georgia, then Noto Serif and the serifs usually found on Linux, avoiding desktop aliasing of the generic serif.services.googleAnalytics, both rendered only in production builds.layouts/ directory, including baseof.html, home.html, page.html, section.html, taxonomy.html, term.html, and the _partials/ and _markup/ hooks.content/posts/ or any custom section such as content/writing/ and get matching list pages, since sections are not hard-coded.srcset automatically.custom.css, or pull alternative Chroma colours with hugo gen chromastyles.undatedPosition, keeping dateless entries out of the year-one sort.Installation is two steps: add the theme as a git submodule at themes/austere, then set the theme name in hugo.toml. Every parameter — description, author, keywords, strapline, footer text, favicon, profile picture, site icon, image sizes, and analytics IDs — is optional, and the theme sets no requirements on markup, outputs, or taxonomies configuration. When cloning the site elsewhere, use git clone --recurse-submodules, and set submodules: recursive on actions/checkout in CI. An exampleSite/ directory is included as a working site to copy from.
Yes. austere is released under the MIT licence, with the full text in the repository's LICENSE file. There is no paid tier, account, or hosted service — you install it as a Hugo theme submodule in your own project.
austere requires Hugo 0.146 or newer. The extended edition is only necessary if you keep WebP as the responsive image output format; the other supported formats (jpeg, png, or the original file) work without it.
Yes. The toggle cycles system, light, and dark, stores the choice in localStorage, and applies it before first paint so there is no flash. With no stored preference the page follows the operating system setting and updates if the reader changes it.
Colours are CSS custom properties in assets/css/main.css, and adding assets/css/custom.css to your own site appends overrides to the theme. Fonts are never downloaded; the serif stack falls back through Source Serif, Charter, Sitka, Georgia, and common Linux serifs.
Umami is configured through the theme's own parameters, including a website ID, script source, and optional domains. Google Analytics uses Hugo's built-in services.googleAnalytics setting. Both only render in production builds, so local development stays clean.
