{"id":2123,"date":"2026-11-06T09:13:00","date_gmt":"2026-11-06T14:13:00","guid":{"rendered":"https:\/\/www.xconvert.com\/blog\/?p=2123"},"modified":"2026-08-31T23:10:58","modified_gmt":"2026-09-01T03:10:58","slug":"apng-vs-gif","status":"publish","type":"post","link":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif","title":{"rendered":"APNG vs GIF: Real Transparency, True Colour, Not Smaller"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You exported a looping logo animation as a GIF, dropped it onto a dark page, and every anti-aliased edge came back wearing a jagged white halo. That is not a bad export \u2014 it is GIF doing exactly what a 1980s format was designed to do. APNG fixes it. What APNG does <em>not<\/em> reliably do is the thing every comparison article promises: produce a smaller file. We checked the claims against the W3C\u2019s PNG specification, the CompuServe GIF89a spec and caniuse, and the size story is the one everybody gets backwards.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Quick answer:<\/strong> <strong>Convert GIF to APNG when you need real transparency or real colour<\/strong> \u2014 8-bit alpha instead of GIF\u2019s on\/off transparency, 16.7 million colours instead of 256, and exact frame timing instead of GIF\u2019s hundredth-of-a-second rounding. <strong>Do not convert expecting a smaller file.<\/strong> At the same colour depth APNG usually compresses better than GIF, but APNG\u2019s default true-colour mode keeps every pixel losslessly, while GIF\u2019s 256-colour quantisation <em>is<\/em> its compression. For photographic or video-derived animation, the GIF is very often the smaller file. APNG is supported by about <strong>96%<\/strong> of browsers and degrades to a static first frame everywhere else.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Jump to a section<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"#standard\">APNG is now part of the official PNG standard<\/a><\/li><li><a href=\"#compare\">GIF vs APNG, side by side<\/a><\/li><li><a href=\"#size\">The size myth: when APNG wins and when it loses<\/a><\/li><li><a href=\"#timing\">Frame timing: GIF\u2019s hundredth-of-a-second problem<\/a><\/li><li><a href=\"#support\">Where each format actually plays<\/a><\/li><li><a href=\"#tool\">Convert a GIF to APNG on xconvert<\/a><\/li><li><a href=\"#faq\">FAQ<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"standard\">APNG is now part of the official PNG standard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For twenty years the honest caveat about APNG was \u201cit\u2019s not really a standard.\u201d That caveat expired. The <strong><a href=\"https:\/\/www.w3.org\/TR\/png-3\/\">PNG Specification (Third Edition)<\/a> became a W3C Recommendation on 24 June 2025<\/strong>, defining animation as a first-class part of PNG through three chunks:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><code>acTL<\/code><\/strong> \u2014 declares the file animated and carries <code>num_frames<\/code> and <code>num_plays<\/code> (0 means loop forever). It must appear before the first <code>IDAT<\/code>.<\/li><li><strong><code>fcTL<\/code><\/strong> \u2014 one per frame, carrying the frame\u2019s <code>width<\/code>, <code>height<\/code>, <code>x_offset<\/code>, <code>y_offset<\/code>, its delay, and its <code>dispose_op<\/code> \/ <code>blend_op<\/code> behaviour.<\/li><li><strong><code>fdAT<\/code><\/strong> \u2014 the frame data, structured like <code>IDAT<\/code> but prefixed with a sequence number.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">APNG began life as a Mozilla extension, which is why the spec notes <code>acTL<\/code> is \u201cexceptionally defined as if it were a private chunk\u201d for web compatibility. That design buys the best fallback story in animated imagery: <strong>a decoder that doesn\u2019t understand APNG ignores the animation chunks and renders the still image<\/strong>, so an unsupporting client shows a clean first frame rather than a broken-image icon. And because <code>fcTL<\/code> carries per-frame offsets and dimensions, APNG gets the same \u201conly store the rectangle that changed\u201d optimisation GIF has.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"compare\">GIF vs APNG, side by side<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Property<\/th><th>GIF<\/th><th>APNG<\/th><\/tr><\/thead><tbody><tr><td>Specification<\/td><td>GIF89a, CompuServe \u2014 document dated 31 July 1990, copyright 1987\u20131990<\/td><td>PNG Third Edition, <strong>W3C Recommendation, 24 June 2025<\/strong><\/td><\/tr><tr><td>Colour<\/td><td>Up to <strong>256 entries<\/strong> per colour table (8-bit indexed only)<\/td><td>Greyscale, <strong>indexed (1\/2\/4\/8-bit)<\/strong>, or <strong>true colour at 8 or 16 bits per component<\/strong><\/td><\/tr><tr><td>Transparency<\/td><td>Binary. A Transparency Flag nominates one palette entry as the Transparent Color Index \u2014 a pixel is fully on or fully off<\/td><td><strong>Full alpha channel at 8 or 16 bits per sample<\/strong> \u2014 genuine semi-transparency<\/td><\/tr><tr><td>Compression<\/td><td>Variable-length-code <strong>LZW<\/strong><\/td><td><strong>deflate<\/strong> (32 KB window) with per-scanline prediction filters: None, Sub, Up, Average, Paeth<\/td><\/tr><tr><td>Lossy or lossless<\/td><td>Lossless <em>after<\/em> the 256-colour quantisation, which is itself destructive<\/td><td>Lossless. Nothing is discarded<\/td><\/tr><tr><td>Frame delay<\/td><td>Whole <strong>hundredths of a second<\/strong><\/td><td>A fraction: <code>delay_num<\/code> \/ <code>delay_den<\/code>, so any rate is exact<\/td><\/tr><tr><td>Frame regions<\/td><td>Yes<\/td><td>Yes (<code>fcTL<\/code> offsets and dimensions)<\/td><\/tr><tr><td>Loop control<\/td><td>Netscape application extension<\/td><td><code>num_plays<\/code> in <code>acTL<\/code><\/td><\/tr><tr><td>Fallback when unsupported<\/td><td>n\/a \u2014 universal<\/td><td>Renders the <strong>still first frame<\/strong><\/td><\/tr><tr><td>Browser support<\/td><td>Universal<\/td><td><strong>95.94%<\/strong> \u2014 Chrome 59+, Edge 79+, Firefox 3+, Safari 8+, Opera 46+<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The row that decides most real jobs is transparency. GIF\u2019s transparency is a single palette index \u2014 a pixel either shows or it doesn\u2019t, with no way to encode \u201cthis edge pixel is 40% opaque.\u201d So every anti-aliased curve has to be pre-blended against one assumed background colour, and that assumption becomes a visible fringe the moment the animation lands on any other background. APNG\u2019s 8-bit alpha stores that 40% directly, which is why the same sticker drops cleanly onto white, black, or a photo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"size\">The size myth: when APNG wins and when it loses<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cAPNG produces smaller files than GIF\u201d is repeated everywhere, and it is true only under a condition nobody states.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The condition is <strong>equal colour depth<\/strong>. Compare a 256-colour GIF against a 256-colour <em>indexed<\/em> APNG and APNG generally wins, for a straightforward reason: GIF compresses with variable-length-code LZW, an algorithm frozen in 1987, while PNG runs deflate over data first passed through per-scanline prediction filters (Sub, Up, Average, Paeth). Prediction plus a modern entropy coder beats LZW on almost any real image.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now change one thing. Encode the same animation as APNG in its natural mode \u2014 true colour with alpha \u2014 and the comparison inverts, because you are no longer comparing compressors. GIF\u2019s 256-colour quantisation is not a limitation sitting next to its compression; it <em>is<\/em> the bulk of its compression. A photographic or video-derived animation reduced to 256 dithered colours can be a fraction of the size of the same animation stored losslessly in 24-bit RGBA, and no amount of deflate tuning closes that gap.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"784\" src=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/apng-size-truth.png\" alt=\"Decision chain: at equal 256-colour depth APNG compresses smaller than GIF, but with APNG in true colour the GIF is usually smaller\" class=\"wp-image-2120\" srcset=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/apng-size-truth.png 1600w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/apng-size-truth-300x147.png 300w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/apng-size-truth-1024x502.png 1024w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/apng-size-truth-768x376.png 768w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/apng-size-truth-1536x753.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So the honest rule:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Flat-colour, synthetic animation<\/strong> \u2014 UI recordings, line art, logos, pixel art. APNG is competitive on size and strictly better on quality, because there was little colour to throw away.<\/li><li><strong>Photographic, gradient-heavy or video-derived animation.<\/strong> Expect the APNG to be <strong>larger<\/strong>, often much larger. You are buying colour fidelity and alpha, and paying in bytes.<\/li><li><strong>Anything needing semi-transparent edges.<\/strong> Size is the wrong question \u2014 GIF physically cannot represent the picture; APNG can.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If your actual goal was \u201csmaller file,\u201d neither format is the answer. A modern codec is: <a href=\"https:\/\/www.xconvert.com\/blog\/convert-gif-to-webp\/\">convert the GIF to WebP<\/a> for a format with both lossy and lossless modes plus a real alpha channel, or <a href=\"https:\/\/www.xconvert.com\/blog\/convert-gif-to-mp4\/\">convert it to MP4<\/a> if it is really a video wearing an animation format\u2019s clothes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"timing\">Frame timing: GIF\u2019s hundredth-of-a-second problem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GIF89a\u2019s Graphic Control Extension defines Delay Time as \u201cthe number of hundredths (1\/100) of a second to wait before continuing with the processing of the Data Stream.\u201d Whole hundredths. That means <strong>a GIF can only play at rates that divide 100 evenly<\/strong> \u2014 50, 25, 20, 10, 5, 2 and 1 FPS are exact; anything else rounds to the nearest centisecond and plays at a different speed than the number you asked for. APNG\u2019s <code>fcTL<\/code> stores delay as a rational fraction, <code>delay_num<\/code> over <code>delay_den<\/code>, so 1\/30 of a second is exactly 1\/30 of a second.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is what the rounding costs, for the rates in xconvert\u2019s own Framerate dropdown:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>You ask for<\/th><th>Nearest GIF delay<\/th><th>GIF actually plays at<\/th><th>APNG plays at<\/th><\/tr><\/thead><tbody><tr><td>50 FPS<\/td><td>2\/100 s<\/td><td>50 FPS \u2014 exact<\/td><td>50 FPS<\/td><\/tr><tr><td>30 FPS<\/td><td>3\/100 s<\/td><td><strong>\u224833.3 FPS<\/strong><\/td><td><strong>33 FPS<\/strong><\/td><\/tr><tr><td>25 FPS<\/td><td>4\/100 s<\/td><td>25 FPS \u2014 exact<\/td><td>25 FPS<\/td><\/tr><tr><td>20 FPS<\/td><td>5\/100 s<\/td><td>20 FPS \u2014 exact<\/td><td>20 FPS<\/td><\/tr><tr><td>15 FPS<\/td><td>7\/100 s<\/td><td><strong>\u224814.3 FPS<\/strong><\/td><td><strong>14 FPS<\/strong><\/td><\/tr><tr><td>12 FPS<\/td><td>8\/100 s<\/td><td><strong>12.5 FPS<\/strong><\/td><td>12 FPS<\/td><\/tr><tr><td>10 FPS<\/td><td>10\/100 s<\/td><td>10 FPS \u2014 exact<\/td><td>10 FPS<\/td><\/tr><tr><td>8 FPS<\/td><td>12\/100 s<\/td><td><strong>\u22488.3 FPS<\/strong><\/td><td>8 FPS<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two of those APNG cells need a footnote, because they are our doing rather than the format\u2019s. The <strong>Framerate<\/strong> dropdown is shared with the GIF pages, so it stores 30 FPS as the centisecond-friendly value <code>100\/3<\/code> and 15 FPS as <code>100\/7<\/code>. An APNG frame delay is an exact fraction, so the APNG path collapses those to whole rates before encoding \u2014 <code>100\/3<\/code> becomes 33 and <code>100\/7<\/code> becomes 14. Pick 50, 25, 20, 12, 10, 8, 5, 2 or 1 FPS and you get exactly the number on the label; pick 30 or 15 and the APNG plays a little off it \u2014 33 FPS in the first case, 14 in the second. The container is still exact \u2014 1\/33 of a second is stored precisely \u2014 it is the requested rate that gets rounded.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a three-second loop the drift is imperceptible. For an animation that has to line up with something else \u2014 a UI beat, a countdown, a loop stitched to another asset \u2014 it is the difference between matching and slowly sliding out of phase.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"support\">Where each format actually plays<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GIF is universal and will stay that way; nothing displaces a format every decoder written since 1990 can read.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">APNG sits at <strong>95.94% global support<\/strong> per <a href=\"https:\/\/caniuse.com\/apng\">caniuse<\/a>: Chrome from 59, Edge from 79, Firefox from 3, Safari from 8 (including iOS Safari 8), Opera from 46. The gaps are Internet Explorer and Opera Mini. Outside browsers support is patchier \u2014 plenty of desktop viewers, chat clients and CMS thumbnailers read an APNG\u2019s first frame and quietly treat it as a still PNG.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plan around that failure mode; it is benign. <strong>An unsupporting client shows frame one<\/strong>, because the animation chunks are ancillary and skippable \u2014 so design your first frame to work as a poster image. Also check which extension your destination expects: an APNG is a valid PNG stream, and some platforms want <code>.png<\/code> while others look for <code>.apng<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tool\">Convert a GIF to APNG on xconvert<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/www.xconvert.com\/convert-gif-to-apng\">xconvert GIF to APNG converter<\/a> rebuilds the animation frame by frame rather than renaming a container, so colour depth and the alpha channel are genuinely rewritten.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Open <a href=\"https:\/\/www.xconvert.com\/convert-gif-to-apng\">xconvert.com\/convert-gif-to-apng<\/a> and click <strong>Upload<\/strong> to add your GIF \u2014 or drag it onto the drop zone. Google Drive and Dropbox also work.<\/li><li>Open <strong>Advanced Options<\/strong> to reveal the controls.<\/li><li>Check the <strong>Framerate<\/strong> dropdown. It opens on <strong>10 FPS (Recommended)<\/strong> \u2014 fine for a screen recording, too slow for a smooth motion graphic. If your source GIF is livelier than that, raise it to 20, 25 or 50 FPS \u2014 those land exactly on the label. The 30 and 15 entries land at 33 and 14 for the reason set out in the timing section above. This is the setting most worth changing here.<\/li><li>Under <strong>Image resolution<\/strong>, keep <strong>Keep original<\/strong> for a faithful conversion, or scale down with <strong>Resolution Percentage<\/strong>, a <strong>Preset Resolutions<\/strong> entry, or an exact <strong>Width \u00d7 Height<\/strong>.<\/li><li>Uploading several GIFs? <strong>Combine?<\/strong> \u2192 <strong>Single animation<\/strong> stitches them into one APNG; <strong>Individual files<\/strong> returns one per input.<\/li><li>Click <strong>Convert<\/strong> and download.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Files are uploaded over an encrypted connection, processed on our servers, and deleted automatically a few hours later. No sign-up, no watermark.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Going the other way is <a href=\"https:\/\/www.xconvert.com\/convert-apng-to-gif\">APNG to GIF<\/a> \u2014 with the same trade in reverse: you lose the alpha channel and everything past 256 colours.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h5 class=\"wp-block-heading\">Is APNG smaller than GIF?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Not by default. At the <em>same<\/em> colour depth \u2014 a 256-colour indexed APNG against a 256-colour GIF \u2014 APNG usually wins, because deflate with PNG\u2019s prediction filters compresses better than GIF\u2019s 1987-vintage LZW. But APNG\u2019s normal mode is lossless 24-bit true colour with an 8-bit alpha channel, and against that a GIF has already discarded almost the entire colour space. For photographic or video-derived animation the GIF is frequently the smaller file, sometimes dramatically. Convert to APNG for quality and transparency, not for size.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Is APNG a real standard or still a Mozilla extension?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">It is a real standard. Animation was folded into the <strong>PNG Specification (Third Edition)<\/strong>, which became a W3C Recommendation on <strong>24 June 2025<\/strong>, defining the <code>acTL<\/code>, <code>fcTL<\/code> and <code>fdAT<\/code> chunks. Before that, APNG had been a widely-implemented but formally non-standard extension for roughly two decades \u2014 which is why a lot of older writing still describes it as unofficial.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Will an APNG still show up if the browser doesn\u2019t support it?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, as a static image. The animation chunks are ancillary, so a decoder that doesn\u2019t recognise them skips them and renders the base PNG image \u2014 the viewer sees your first frame rather than a broken image. That is a meaningfully better failure mode than most alternatives, and it means you should treat frame one as a deliberate poster frame.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Why does my GIF logo have white edges and the APNG doesn\u2019t?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Because GIF transparency is a single flag plus one Transparent Color Index: a pixel is either fully visible or fully invisible. There is no way to store a half-opaque pixel, so anti-aliased edges have to be pre-blended against an assumed background \u2014 usually white. Put that GIF on a dark page and the pre-blended pixels show as a fringe. APNG stores a real 8-bit alpha value per pixel, so the same edge composites correctly against any background.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Should I use APNG or WebP for an animated logo?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">WebP if you control the delivery and want the smallest file: it has an alpha channel <em>and<\/em> a lossy mode, which APNG lacks entirely. APNG if you want a lossless master, the widest still-image fallback behaviour, or a destination that specifically accepts PNG\/APNG but not WebP. The two overlap heavily; the deciding question is usually whether you can accept lossy compression. See <a href=\"https:\/\/www.xconvert.com\/blog\/convert-gif-to-webp\/\">GIF to WebP<\/a> for that route.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Does APNG support more than 256 colours per frame?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. PNG\u2019s colour types cover greyscale, indexed colour at 1, 2, 4 or 8 bits, true colour at 8 or 16 bits per component, and both greyscale and true colour with alpha. Animated GIF is restricted to 8-bit indexed colour \u2014 a maximum of 256 entries per colour table. That difference is why gradients that band and dither in a GIF stay smooth in an APNG.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Last verified 2026-08-31.<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.w3.org\/TR\/png-3\/\">W3C \u2014 Portable Network Graphics (PNG) Specification (Third Edition)<\/a> \u2014 W3C Recommendation, 24 June 2025; <code>acTL<\/code>\/<code>fcTL<\/code>\/<code>fdAT<\/code> chunk definitions, <code>delay_num<\/code>\/<code>delay_den<\/code>, <code>dispose_op<\/code>\/<code>blend_op<\/code>, colour types and bit depths, deflate compression and the five filter types.<\/li><li><a href=\"https:\/\/www.w3.org\/Graphics\/GIF\/spec-gif89a.txt\">W3C-hosted GIF89a specification (CompuServe)<\/a> \u2014 document dated 31 July 1990; 256-entry colour table limit, Transparency Flag and Transparent Color Index, Delay Time in hundredths of a second, variable-length-code LZW.<\/li><li><a href=\"https:\/\/caniuse.com\/apng\">caniuse \u2014 APNG (Animated PNG)<\/a> \u2014 95.94% global support; Chrome 59+, Edge 79+, Firefox 3+, Safari 8+, Opera 46+; unsupported browsers show the first frame only.<\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Media\/Guides\/Formats\/Image_types\">MDN \u2014 Image file type and format guide<\/a> \u2014 APNG introduced by Mozilla; APNG colour-depth options versus animated GIF\u2019s 8-bit indexed colour.<\/li><li>xconvert conversion configuration and APNG encoder, checked 2026-08-31 \u2014 the shared <strong>Framerate<\/strong> dropdown stores 30 FPS as <code>100\/3<\/code> and 15 FPS as <code>100\/7<\/code> (the centisecond values GIF needs), and the APNG path rounds a <code>100\/N<\/code> rate to the nearest whole number before extraction, so those two entries encode at 33 and 14 FPS. <code>100\/8<\/code> (12 FPS) and <code>100\/12<\/code> (8 FPS) round back to their own labels.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing &#8211; but APNG is often the bigger file. Here is when each one actually wins.<\/p>\n","protected":false},"author":3,"featured_media":2121,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,14],"tags":[],"class_list":["post-2123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to-guides","category-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>APNG vs GIF: Real Transparency, True Colour, Not Smaller<\/title>\n<meta name=\"description\" content=\"APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing - but APNG is often the bigger file. Here is when each one actually wins.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.xconvert.com\/blog\/apng-vs-gif\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"APNG vs GIF: Real Transparency, True Colour, Not Smaller\" \/>\n<meta property=\"og:description\" content=\"APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing - but APNG is often the bigger file. Here is when each one actually wins.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.xconvert.com\/blog\/apng-vs-gif\" \/>\n<meta property=\"og:site_name\" content=\"XConvert Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/xconvertcom\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-06T14:13:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-60.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"840\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"James\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@xconvert_com\" \/>\n<meta name=\"twitter:site\" content=\"@xconvert_com\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"James\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif\"},\"author\":{\"name\":\"James\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/3434db135e6a7f239ba8414244df9845\"},\"headline\":\"APNG vs GIF: Real Transparency, True Colour, Not Smaller\",\"datePublished\":\"2026-11-06T14:13:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif\"},\"wordCount\":2240,\"image\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-60.png\",\"articleSection\":[\"How To Guides\",\"Tools\"],\"inLanguage\":\"en-CA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif\",\"name\":\"APNG vs GIF: Real Transparency, True Colour, Not Smaller\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-60.png\",\"datePublished\":\"2026-11-06T14:13:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/3434db135e6a7f239ba8414244df9845\"},\"description\":\"APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing - but APNG is often the bigger file. Here is when each one actually wins.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#primaryimage\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-60.png\",\"contentUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-60.png\",\"width\":1600,\"height\":840,\"caption\":\"The xconvert GIF to APNG converter at \\\/convert-gif-to-apng with the Upload button highlighted - upload a GIF to rebuild it as an APNG\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/apng-vs-gif#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.xconvert.com\\\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"APNG vs GIF: Real Transparency, True Colour, Not Smaller\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/\",\"name\":\"XConvert Blog\",\"description\":\"Blog for XConvert file converter\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/3434db135e6a7f239ba8414244df9845\",\"name\":\"James\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/46be416a360dc6b95bffc4b116d86872c03f8d8e4c1047a3a08033742f03d04d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/46be416a360dc6b95bffc4b116d86872c03f8d8e4c1047a3a08033742f03d04d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/46be416a360dc6b95bffc4b116d86872c03f8d8e4c1047a3a08033742f03d04d?s=96&d=mm&r=g\",\"caption\":\"James\"},\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/author\\\/james\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"APNG vs GIF: Real Transparency, True Colour, Not Smaller","description":"APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing - but APNG is often the bigger file. Here is when each one actually wins.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif","og_locale":"en_US","og_type":"article","og_title":"APNG vs GIF: Real Transparency, True Colour, Not Smaller","og_description":"APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing - but APNG is often the bigger file. Here is when each one actually wins.","og_url":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif","og_site_name":"XConvert Blog","article_publisher":"https:\/\/www.facebook.com\/xconvertcom","article_published_time":"2026-11-06T14:13:00+00:00","og_image":[{"width":1600,"height":840,"url":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-60.png","type":"image\/png"}],"author":"James","twitter_card":"summary_large_image","twitter_creator":"@xconvert_com","twitter_site":"@xconvert_com","twitter_misc":{"Written by":"James","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#article","isPartOf":{"@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif"},"author":{"name":"James","@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/3434db135e6a7f239ba8414244df9845"},"headline":"APNG vs GIF: Real Transparency, True Colour, Not Smaller","datePublished":"2026-11-06T14:13:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif"},"wordCount":2240,"image":{"@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#primaryimage"},"thumbnailUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-60.png","articleSection":["How To Guides","Tools"],"inLanguage":"en-CA"},{"@type":"WebPage","@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif","url":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif","name":"APNG vs GIF: Real Transparency, True Colour, Not Smaller","isPartOf":{"@id":"https:\/\/www.xconvert.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#primaryimage"},"image":{"@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#primaryimage"},"thumbnailUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-60.png","datePublished":"2026-11-06T14:13:00+00:00","author":{"@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/3434db135e6a7f239ba8414244df9845"},"description":"APNG vs GIF compared: 8-bit alpha, 16.7M colours and exact frame timing - but APNG is often the bigger file. Here is when each one actually wins.","breadcrumb":{"@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.xconvert.com\/blog\/apng-vs-gif"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#primaryimage","url":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-60.png","contentUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-60.png","width":1600,"height":840,"caption":"The xconvert GIF to APNG converter at \/convert-gif-to-apng with the Upload button highlighted - upload a GIF to rebuild it as an APNG"},{"@type":"BreadcrumbList","@id":"https:\/\/www.xconvert.com\/blog\/apng-vs-gif#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.xconvert.com\/blog"},{"@type":"ListItem","position":2,"name":"APNG vs GIF: Real Transparency, True Colour, Not Smaller"}]},{"@type":"WebSite","@id":"https:\/\/www.xconvert.com\/blog\/#website","url":"https:\/\/www.xconvert.com\/blog\/","name":"XConvert Blog","description":"Blog for XConvert file converter","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.xconvert.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":"Person","@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/3434db135e6a7f239ba8414244df9845","name":"James","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/secure.gravatar.com\/avatar\/46be416a360dc6b95bffc4b116d86872c03f8d8e4c1047a3a08033742f03d04d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/46be416a360dc6b95bffc4b116d86872c03f8d8e4c1047a3a08033742f03d04d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/46be416a360dc6b95bffc4b116d86872c03f8d8e4c1047a3a08033742f03d04d?s=96&d=mm&r=g","caption":"James"},"url":"https:\/\/www.xconvert.com\/blog\/author\/james"}]}},"_links":{"self":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/2123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/comments?post=2123"}],"version-history":[{"count":1,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/2123\/revisions"}],"predecessor-version":[{"id":2124,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/2123\/revisions\/2124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/media\/2121"}],"wp:attachment":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/media?parent=2123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/categories?post=2123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/tags?post=2123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}