pump.fun · recorded forwards, live
The meta is not a genre.
It is a file.
Every coin minted on pump.fun wears a picture. SameFace fetches each one as it launches, hashes the pixels, and asks a question no scanner reports: had anyone used this picture already? The reuse is not lookalikes and it is not edits. Overwhelmingly it is the same file, minted again, under a different noun.
The finding
There is no such thing as “the reuse rate”. There is only the reuse rate over some window.
Ask how many launches repeat a picture and the honest answer is a question back: repeat it within what? Over sixty seconds the rate is one thing. Over an hour it is far higher, for the mechanical reason that a longer window contains more pictures to collide with. Any site quoting you a single percentage is quoting you the length of its own recording.
Share of launches repeating an earlier picture
The wall
One picture, many coins
Every tile is one picture and the number of coins wearing it inside the recorded window. A purple dot means every one of those coins came from the same wallet; a teal dot means the picture crossed wallets. Those are two different phenomena and the site never adds them together. Click any tile for the coins.
Is it just bots?
Mostly the picture crosses wallets — which is not the same as crossing people
The obvious story is one script minting the same coin on a loop. That is real, and it is the smaller half. The larger half is a picture appearing under wallets with no other connection to each other. But a wallet is not a person, and a fresh wallet costs nothing, so this is an upper bound on how much of it is genuinely social.
Does getting there first pay?
Holding the picture fixed, arriving first is worth nothing
The obvious test — coins with a recycled picture against coins with a fresh one — compares wallets, not pictures, because the wallets that recycle images are the wallets minting dozens an hour. So the comparison here happens inside a cluster, where every coin wears the same image and the only difference is who got there first.
The engine
Why there is WebAssembly on a page with no build step
Moving that threshold slider re-asks the question for every pair of pictures in the corpus —
n(n−1)/2 Hamming distances, recomputed from scratch, because no index survives a radius the
reader keeps changing. A Hamming distance is a population count, and population count is the
one primitive JavaScript has no access to: Math.clz32 exists,
popcount does not. WebAssembly has both a scalar
i64.popcnt and a SIMD i8x16.popcnt that
does sixteen bytes at once.
The 552-byte module is assembled byte by byte by tools/emit-wasm.mjs
— no toolchain, nothing to install, and its output is checked against a JavaScript reference
on random problems before it is written. Both paths ship, and the page keeps whichever your
CPU actually runs faster, because the expected answer turned out to be wrong: run it and see
which instruction was doing the work.
Try it
Drop a picture and find out whether it is already a coin
The page hashes your image with the same code that built the corpus — literally the same
module, js/phash.js, imported by both the recorder and this tab.
Nothing is uploaded; the image never leaves the browser.