Fast thumbnails for
online media.

About

Thumbrella is the server for online thumbnails.

Serve thumbnails from over : photographs, videos, documents, even 3D models.

runs it locally or in Docker. Our is efficient enough to offer a genuinely useful free tier.

Start with for languages you already use. Docs and examples get you immediately.


# 1. Spin up a Docker server  (or choose the cross platform binaries)
docker run --name tbr --publish 3114:3114 --rm thumbrella/server:latest

# 2. From another terminal, use a client library
export TBR_CONNECT=http://localhost:3114
uvx thumbrella-client basic https://demo.thumbrella.dev/media/math-guide.odt

# 3. Or use CLI commands to generate a thumbnail from any URL or path
npx @thumbrella/server thumb https://demo.thumbrella.dev/media/harbor-trucks.mp4 out.jpg

Grab a Client

The Javascript client is a great starting point for both node and browser environments.

  • Zero runtime dependencies, only needs fetch
  • Stream async results as the server renders thumbnail batches
  • Caching takes full advantage of HTTP cache headers
  • Binary thumbnails load easily into sharp, dom nodes, and other image libraries
  • Always provides placeholder, even when disconnected or misconfigured
  • Typed results with media classification and metadata
  • Bundled CLI for thumbnailing local files
  • Thumbrella server supports hundreds of 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 r of tbr.stream([
"https://demo.thumbrella.dev/media/padres-stereo.exr",
"https://demo.thumbrella.dev/media/golden-gate.exr",
])) {
console.log(r.url, r.status);
}

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

There are separate packages with high level web components for React, Astro, and others.

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 future of Thumbrella 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.