bLighT studio gate

will your layer work?

before a picture layer joins a collection, this checks it the same way the launch will. the check runs here, in your browser.

your picture never leaves this device.
see it check seven test pictures

nothing is uploaded. the checker runs in your browser.

the gate

run the seven test layers
wasm://inscription-gate
the verdict is the crate's · this page only renders it

config · live from the inputs below

findings · the report's eight tags

tagfinding · fixthis layer

pipeline · one layer

    receipt · this tab

    verify · no trust in this page needed

      the whole gate

      bLighT Studio Gate

      Drop a trait-layer PNG. The verdict comes from crates/inscription-gate compiled to WASM — the same gate the LaunchPad will run at deploy — not from a JavaScript re-implementation. Every finding carries its fix; the chain checks none of this, and ownership is renounced after deploy, so this page is where a mistake is still catchable.
      drop a PNG here, or click to choose square image, ideally grid×grid or an integer multiple of it

      Gate configuration

      675 rects is measured by binary search against the 2^24 gas cap (25,226 gas/rect). Orientation decides which direction a 1-cell run shears into a zigzag — flat-top punishes horizontal runs, pointy-top vertical ones.

      Verdict

      waiting for a layer
      no layer measured yet

      The layer, as the gate sees it

      Cell grid. Transparent cells stay dark. Off-palette cells are tinted; hairline runs outlined red; dither windows boxed orange; the required margin ring is hatched — art under the hatch is inside the zone the device clips.
      Source PNG at 1:1-ish. Shown as decoded, before cell mapping, so a bad export (soft edges, wrong size) is visible next to what the gate measured.

      The blob — the layer as bytes (v2 codec, golden-tested)

      Hex lattice render. Exactly the geometry the on-chain SVG walks — flat-top or pointy-top per the gate config. This is what the cells become; the square preview above is what they came from.
      drop a layer that passes the gate, or drop a .hex blob to preview it
      codec goldens: checking…
      v2 wire: 0x02 version, palette count, first-seen RGB triples, 5-byte rects (col,row,w,h,idx) — byte-identical to the Rust encoder (bnri-cosmic) and the Solidity decoder (HexLib, 37/37 forge). Loading a .hex blob previews it; the first byte dispatches v2/v1 exactly like BnriArt.setLayerBlob. A blob preview is NOT a gate verdict.
      Decode-side checks live here, not in the WASM — they are properties of the PNG before cells exist: soft alpha (a soft matte destroys hard-edged pixel art per spec §4), non-square exports, and size reduction. They are labelled decode in the findings table so nothing pretends to be a gate verdict that isn't one.
      Corrections are part of the exhibit. This gate exists because things were measured, not guessed — receipts in docs/SPEC-INSCRIPTION-COMPAT-1.md §4 and docs/receipts/panelfit.js. AGPL-3.0-only, with the crate it runs.
      ⌂ hub