letsblaze


A blazingly fast, no-JS Hugo theme built for blogs and docs.

Tags and Taxonomy

letsblaze supports Hugo’s built-in taxonomy system. Tags are the primary taxonomy.

Adding tags to a post

In front matter:

---
title: "My Post"
tags: ["hugo", "web", "html"]
---

Tag pages

Every tag automatically gets a listing page at /tags/TAG-NAME/ showing all posts with that tag, with pagination.

The tags index at /tags/ lists all tags ordered by post count.

RSS per tag

Hugo generates an RSS feed for each tag automatically:

/tags/hugo/index.xml

This lets readers subscribe to specific topics rather than the full blog feed.

Working with Images

letsblaze handles images with a custom render hook that adds <figure> and <figcaption> support and automatic dimension detection for page-bundle images.

Page bundles

The recommended way to use images is as page bundles — store the image alongside the content file:

content/
  blog/
    working-with-images/
      index.md        ← this file
      hero.jpg        ← image in the same directory

This is a leaf bundle. Hugo can read the image dimensions at build time and emit width and height attributes automatically, preventing layout shift (CLS).

Code and Syntax Highlighting

letsblaze uses Hugo’s built-in Chroma syntax highlighter, configured to emit inline styles rather than CSS classes. This means syntax highlighting works with no external stylesheet — consistent with the theme’s no-external-resources philosophy.

Inline code

Wrap short code references in backticks: const x = 42.

Fenced code blocks

Use triple backticks with a language identifier:

def greet(name: str) -> str:
    return f"Hello, {name}"

print(greet("world"))
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Example</title>
  </head>
  <body>
    <p>Hello, world.</p>
  </body>
</html>
hugo new blog/my-post.md
hugo server --buildDrafts
hugo --minify

Syntax style

letsblaze is opinionated: the default Chroma style is monochrome. This works in both light and dark mode without maintaining two colour palettes.

Writing Content

letsblaze renders standard Markdown with a few additions. This post covers everything available when writing content.

Headings

<h1> is reserved for the page title, rendered automatically by the theme. Use <h2> through <h6> for section headings within content.

H2

H3

H4

H5
H6

Lists

Ordered and unordered lists render with clean browser defaults.

  1. First item
  2. Second item
  3. Third item
  • Unordered item
  • Another item
  • And another

Blockquotes

The web is for everyone. Build accordingly.

Welcome to letsblaze

letsblaze is a Hugo theme built on one principle: the fastest resource is one that was never requested.

No JavaScript. No external stylesheets. No web fonts. No CDN calls. Every page is HTML with a small inline style block. Nothing else ships to the browser.

Why no JavaScript

JavaScript is powerful and often necessary. It is also the single largest contributor to slow page loads across the web. For a blog or documentation site, there is almost nothing that JavaScript provides that semantic HTML cannot handle.