Nodes/Mememage/Mememage Verify
ComfyUI Node

Mememage Verify

Is that image really yours? This node answers in one word

By sememtac·Created 3 months ago·Updated 2 months ago· 1
Mememage Verify
  • image
  • verdict
  • matched
  • identifier
  • image
image_path
record

Mememage Verify is the payoff node of the whole pack. Encoding stamps a bar into your image; this is the node that reads it back and tells you, in plain language, whether the image still matches its record. It's the closest thing this ecosystem has to a "prove this isn't tampered with" check that works even after the image has been re-encoded a dozen times.

How it works

The bar in a Mememage image carries two things: an identifier (the key to your record) and a content hash (a fingerprint). Verify recomputes that hash from the record you give it and compares it against the bar still sitting in the pixels. Match means the data is intact and belongs to this image. The trick that makes it survive the internet: the hash lives in the pixels, so it rides through JPEG conversion, screenshots, and re-uploads that would strip the PNG text chunks ComfyUI normally hides your workflow in (our image-io-metadata doc goes deep on how fragile those chunks are).

Inputs and the verdict output

All three inputs are optional - a common gotcha. Give it at least one image source and a record:

  • image - wire the image tensor in (it takes priority). If you just generated it, this is the one to use.
  • image_path - the alternative for files on disk. Use the 📁 button. Ignored when an image is wired in.
  • record - the record JSON, from Mememage Load / Find / Fetch Record, or straight from Encode.

The headline output is verdict, a string, and it's honest about why rather than just returning true/false:

  • VERIFIED - record matches, untampered - the happy case.
  • ALTERED - record doesn't match - the data was changed, or you handed it the wrong record.
  • NO BAR - the image has no readable Mememage bar (never was one, or it was resized/cropped past recovery).
  • NO RECORD - it read the bar but you didn't wire a record to check it against.
  • UNSUPPORTED - read this carefully, because it's not a verdict of tampering. The record's hash_version is a hash model this core build doesn't implement (for example images from the canonical chain at souls.mememage.art use a curated V1 inclusion set). The record isn't altered; core just can't judge it. Verify it in the application that defines that version instead.

The other outputs round it out: matched is the machine-readable boolean (wire it into a switch or gate), identifier is what the bar read, and image passes through so the node chains onward.

Installing it

Same pack, same install as every other Mememage node. ComfyUI Manager → search "Mememage" → Install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/sememtac/mememage-comfy
<ComfyUI-python> -m pip install mememage

Restart and it's under the Mememage category. No models to download, no API keys, no heavy dependencies - the mememage core library does the hashing.

Common issues

  • "I get ALTERED but nothing changed." You're almost certainly verifying against the wrong record - two different generations can share a filename but never a content hash. Wire the record that came with this exact image.
  • "UNSUPPORTED, is my image broken?" No. It's an app-defined hash version core doesn't implement. Don't treat it as tamper evidence - the tooltip and README are explicit about this, but it's the most-misread verdict.
  • Verify only checks by hash. It's the WITNESSED (integrity) check. Signature and portrait checks - the AUTHENTICATED and EMBODIED badges - live in the decoder web app, not this node. If you need those, you're in the wrong place.

The canonical flow that makes this sing: Mememage Decode → Mememage Find Record → Mememage Verify - decode the bar out of an image you found in the wild, locate its record by identifier, and verify in one chain.

CategoryMememage

Inputs (3)

NameTypeDefaultDescription
imageoptIMAGE
image_pathoptSTRINGPath to an image file (use the 📁 button). Ignored if an image is wired in.
recordoptSTRINGWire a record in — from Mememage Load / Find / Fetch Record, or Encode.

Outputs (4)

NameTypeDescription
verdictSTRING
matchedBOOLEAN
identifierSTRING
imageIMAGE