HugoStarter

paperesque — Hugo Starter Template

By capnfabs

Paperesque is a lightweight Hugo theme that provides automatic image scaling, footnote-to-sidenote conversion, visual draft marking, and mostly hidden pages.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

The fitfigure shortcode automatically scales images to the container width and outputs 1x and 2x resolutions

02

The accompanying drop-resources.py script can remove original images after build, disabled by default

03

Footnotes automatically become sidenotes when space permits, with site-level or page-level disabling

04

Draft pages are always displayed with an orange striped background, which cannot be disabled

05

Pages can be set to be accessible only by URL via front matter, excluded from lists and sitemaps

06

Top menu links are driven by params.topmenu in config.toml

Template Details

Paperesque is a lightweight theme for Hugo, used by the author on capnfabs.net. The theme provides a fitfigure shortcode that automatically scales images to the container width and outputs 1x/2x resolutions, along with a drop-resources.py script to remove original images after build. Footnotes automatically become sidenotes when space permits, and can be disabled via site parameters or page front matter. Draft pages are always distinguished by an orange striped background, which cannot be disabled. Pages can be made accessible only by URL through a combination of sitemap.disable and params.mostlyHidden in front matter. The homepage has two options: a custom link list, or sections with sidebar content. Top menu links are driven by params.topmenu in config.toml.

Usage limitations: mostlyHidden requires Hugo 0.125.0 or later; drop-resources.py for removing original images is disabled by default, and when enabled generates a .droplist file in the output; modifying the theme JavaScript requires the yarn and parcel toolchain.

HugoStarter

Is it right for your project?

Use Cases

  • Adding a blog theme with image scaling and sidenote features to a Hugo site
  • Writing workflows that need to visually distinguish drafts from published content
  • Scenarios where some pages should be shared only by URL and not publicly listed
  • Building article-focused Hugo sites that need to control image output size

