PNG Fade-in Generator

Uploads a PNG, renders a sequence of frames that step its opacity from near-zero up to 100%, and encodes them as a genuine Animated PNG (APNG) file using acTL/fcTL/fdAT chunks and zlib-compressed scanlines, entirely in your browser. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-26

Overview

Introduction

This tool turns a single static PNG into a short fade-in animation, saved as a real Animated PNG (APNG) file you can drop straight into a web page or app.

Every frame is generated and compressed locally in your browser; nothing you upload is sent anywhere.

What Is PNG Fade-in Generator?

A client-side APNG encoder that renders N copies of your image, each with a linearly increasing opacity level, and packs them into one valid multi-frame PNG file using the APNG extension chunks (acTL, fcTL, fdAT).

Because APNG is just PNG with extra chunks, the resulting file still opens correctly (as its first frame) in any tool that only understands plain PNG.

How PNG Fade-in Generator Works

Each frame reuses the same alpha-scaling function as the PNG Opacity Changer, stepping the opacity from roughly 1/N of the way up to a full 100% on the final frame.

Every frame's raw scanlines are zlib-deflated with the browser's native CompressionStream (the same compression PNG's IDAT format requires) and assembled with hand-computed CRC-32 checksums into a spec-correct chunk stream.

When To Use PNG Fade-in Generator

Use it to create a lightweight fade-in reveal for a logo, icon, or hero image without reaching for video or CSS animation.

It's also handy for producing a self-contained animated asset that doesn't need any JavaScript to play, since APNG animates on its own once loaded.

Features

Advantages

  • Produces a real, spec-valid APNG file rather than a fake or renamed static image.
  • Runs entirely client-side; no server ever sees the uploaded image.
  • Loops automatically so the fade-in effect repeats without extra setup.

Limitations

  • Frame count is capped at 60 to keep file size and encoding time reasonable; very smooth, slow fades may need a compromise between frame count and per-frame delay.
  • Every frame stores its own full compressed pixel data (no delta/partial-region encoding), so file size scales roughly linearly with frame count.
  • APNG playback support varies: most modern browsers and image viewers play it natively, but some older or minimal image tools only show the static first frame.

Examples

Fade in a logo over ~1 second

Input

A 256x256 logo PNG, 10 frames, 10 centiseconds/frame delay

Output

A looping APNG that fades from nearly invisible to fully visible in about 1 second

10 frames at 10 centiseconds (0.1s) each totals roughly a 1-second fade cycle.

A slow, smooth fade

Input

A 128x128 icon, 40 frames, 5 centiseconds/frame delay

Output

A smoother, roughly 2-second fade-in with less visible stepping between frames

More frames at a shorter delay each smooths the transition without changing the total duration much.

Best Practices & Notes

Best Practices

  • Use more frames for large, high-contrast images where opacity steps would otherwise look banded.
  • Keep the per-frame delay proportional to your desired total fade duration (frameCount x delayCentiseconds ~= duration in centiseconds).

Developer Notes

The APNG chunk encoder (CRC-32 table, chunk framing, fcTL/fdAT sequencing) is a pure-enough async function that only touches the browser's standard CompressionStream API, not canvas or the DOM, so it's fully unit-testable in Node by decoding its own output with DecompressionStream and asserting on the raw chunk bytes.

PNG Fade-in Generator Use Cases

  • Adding a subtle fade-in reveal to a website hero image
  • Creating a self-playing animated logo without JavaScript or CSS
  • Producing a lightweight looping intro animation for an app icon

Common Mistakes

  • Expecting every image viewer to animate the result — some only render the static first frame, which is expected APNG fallback behavior, not a bug.
  • Setting an extremely high frame count for a large image, which produces an unnecessarily large file since each frame is stored in full.

Tips

  • Preview the animation directly in the output panel before downloading, since most browsers render APNG natively.
  • Pair this with the PNG Fade-out Generator to build a matching fade-in/fade-out pair for a slideshow transition.

References

Frequently Asked Questions