A blazingly fast, no-JS Hugo theme built for blogs and docs.
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.
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.
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).
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.
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.
- First item
- Second item
- Third item
- Unordered item
- Another item
- And another
Blockquotes
The web is for everyone. Build accordingly.
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.