Show HN: SplatHash – A lightweight alternative to BlurHash and ThumbHash

Turns photos into 16 bytes—fans cheer speed, critics see blobs

TLDR: SplatHash turns images into 16-byte previews that decode ultra-fast for loading placeholders, but many commenters say the results look like weird “colored blobs” and lose big-picture detail. It’s a showdown between speed and a more natural look—important for sites that need snappy image loading without ugly previews.

Hacker News just met SplatHash, a tiny preview trick that squishes any image down to 16 bytes and pops out a 32×32 blur in a blink. Think of it as a super-lightweight stand-in while the real photo loads. The demo flexes blazing-fast decoding and one-size-fits-all hashes across Go, TypeScript, and Python—bit-for-bit identical. The dev pitch: decode runs for every viewer, so keep it fast. Encode can be slower—it happens once.

But the comments? Spicy. One tester warned that SplatHash “simply discarded all global features,” saying the previews lose the big-picture shape on synthetic images—a classic speed vs. fidelity brawl. Another voice joked it’s basically “colored bubbles,” and a third said the “6 blobs of colors look very weird,” calling rival ThumbHash more natural. Even design-minded folks chimed in, arguing the “splats” look too contrasty and asking if the blur bubbles can be softened at decode.

Meanwhile, performance diehards pointed at the numbers: 0.067 ms to decode vs. slower rivals. The fixed 16-byte size and neat cross-language parity got quiet nods, even as the vibe stayed “love the speed, not the look.” If you want featherweight previews, the crowd says SplatHash is fast and tiny—just be ready for the bubble-aesthetic. SplatHash

Key Points

  • SplatHash encodes any image into a fixed 16-byte hash (22-character base64url) and decodes to a 32×32 preview.
  • Go is the reference implementation; TypeScript/JS and Python versions produce bit-for-bit identical hashes.
  • Benchmarks show SplatHash decodes in 0.067 ms (encode 3.53 ms) and uses 7 allocations on decode, outperforming ThumbHash and BlurHash on decode speed.
  • SplatHash features include fixed output size, storage as a 128-bit integer, Oklab color space, spatially localized Gaussian basis, ridge regression optimization, alpha support, and cross-language bit-exactness.
  • The algorithm encodes a background color plus six Gaussian blobs placed via matching pursuit and optimized by ridge regression, packed into 128 bits.

Hottest takes

“SplatHash simply discarded all global features!” — lifthrasiir
“so you turn images into colored bubbles?” — therealdeal2020
“The 6 blobs of colors look very weird” — GaggiX
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.