Fast thumbnails for
online media.

About

Thumbrella brings fast, beautiful thumbnails to any online gallery, with support for 100+ formats: photos, video, documents, 3D models, and other media.

Run the open-source server with one command, zero config, and all the features and functionality. Then connect with client libraries for the browser or any of the other supported languages.

Also check out the Thumbrella Cloud for a distributed server and caching system. This genuine free tier is built for real every day projects; connected in two clicks.

Thumbrella Cloud status on status.thumbrella.dev

First Steps

🐳 Start Docker server
docker run --name tbr --publish 3114:3114 --rm \
  thumbrella/server:latest
📦 Client library tools
export TBR_CONNECT=http://localhost:3114
uvx thumbrella-client basic \
  https://demo.thumbrella.dev/media/math-guide.odt
🖼️ Command line thumbnail
npx @thumbrella/server thumb \
  brilliant-document.odt thumb.jpeg

Grab a Client

The Javascript client is a great starting point for node, and similar environments.

  • Stream async results as the server renders thumbnail batches
  • Zero runtime dependencies, only needs fetch
  • Caching takes full advantage of HTTP header directives
  • Binary thumbnails load easily into sharp and other image libraries
  • Placeholders for failures, even when disconnected or misconfigured
  • Bundled CLI for thumbnailing local files
  • Thumbrella supports over one hundred formats
// Install with, `npm install @thumbrella/client` //
import { Client } from "@thumbrella/client";
// Connect and generate a single thumbnail
const tbr = await new Client();
const result = await tbr.thumb("https://demo.thumbrella.dev/media/pocket-game.webp");
console.log(result.status, result.media!.thumbnail.length, "bytes");
// Stream results as they complete
for await (const result of tbr.stream([
"https://demo.thumbrella.dev/media/padres-stereo.exr",
"https://demo.thumbrella.dev/media/golden-gate.exr",
])) {
console.log(result.url, result.status);
}

The source comes with several starting point examples. See the client documentation for more details and information.

Grab a Server

Self hosting your own Thumbrella server is designed to be straightforward and simple. Find the prepackaged option that best fits your environment.

Terminal window
# Run through packaged npm servers (uvx package also available)
npx @thumbrella/server serve
# Docker container
docker run --name tbr --publish 3114:3114 --rm thumbrella/server
# Download binaries for your platform (statically linked, no difficulties)
wget http://github.com/thumbrella-dev/thumbrella/releases/latest/thumbrella-win64.exe
thumbrella-win64 serve

By default the server will listen on port 3114. This can be override by setting $TBR_PORT to a different value. There are several other settings also managed by environment variables. These can be validated by running thumbrella check for a simple report and diagnostics.

See the Server Documentation for more commands and configurations. Including how different media formats are handled. This also has instructions on optionally compiling Thumbrella for yourself.

Sponsors

Great looking media projects have excellent thumbnails. Anyone can build incredible project using Thumbrella. The ideal future of Thumbrella’s development and features will be driven by sponsors.

For teams and developers looking to get the most out of Thumbrella, a sponsorship goes a long way to securing the future of this project and service for all users.

See the sponsors page for more details.