ThumbHash Generator

Turn any image into a ThumbHash placeholder — with live preview, base64 + hex output and a hash checker. Free, private, nothing uploaded.

Your files never leave your device — all processing happens in your browser.

Drop an image here

Select image

or drop it here — hashed instantly in your browser

Your ThumbHash is ready!

Base64

Hex

Decode preview

ThumbHash decode preview

Average color

Everything happened inside your browser — your image was never uploaded anywhere, so there is nothing to delete.

Hash checker — decode any ThumbHash

Paste a ThumbHash (base64 or hex) to preview what it decodes to.

What is ThumbHash (in one paragraph)

ThumbHash (by Evan Wallace) is a tiny visual fingerprint of an image — typically around 25 bytes. Store it inline with your data (JSON, database row, HTML) and decode it to a miniature placeholder shown while the real image loads. It's the modern answer to the blurred-placeholder pattern: same instant-paint UX as BlurHash, but with more detail, more accurate colors, the aspect ratio baked in, and support for transparency — all in a similar number of bytes. The official demo at evanw.github.io/thumbhash shows the idea live; this page generates the hash.

ThumbHash vs BlurHash — the honest comparison

Both solve the same problem — something meaningful on screen before the image arrives — and they trade off honestly:

ThumbHash wins on fidelity: it encodes the aspect ratio (so layouts don't shift), handles alpha/transparency (BlurHash renders it against black), and produces more accurate colors with more detail in roughly the same size. Its parameters are automatic — no tuning. BlurHash wins on ecosystem and string-safety: a plain ASCII string that drops into URLs and JSON with zero fuss, plus configurable detail via its component counts and a huge installed base of decoders. New placeholder pipelines usually pick ThumbHash; existing BlurHash infrastructure has no reason to migrate. We ship a BlurHash generator too — generate both and compare on your own images.

Where the hash goes in your app

The typical pipeline: generate at build time (this page for one-offs, the thumbhash npm package in your build script for hundreds), ship the base64 string with your image metadata (API response, database row, static JSON), then decode client-side while the real image loads — via thumbHashToDataURL into an <img> src, a Next.js blurDataURL, or components like nextjs-thumbhash and Expo Image that accept the hash directly. Because the aspect ratio is embedded, the placeholder also reserves the exact layout box — no content shift when the real image lands.

How to use this generator

  1. Drop an image on the page. Click the box or drag the file in — JPG, PNG (transparency works!), WebP, anything the browser opens.
  2. Generate. One click encodes the hash, shows the decode preview, byte count and average color.
  3. Copy base64 or hex. Base64 for shipping in JSON/APIs; hex for debugging.
  4. Decode it in your app. Use the official thumbhash package to turn the string back into a placeholder at runtime.
  5. Check any hash. Paste a ThumbHash into the checker below to preview what it decodes to — including its aspect ratio and average color.

Real-world use cases

  • Next.js image placeholders — decode to a data URL and feed it as blurDataURL; no layout shift, instant paint.
  • Chat and feed apps — tiny hashes travel with message payloads; previews render before media downloads.
  • Marketplaces and galleries — every tile paints instantly, then sharpens as images arrive.
  • Transparent PNGs and logos — the one placeholder format that keeps the alpha channel.
  • Offline-first apps — hashes cached with metadata render placeholders with zero network.

Tips

  • Generate once, ship everywhere. The hash is deterministic — same image, same bytes, every time.
  • Don't pre-shrink your source. The encoder downsamples internally; feed the best quality you have.
  • Use base64 in JSON. It's the compact, standard encoding — hex is for humans debugging.
  • Pair with width/height metadata. The aspect ratio is embedded, but explicit dimensions still help your layout code.
  • Test with transparency. Drop a transparent PNG in above and watch the preview — that's the BlurHash-killer feature.

The bottom line

~25 bytes that make every image feel instant — with the aspect ratio and transparency included. Generate it here, ship it with your data, decode it on the client.

Frequently asked questions

Is ThumbHash Generator free to use without signup?

Yes. EzySize’s ThumbHash Generator tool is free to use without creating an account. Advertising may appear on this page; the tool remains free to use. Use the controls above and check the result against your requirements.

What is a ThumbHash?

A ~25-byte visual fingerprint of an image by Evan Wallace. Store it inline with your data and decode it to a tiny placeholder shown while the real image loads — with aspect ratio and transparency included.

How do I generate a ThumbHash from an image?

Drop the image on this page: it encodes the hash in your browser (base64 + hex), shows a live preview, byte count and average color. No upload, no signup.

Is this ThumbHash implementation correct?

Yes — it uses Evan Wallace’s official reference algorithm, verified byte-identical against the official implementation on test images (2026-10-08).

ThumbHash vs BlurHash — which should I use?

ThumbHash for transparency, embedded aspect ratio and better color accuracy; BlurHash when you need a plain ASCII string and have BlurHash infrastructure. We have a BlurHash generator too — try both.

How do I use a ThumbHash in Next.js?

Generate the hash here (or at build time with the thumbhash npm package), ship the base64 string with your data, and decode it client-side — via thumbHashToDataURL into an img src or blurDataURL, or components like nextjs-thumbhash.

Can I decode a ThumbHash to preview it?

Yes — paste any ThumbHash (base64 or hex) into the checker on this page and it renders the decoded preview instantly, with aspect ratio and average color.

Does generating a ThumbHash upload my image?

No — encoding runs entirely in your browser via canvas. Your image never leaves your device.

What image sizes work best?

Any size. The encoder works on a ≤100px copy internally, so a 4000px photo and its thumbnail produce effectively the same hash.

Why is my hash longer or shorter than expected?

ThumbHash is variable-length (~15–30 bytes) depending on image complexity — unlike BlurHash’s fixed component grid. That’s normal.

Does ThumbHash support transparency?

Yes — unlike BlurHash, ThumbHash encodes the alpha channel. Drop a transparent PNG in above and watch the preview keep it.

Base64 or hex — which output do I need?

Base64 for shipping in JSON/APIs (compact); hex for debugging or environments that prefer it. This page gives you both with one-click copy.

Is ThumbHash still worth using in 2026?

Yes — it’s the modern default for new placeholder pipelines (alpha, aspect ratio, color accuracy in ~25 bytes), with official libraries for JavaScript, Swift, Java and Rust.