Regressive JPEGs: Hiding Videos Inside Single Image Files

Regressive JPEGs: Hiding Videos Inside Single Image Files

I discovered how to exploit the progressive loading feature of JPEG files to embed entire video sequences within a single image. By concatenating multiple DC-only scans and manipulating spectral ranges, I created files that switch between different frames as they download over slow networks. While this technique has no practical use due to a lack of timing control, it allows for creative trolling and unique visual experiments without using JavaScript or CSS.

Since a DC-only frame is a standards-compliant image, creating them doesn't require anything special.
  1. Retr0id

    I did something very similar with progressive (adam7 interlaced) PNG: https://www.da.vidbuchanan.co.uk/adamation/image.png

    > so playback is entirely dependent on network delay

    Ultimately true, but I set up my server to send each "frame" separately, with a fixed delay between each. Each frame is small so unless your network is unusually slow, the timing is set by my server.

  2. robbak

    That is 1. Cursed, and 2. Definitely in the right place here.

  3. tda

    I wonder if and how you can use this for steganography, hiding data in plain sight. I bet most automated image analysis programs would only consider the final image. I sure some highschooler can use this to bypass their schools contentfilter

  4. pavlov

    > “Besides unconventional rickrolls and other trolling, this has no practical applications: there's no way to add timing information, so playback is entirely dependent on network delay.”

    A progress bar for something that’s loading in parallel over the same network, to give the user an idea of how much the delay is?

  5. cousin_it

    Nice! I think you can approximate timing somewhat, by making your web server create the "jpeg" on the fly and send it to the client in timed chunks. The source could even be a webcam, so the "jpeg" would go on forever.

More from this day

2026-07-18