What exactly does the intensity slider change?
Three things proportionally. The RGB channel offset grows to 5 percent of the image width at 100 percent, the noise amplitude grows to about plus or minus 35 levels per channel, and the number of displaced horizontal bands grows to 36, each up to 6 percent of the image height and offset by up to 15 percent of the width. At low intensity you get a subtle chromatic fringe; at high intensity the image tears apart.
Can I get the same glitch twice?
Yes. The randomness comes from a seeded pseudo-random generator whose seed is derived from the seed counter and the intensity, so the same image with the same settings reproduces exactly. Re-randomize bumps the counter to give a different layout. If you liked a glitch and then changed the intensity, going back to the same intensity brings the same pattern back.
Why is the tab freezing on a big photo?
The filter runs a per-pixel loop in JavaScript on the main thread, so cost scales directly with the pixel count: a 12-megapixel photo is 12 million iterations, re-run on every slider move. There is no worker and no GPU path. Resize the image down to something like 2000 pixels wide first and it will be instant.
Is my image uploaded to apply the effect?
No. The file is decoded into an image element, drawn onto a canvas, read back with getImageData, transformed pixel by pixel in your tab, and written back out. There is no server round trip, which also means the tool works offline once loaded.
Why is the glitched PNG so much bigger than my original?
Because you have deliberately destroyed the things that make an image compress. PNG relies on runs of similar pixels and predictable gradients; the added noise makes every pixel differ slightly from its neighbour, and the channel shift and slice seams break the horizontal coherence PNG filters exploit. A noisy PNG of a photo can easily be several megabytes.