Cleanmark toolGemini corner tool

What on EARTH is an animated png?

An animated PNG, or APNG, is a PNG file containing a timed sequence of frames. It can move even with a .png filename. Keeping that extension after editing does not establish that the frames survived. Cleanmark offers a still-image brush workflow, not a verified animation-preserving repair; keep the original animation.

Container

A PNG signature identifies the format.

Sequence

Animation adds frame information and timing.

Export

Inspect the saved sequence, not just a thumbnail.

Two owned animation frames and a separately extracted still
A local encoding and extraction experiment. TEST remains; these are not repaired outputs.

Our two-frame file and its misleadingly similar still

We drew two owned images measuring 480 by 280 pixels. The first placed a red block on the left; the second placed a blue block on the right. Both retained an artificial TEST label. We saved them together as a genuine APNG with frame delays of 250 and 750 milliseconds and looping enabled. The first image was part of the animation, not a separate default poster.

Reopening the actual encoded file found two frames and a size of 2197 bytes. Parsing its bytes found IHDR, acTL, fcTL, IDAT, fcTL, fdAT and IEND in that order. The animation control declared two frames and zero for indefinite looping. We decoded both images rather than counting a thumbnail as proof of motion.

We separately extracted the first decoded image into an ordinary PNG outside Cleanmark. That copy still measured 480 by 280 pixels, but reopening it found one frame and no animation timing. Its bytes contained IHDR, IDAT and IEND, with no animation control or frame data chunks. It measured 1597 bytes. A static control saved directly from our first drawing had the same decoded RGBA values as the extracted still.

Thus the smaller copy retained the canvas dimensions and the first picture while dropping the sequence in this deliberate local extraction. TEST was never removed. Neither copy is a downloaded Cleanmark repair. Our live browser upload and repair test was not completed, so these measurements do not establish what the current browser input accepts or exports for APNG. They demonstrate why a still preview and an unchanged filename cannot verify animation retention.

What the extra frame information does

The PNG specification defines animation control, frame control and frame data chunks. A decoder without animation support can display a static image instead. That fallback is useful for compatibility, but seeing a picture does not tell you whether an editor handles the sequence.

There can also be a default image outside the animation. Pillow documents that its reported image count includes that default image when present. Record this distinction before comparing frame counts; our fixture deliberately had no separate default. Do not infer a missing animation frame from a count without checking that convention.

Making a small, inspectable example

Start with pictures you own and an encoder that explicitly saves APNG sequences. Set frame delays and looping, save the sequence, then reopen it and inspect every frame. Saving one picture as PNG does not create motion. Our downloadable owned APNG, static control and extracted still make the comparison reproducible. They contain artificial drawings, not recovered photographs.

Where visible-mark repair fits

The existing browser brush attempts nearby-pixel repair without a generative model. Arbitrary central marks require manual painting. It does not promise to recover hidden original detail, remove an animation background, or reconstruct every frame. Only edit files you own or have permission to change.

A supported filename or a successful still download would not prove animated export. For an animation job, compare the saved frame sequence and timing with the original before accepting the result. The GIF input test covers a different boundary: that actual GIF was rejected. We have not repeated that result with APNG or converted another format merely by renaming it.