bLighT pixel refiner

make blurry pixel art crisp

pixel art that got smudged by a screenshot or a resize comes back as clean squares, right on this device.

your picture never leaves this device, online or off.

nothing is uploaded. the whole tool is inside this page.

the snap

smear cells
no picturebring one, or snap the example

PixelRefiner
auto-detect can land near: a 96-cell sheet at 16 px cells reads 92W × H override open

parameters · live from the tool below

pipeline · one refine

    receipt · the last refine

    verify · no trust in this page needed

      the whole tool

      PIXEL REFINER

      Smeared, smoothed, screenshot-mangled pixel art in — crisp cells out. The grid is detected from the image's own run-lengths, or forced by hand when the guess lands near. One file, zero calls: the entire engine (MIT, vendored at v0.11.1 · bd5c1c7) runs in this page — nothing leaves the machine, online or off.
      grid × px cells hex-top dither colors
      hex-top + the two hex dithers: locked because cells = square — the words, not just the grey.

      input — as it arrived

      nothing loaded

      result — cells, re-snapped

      nothing yet
      The engine is local. The refine button is honest even in airplane mode.
      Provenance. Engine: PixelRefiner v0.11.1 by Happy Onigiri, MIT, mirrored in our org and vendored whole — detector, quantizer (Oklab k-means; Floyd–Steinberg; Bayer 2×2/4×4/8×8), flood-fill, outline, processor — types stripped, one file, no build step, no worker, no dependencies. The FUNGI sheet button composes two FUNGI sprites read from the FUNGI contract (getSvg seeds 1 & 7, Base mainnet, census-verified selector) and kept inside this page, so pressing it makes no network call, and smears them the way screenshots do — every pixel of the demo is made on your device.

      Hex cells are a MODE alongside square, never a replacement — same engine, same palette, the artist picks. The lattice path (lane/hex) re-lattices the refined grid onto equal-area hexes in Oklab and re-snaps through the same quantizer; its dithers are serpentine tone-dependent error diffusion per Jodoin & Ostromoukhov, Halftoning Over a Hexagonal Grid, Proc. SPIE 5008 (2003), DOI 10.1117/12.473230, and a void-and-cluster hex blue-noise mask (Ulichney 1993) — five dependency-free modules inlined under the same one-file-zero-calls law. Picking a square dither with hex cells dithers the square pass first, then hexifies — an option, not a swap.

      Auto-detect reads run-lengths and can land near-but-wrong on fine cells (a 96-cell sheet at 16px cells reads 92). That is why W × H sits in the open: correct it, and force takes over.
      ⌂ hub