Thumbsup is a command-line Node.js tool that turns any folder of photos and videos into a fully static HTML gallery website with thumbnails, multiple resolutions, and custom themes.
What is Thumbsup?
Thumbsup is a command-line static gallery generator distributed as an npm package. It takes a folder containing photos and videos as input and produces a complete static website as output, with nested folders automatically becoming separate albums. The tool runs on Node.js and relies on exiftool for metadata and GraphicsMagick for image resizing; FFmpeg is used for video processing, Gifsicle for animated GIFs, dcraw for RAW photos, and ImageMagick for HEIC support. It is maintained as an open-source project under the MIT license and has over 400 automated tests.
What makes Thumbsup stand out?
- Incremental rebuilds — only changed files are reprocessed on subsequent runs, so regenerating large libraries is fast.
- Multiple resolutions — creates square thumbnails (default 120 px), small photos (300 px height), and fullscreen previews (1000 px height), each with configurable quality.
- Four built-in themes — classic, cards, mosaic, and flow; custom themes can be supplied via --theme-path and additional styling via --theme-style LESS/CSS files.
- Video support — converts videos to MP4 or WebM using FFmpeg, with configurable bitrate, quality, hardware acceleration (VAAPI), and automated still-frame extraction.
- Watermarking — overlays a transparent PNG watermark on all images at a chosen position such as Center, NorthWest, or Repeat.
- Album controls — albums can be sorted by title or date, media sorted by filename or date, paginated via --album-page-size, and downloaded as ZIP files per album with --album-zip-files.
- Deployment friendly — uses relative paths so the generated site can be hosted anywhere, including Amazon S3 static hosting; optional sitemap.xml and robots.txt can be created with --seo-location.
- Metadata and analytics — can embed EXIF data into pages, add Google Analytics tracking, and include a footer with custom text or HTML.
Who should use Thumbsup?
- Photographers — generate a self-hosted portfolio website from a folder of high-resolution photos, complete with multiple preview sizes and album organization.
- Self-hosters — run a lightweight gallery for personal photos and videos and deploy the static output to S3, GitHub Pages, or any web server.
- Developers — automate gallery generation in build pipelines or CI jobs, reusing the same node module or the pre-packaged Docker container.
What can you do with Thumbsup?
- Photography portfolios: point thumbsup at a folder of RAW or JPEG files and get a responsive gallery with thumbnails, lightbox previews, and optional downloadable full-size originals via --photo-download=copy.
- Video collections: include MP4 or WebM converted videos with poster frames, quality and bitrate controls, and optional hardware acceleration for faster processing.
- Event galleries: organize an event's media into album subfolders, sort by start date, and let visitors download each album as a ZIP archive.
How does Thumbsup work?
Install it globally with npm install -g thumbsup, then run thumbsup --input ./photos --output ./gallery. The tool scans the input folder, generates resized images and converted videos according to the command-line options, and renders the HTML site using the selected theme. On later runs it only rebuilds files that have changed, keeping regeneration fast. A JSON config file can be passed via --config with one key per CLI argument.
Pricing
Thumbsup is free and open-source under the MIT license. There are no paid tiers or hosted plans; you run it yourself using the npm package, the Docker image at ghcr.io/thumbsup/thumbsup, or the source from GitHub.
Alternatives
Sigal is another open-source static gallery generator, written in Python, that also turns folders of images into a static site with configurable themes.
FAQ
Is Thumbsup free?
Yes, Thumbsup is free to use and licensed under the MIT license. You can install it via npm, run it as a Docker container, or clone and build the source code from GitHub.
What are the system requirements?
Thumbsup requires Node.js, exiftool, and GraphicsMagick. FFmpeg is needed to process videos, Gifsicle for animated GIFs, dcraw for RAW photos, and an ImageMagick build with HEIC support for HEIC images.
Does Thumbsup support videos?
Yes, if FFmpeg is installed. Thumbsup can convert videos to MP4 or WebM, adjust quality and bitrate, use VAAPI hardware acceleration, and extract a still frame at a configurable second mark.
Can I customize the gallery's look?
Yes. Thumbsup ships with four themes — classic, cards, mosaic, and flow — and you can supply your own theme with --theme-path or override styles with a custom LESS/CSS file via --theme-style.








