Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Hugo theme for photo galleries that uses the Hippo preprocessor to resize images, extract metadata, and add watermarks.

A Hugo theme for building media galleries that mix photos and videoclips in a Pinterest-style vertical layout.
Foto is a Hugo theme for photographers that creates a complete photo gallery website from a folder of images, using the bundled Hippo preprocessor to resize photos, extract EXIF metadata, and generate Hugo content pages. The theme is developed by nux-li and published on GitHub; it requires Hugo and a Java Runtime Environment version 21 or newer because Hippo is written in Kotlin. Input includes your original photographs (with optional metadata such as title, description, credit, capture date and time, keywords, focal length, aperture, exposure time, ISO, and camera make/model) placed under content/albums, plus optional watermark PNGs in assets/watermarks; output is a static gallery site with album pages, image pages, and watermarked images.
Foto is a Hugo theme that transforms a directory of photos into a metadata-rich gallery website. It takes your images and optional watermark files, processes them with Hippo, and outputs a static Hugo site with individual pages for every image and album. The theme is created by nux-li and distributed through GitHub, and it is intended for photographers who want a straightforward, static-site gallery without a database or CMS.
watermark_main.png) and a barely visible center watermark (watermark_subtle.png); placement codes like UL, UR, LL, LR, UL_C, UR_C, LL_C, LR_C control position when passed to the --watermark option.content/albums are supported, allowing grouping by geography, style, date, or any other scheme../hippo.sh --demo in the theme directory to generate an example gallery with sample photos; ./hippo.sh --clear removes demo pages (destructive, not recommended once you use your own images).baseURL, generate a production-ready static site with hugo --environment production --cleanDestinationDir.git submodule add --depth=1 https://github.com/nux-li/hugo-foto-theme.git themes/foto, then set theme = "foto" in hugo.toml.--watermark placement code.The workflow is command-line driven. First, ensure Java 21 or newer is installed, then add the theme as a Git submodule and configure hugo.toml with the theme name and a params.credit string. Copy your photos into content/albums (any depth of subfolders), then from the theme directory run ./hippo.sh (or hippo.bat on Windows) to generate front matter and processed images. Finally, start the Hugo server with hugo server -D to preview, or build with the production environment flag for deployment.
Hippo (Hugo Image Preprocessor) is the bundled command-line tool in the Foto theme, written in Kotlin. It resizes images, extracts metadata from photos, and generates Hugo front matter for every image and album. Running it requires a Java Runtime Environment version 21 or newer.
Yes — whenever you add, remove, or modify images in content/albums, you should run ./hippo.sh again so that front matter and resized images stay in sync. The --clear flag deletes generated demo pages, but it is described as destructive, so avoid it once you work with your own content.
The theme applies watermarks globally via the --watermark option on the Hippo command, with one placement code for the whole run. It does not describe per-image watermark control; you can prepare watermark PNGs in assets/watermarks and choose a positioning code such as LL_C (lower left corner plus center).
No. Foto is a Hugo theme, and Hugo is a static site generator. All content is stored as image files and generated Markdown pages, so the final output is purely static HTML/CSS, which you can host anywhere.
Run ./hippo.sh --clear from the theme directory. The documentation warns this operation is "a bit destructive," so it is best used only before you start adding your own images.