Change APNG Speed
Adjust animated PNG speed online. Speed up or slow down APNG animations by modifying frame delays. Download modified APNG instantly.
Drop your APNG file here or browse
Animated PNG • Max 50 MB
Original
Modified
Presets:
Processing...
Frame Timing Details
| Frame | Original Delay | New Delay | Dimensions | Dispose | Blend |
|---|
About
APNG frame timing is controlled by two 16-bit fields in each fcTL chunk: delay_num and delay_den. The actual delay per frame equals delay_numdelay_den seconds. A denominator of 0 is treated as 100 per the APNG specification. Miscalculating these values produces animations that stutter, freeze, or race through frames. This tool parses the raw binary structure of your APNG file, recalculates every fcTL delay pair using your chosen speed multiplier, recomputes CRC32 checksums for modified chunks, and outputs a valid APNG. No server upload occurs. All processing happens in your browser.
The tool handles edge cases: zero denominators, extremely small delays that underflow to zero (clamped to 1/65535), and files with hundreds of frames. Note: this tool modifies timing metadata only. It does not re-encode pixel data, so output quality is lossless. Files exceeding 50 MB are rejected to prevent browser memory issues.
Formulas
Each frame in an APNG file contains a fcTL chunk with two timing fields. The actual display duration of a single frame is computed as:
When delay_den = 0, the specification mandates treating it as 100, making the delay unit centiseconds.
To change speed by a multiplier m, the new delay becomes:
This tool normalizes all delays to a common denominator of 1000 (milliseconds), applies the multiplier, then finds the best-fit integer pair (delay_num, delay_den) within the 16-bit unsigned range (0 - 65535). The minimum effective delay is clamped to 1/65535 seconds to prevent zero-duration frames.
After modifying each fcTL chunk, the CRC32 checksum must be recalculated over the chunk type + chunk data:
Where CRC uses the polynomial 0xEDB88320 (reversed representation of the ISO 3309 / ITU-T V.42 standard polynomial).
Variable Legend: delay_num = frame delay numerator (16-bit unsigned integer). delay_den = frame delay denominator (16-bit unsigned integer). m = user-selected speed multiplier. CRC = 32-bit cyclic redundancy check value appended to each PNG chunk.
Reference Data
| Speed Multiplier | Effect | Original 100ms Delay Becomes | Use Case |
|---|---|---|---|
| 0.1× | 10× slower | 1000 ms | Frame-by-frame analysis |
| 0.25× | 4× slower | 400 ms | Slow-motion effect |
| 0.5× | 2× slower | 200 ms | Gentle slow-down |
| 0.75× | Slightly slower | 133 ms | Subtle timing tweak |
| 1.0× | Original speed | 100 ms | No change (reference) |
| 1.25× | Slightly faster | 80 ms | Subtle speed-up |
| 1.5× | 1.5× faster | 67 ms | Snappier animations |
| 2.0× | 2× faster | 50 ms | Quick loops, GIF-like feel |
| 3.0× | 3× faster | 33 ms | Rapid cycling (~30 fps) |
| 4.0× | 4× faster | 25 ms | Near-realtime playback |
| 5.0× | 5× faster | 20 ms | Maximum speed (50 fps) |
| APNG Chunk Types Reference | |||
| acTL | Animation Control: stores num_frames and num_plays (0 = infinite loop) | ||
| fcTL | Frame Control: per-frame dimensions, offsets, delay, dispose/blend operations (26 bytes payload) | ||
| fdAT | Frame Data: compressed pixel data for frames 2+. Identical to IDAT with 4-byte sequence prefix | ||
| IDAT | Image Data: compressed pixel data for the default (first) frame | ||
| IHDR | Image Header: width, height, bit depth, color type (13 bytes payload) | ||
| IEND | Image End: zero-length terminator chunk | ||
| Delay Denominator Special Values | |||
| 0 | Treated as 100 per APNG spec (delay in centiseconds) | ||
| 1000 | Delay in milliseconds (common convention) | ||
| 100 | Delay in centiseconds (default/legacy) | ||