Suitable For

  • Developers building personal blogs or article sites with Hugo
  • Sites that need automatic image scaling and original file cleanup
  • Writing scenarios where footnotes are presented as sidenotes
  • Editorial workflows that need visual draft marking and mostly hidden page control

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Recommended to copy the theme into themes/paperesque using git subtree; git submodule is also possible

  2. 2

    Set theme = "paperesque" in config.toml

  3. 3

    Configure the top menu via the params.topmenu array with name and url

  4. 4

    To enable original image removal, add outputs.page = ["HTML", "droplist"] in config.toml and run buildscripts/drop-resources.py after build

  5. 5

    mostlyHidden requires Hugo 0.125.0 or later

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • The sitemap.disable feature in mostly hidden pages requires Hugo 0.125.0 or later; ensure the build environment meets this version requirement to use it.
  • The original image removal feature is disabled by default; when enabled, it generates a .droplist file in the build output, which you must handle yourself.
  • Modifying the theme JavaScript requires installing the yarn package manager and using the parcel toolchain for building.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be assumed to be covered solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Note that `sitemap.disable` is only available since [Hugo 0.125.0](https://github.com/gohugoio/hugo/releases/tag/v0.125.0), so ensure you're building with that if you're relying upon this feature.

Original README

This is _off by default_ because it peppers your build output with `.droplist` files, and if you're not expecting them, it's going to be an unpleasant surprise.

Original README

First, you need to [install the `yarn` package manager](https://yarnpkg.com/getting-started/install).

Original README
https://github.com/capnfabs/paperesque/blob/mainline/LICENSE.mdhttps://github.com/capnfabs/paperesque/blob/mainline/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
Hugo Themes
Documentation and maintenance reference score
More documented · 87 / 100
Technologies
Hugo
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-06
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Hugo as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: fc3fbb4bfe59f8a06cf01031965a1fee0b525284b2b9e04392d35435bf942ce4

2026-10-02T23:12:56.664Z

Source file / repository
# Paperesque

A lightweight [Hugo](https://gohugo.io) theme with a couple of neat tricks.

You can see it in action on [capnfabs.net](https://capnfabs.net).

Here's what makes it special:

- Has a shortcode for resizing images to fit the page, _and_ tools for removing originals from the output
- Footnotes turn into margin notes when there's enough space.
- Tools for editing and controlling publication:
  - Visual differentiation for drafts
  - The ability to "mostly hide" pages so that they're only accessible by knowing the URL.

## Install

### git subtree (easiest!)

Copy the files into your repo using `git subtree` (this is way easier to use than submodules; [here's an explainer](https://www.atlassian.com/git/tutorials/git-subtree)):

```sh
git subtree add --prefix themes/paperesque https://github.com/capnfabs/paperesque mainline --squash
```

This will add a commit to your repo with everything ready to go. You'll probably want to modify parts of this theme for your own usage! Subtree makes that easy, because you've just copied the code into your repo ✨

### git submodules

If you're sure you want to use git submodules:

```sh
git submodule add -b mainline https://github.com/capnfabs/paperesque themes/paperesque
```

### Select the theme in your `config.toml`

Add / Modify the `theme` field in your `config.toml` for your hugo site:

```toml
theme = "paperesque"
```

## Using Features

### Homepage

You've got two options for the homepage:

#### 1. A custom list of links.

**Example**: see [examples/1-with-homepage-menu](examples/1-with-homepage-menu/).

This was the _only_ thing supported until Dec 2022-ish.

See the [example readme](examples/1-with-homepage-menu/README.md) for details on how to implement this.

#### 2. A section + custom content in a sidebar.

**Example**: see [examples/2-with-homepage-sidebar-content](examples/2-with-homepage-sidebar-content/).

This is what's in use on capnfabs.net today. I like it much better.

See the [example readme](examples/2-with-homepage-sidebar-content/README.md) for details on how to implement this.

### Links in the top-right corner

These are config driven! Add this to your `config.toml` (for example):

```toml
[[params.topmenu]]
  name = "about"
  url = "about/"

[[params.topmenu]]
  name = "contact"
  url = "contact/"

[[params.topmenu]]
  name = "rss"
  url = "posts/index.xml"
```

### Removing original images after resizing

The `fitfigure` shortcode is exactly the same as the `figure` shortcode, but it automatically resizes your images to fit the container, _and_ provides different resolutions for different DPIs (1x, 2x).

Whenever you use this shortcode, the theme makes a mental note of the resource you specified.

Now, you need to do some configuration if you want the originals to be removed from the output.

First, add this to your site's `config.toml`:

```toml
[outputs]
page = ["HTML", "droplist"]
```

Now, as part of your build process, run:

```sh
./themes/paperesque/buildscripts/drop-resources.py [hugo-output-directory]
```

(the Hugo output directory is usually `./public`).

That's it! Resized resources will be removed.

This is _off by default_ because it peppers your build output with `.droplist` files, and if you're not expecting them, it's going to be an unpleasant surprise.

### Visual differentiation for drafts

This one's on, and can't be switched off. Drafts have an orange stripey background everywhere. You can't miss them.

### Footnotes turn into margin notes

This is _on by default_.

You can switch it off site-wide by adding `disableMarginNotes = true` to your `params` in your `config.toml`, i.e.

```toml
[params]
disableMarginNotes = true
```

Alternatively, you can turn it off per-page by adding the `disableMarginNotes = true` to your front-matter for the page.

### Make pages only visible / accessible by URL

You can prevent a page from being publicly visible (included in lists etc) by adding the following to your front-matter:

```toml
sitemap:
    disable: true
params:
    mostlyHidden: true
```

- Note that `sitemap.disable` is only available since [Hugo 0.125.0](https://github.com/gohugoio/hugo/releases/tag/v0.125.0), so ensure you're building with that if you're relying upon this feature.

## Testing against the example site

You can build the example site with this theme with:

```
cd examples/[example]
hugo serve --themesDir=../../..
```

## Hacking / Modifying the JS

The javascript in use (`assets/js/main.js`) is built from the `./js/` directory. Here are instructions for how to modify the JS:

### Set up
First, you need to [install the `yarn` package manager](https://yarnpkg.com/getting-started/install).

Then, run:

```sh
yarn install
```

to install the required dependencies.

### Dev builds

Run:

```sh
npx parcel watch
```

Simple as that!

### Production builds (i.e. before you commit code / deploy code)

```sh
npx parcel build --no-source-maps
```

### Other resources

- The explanation for how a lot of this works is in [this blog post](https://capnfabs.net/posts/hugo-theme-exclude-processed-images/), so take a look there if you get stuck or want to borrow some of the ideas without grabbing all of them.
- You can see who else is using this theme by [searching Github for `paperesque filename:config.toml`](https://github.com/search?q=paperesque+filename%3Aconfig.toml&type=Code) (requires login).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

hugo-xmin

hugo-xmin

hugo-xmin is an extremely minimal Hugo theme written by Yihui Xie for template beginners. HTML and CSS total about 140 lines, with no external dependencies, and it uses the MIT license.

Hugo · Starter

hugo-theme-gallery

hugo-theme-gallery

A Hugo Extended photo gallery theme that organizes images with Page Bundles, automatically generating album lists and gallery pages with a Justified layout and PhotoSwipe lightbox.

Hugo · Starter

reveal-hugo

reveal-hugo

reveal-hugo is a Hugo theme that converts Markdown content into Reveal.js-based HTML presentations. It supports slide separation with `---`, shortcodes for fragments, slides, sections, notes, Markdown, and MathJax, and organizes content as root or section presentations with order controlled by weight.

Hugo · Starter

anatole

anatole

Anatole is a minimalistic two-column Hugo theme ported from farbox-theme-Anatole, featuring dark mode, multilingual and RTL support, and optional portfolio, comments, analytics, KaTeX, and Mermaid integrations. It suits personal blogs, portfolios, or documentation sites built with Hugo.

Hugo · Starter

hugo-theme-diary

hugo-theme-diary

A Hugo diary-style theme ported from the Hexo theme Journal, with a grid homepage for essays and daily notes. It supports six languages, dark mode, table-of-contents scroll positioning, reading time, code highlighting, and configurable sidebar, fonts, and colors.

Hugo · Starter

risotto

risotto

risotto is a minimalist, responsive Hugo theme inspired by terminal ricing aesthetics. It uses semantic HTML and pure CSS with no JavaScript, and its layout relies on CSS Grid for native responsiveness without manual breakpoints.

Hugo · Starter