{"id":21251,"date":"2020-03-15T10:35:00","date_gmt":"2020-03-15T10:35:00","guid":{"rendered":"http:\/\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4"},"modified":"2025-08-21T12:20:44","modified_gmt":"2025-08-21T19:20:44","slug":"reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4","title":{"rendered":"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Short <a href=\"https:\/\/cloudinary.com\/video_api\">videos<\/a> of animated GIFs are spreading like wildfire around the web, especially in media and news sites, and people frequently share animated GIFs on social apps. However, because those GIFs are not optimized, their sizes are huge, consuming heavy bandwidth and slowing down page loads. Also, resizing and transforming a large number of animated GIFs, one by one, to match the graphic design of your site or app is a lengthy, CPU-intensive process.<\/p>\n<p>Since animated GIFs serve mainly as short videos, an effective way to reduce their file size is to convert the image format to a modern video format like WebM or MP4. Afterwards, you can still display the same animated content but would consume less bandwidth, accelerate page loads, and save server resources. All modern browsers support the HTML5 <code>&lt;video&gt;<\/code> tag and embedding of short videos as MP4 or WebM.<\/p>\n<p>The first step is to convert all uploaded GIFs to video. However, not all browsers support all video formats; the MP4 or WebM container format works on only certain browsers. That means you must selectively convert your GIFs to the appropriate format for the viewing browser, which is a daunting challenge.<\/p>\n<p>Look to Cloudinary\u2019s cloud-based image-management service for an <strong>automated conversion of animated GIFs to MP4s or WebMs<\/strong> for all modern browsers. Cloudinary also dynamically resizes, crops, and transforms those short videos to match your site design.<\/p>\n<h2>Conversion of Animated GIFs to MP4 and WebM Videos<\/h2>\n<p>To start using Cloudinary, first set up an account there and then upload images to your account\u2019s Media Library. Cloudinary transforms those images on the fly according to the parameters you add to the dynamic URLs, which you can easily construct with one of Cloudinary\u2019s client libraries (SDKs) for all popular development frameworks.<\/p>\n<p>To automatically convert an animated GIF to a WebM or MP4 video, set the <code>format<\/code> parameter in the dynamic URL to <code>webm<\/code> or <code>mp4<\/code>. For example, the following high-quality, animated GIF was uploaded to Cloudinary, which assigned the image the <code>kitten_fighting<\/code> identifier:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;kitten_fighting.gif\\&quot; &gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;kitten_fighting.gif\\&quot; &gt;\\n\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt;\\n\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt;\\n\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;kitten_fighting.gif&#039;).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;kitten_fighting.gif&#039;).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).image()&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).image()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;kitten_fighting.gif&#039;));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;kitten_fighting.gif&#039;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().imageTag(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().imageTag(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.BuildImageTag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.BuildImageTag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation());&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().generate(\\&quot;kitten_fighting.gif\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().generate(\\&quot;kitten_fighting.gif\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().generate(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().generate(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation());&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;kitten_fighting.gif\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;kitten_fighting.gif\\&quot;) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/kitten_fighting.gif&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[],&quot;transformation_string&quot;:&quot;&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;kitten_fighting.gif&quot;,&quot;extension&quot;:&quot;gif&quot;,&quot;format&quot;:&quot;gif&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.gif\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.gif\" alt=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.gif\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"320\" height=\"180\"\/><\/a><\/p>\n<div style=\"clear: both\"><\/div>\n<p>Weighing <strong>6.3 MB<\/strong>, this GIF takes a long time to load. Setting the format (file extension) to <code>mp4<\/code> dynamically converts the <a href=\"https:\/\/cloudinary.com\/glossary\/interlaced-gif\">GIF<\/a> to an MP4 video, after which Cloudinary caches it persistently and delivers it through a content delivery network (CDN):<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.mp4\" title=\"with_code: false\">https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.mp4<\/a><\/p>\n<p><video width=\"320\" height=\"180\" autoplay loop muted=\"muted\" poster=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.jpg\"><source type=\"video\/mp4\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.mp4\"><\/video><\/p>\n<p>The automatically generated MP4 video weighs <strong>311 KB<\/strong>, only <strong>5 percent<\/strong> of the original GIF, a considerable savings in bandwidth and load time.<\/p>\n<p>Converting the same GIF to a WebM video involves setting the file extension to <code>webm<\/code>. Below is the video generated by Cloudinary, weighing only 467 KB.<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.webm\" title=\"with_code: false\">https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.webm<\/a><\/p>\n<p><video width=\"320\" height=\"180\" autoplay loop muted=\"muted\" poster=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.jpg\"><source type=\"video\/webm\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.webm\"><\/video><\/p>\n<p>A common practice of implementing animation with video is to display a single frame with a Play button, clicking which starts the actual video. Cloudinary can handle that implementation dynamically. The following image, converted to JPEG by Cloudinary and weighing only <strong>5.6 KB<\/strong>, is a 150&#215;100 thumbnail with a semitransparent overlay of a previously uploaded Play button:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;kitten_fighting.jpg\\&quot;, {transformation: [ {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;}, {overlay: \\&quot;play_button\\&quot;, width: \\&quot;0.4\\&quot;, flags: \\&quot;relative\\&quot;, opacity: 60} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;kitten_fighting.jpg\\&quot;, {transformation: [\\n  {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {overlay: \\&quot;play_button\\&quot;, width: \\&quot;0.4\\&quot;, flags: \\&quot;relative\\&quot;, opacity: 60}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;kitten_fighting.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;150\\&quot; height=\\&quot;100\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;play_button\\&quot; width=\\&quot;0.4\\&quot; flags=\\&quot;relative\\&quot; opacity=\\&quot;60\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;kitten_fighting.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;150\\&quot; height=\\&quot;100\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;play_button\\&quot; width=\\&quot;0.4\\&quot; flags=\\&quot;relative\\&quot; opacity=\\&quot;60\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;kitten_fighting.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;150\\&quot; height=\\&quot;100\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;play_button\\&quot; width=\\&quot;0.4\\&quot; flags=\\&quot;relative\\&quot; opacity=\\&quot;60\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;kitten_fighting.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;150\\&quot; height=\\&quot;100\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;play_button\\&quot; width=\\&quot;0.4\\&quot; flags=\\&quot;relative\\&quot; opacity=\\&quot;60\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;kitten_fighting.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;150\\&quot; height=\\&quot;100\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;play_button\\&quot; width=\\&quot;0.4\\&quot; flags=\\&quot;relative\\&quot; opacity=\\&quot;60\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;kitten_fighting.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;150\\&quot; height=\\&quot;100\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;play_button\\&quot; width=\\&quot;0.4\\&quot; flags=\\&quot;relative\\&quot; opacity=\\&quot;60\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;kitten_fighting.jpg&#039;, {transformation: [ {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;play_button\\&quot;), width: \\&quot;0.4\\&quot;, flags: \\&quot;relative\\&quot;, opacity: 60} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;kitten_fighting.jpg&#039;, {transformation: [\\n  {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;play_button\\&quot;), width: \\&quot;0.4\\&quot;, flags: \\&quot;relative\\&quot;, opacity: 60}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;).image(transformation=[ {&#039;width&#039;: 150, &#039;height&#039;: 100, &#039;gravity&#039;: \\&quot;north\\&quot;, &#039;crop&#039;: \\&quot;fill\\&quot;}, {&#039;overlay&#039;: \\&quot;play_button\\&quot;, &#039;width&#039;: \\&quot;0.4\\&quot;, &#039;flags&#039;: \\&quot;relative\\&quot;, &#039;opacity&#039;: 60} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;).image(transformation=[\\n  {&#039;width&#039;: 150, &#039;height&#039;: 100, &#039;gravity&#039;: \\&quot;north\\&quot;, &#039;crop&#039;: \\&quot;fill\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;play_button\\&quot;, &#039;width&#039;: \\&quot;0.4\\&quot;, &#039;flags&#039;: \\&quot;relative\\&quot;, &#039;opacity&#039;: 60}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;kitten_fighting.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(150)\\n-&gt;height(100)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;play_button\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(0.4)\\n\\t-&gt;relative()\\n\\t)\\n\\t-&gt;adjust(Adjust::opacity(60)))\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;kitten_fighting.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(150)\\n-&gt;height(100)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;play_button\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(0.4)\\n\\t-&gt;relative()\\n\\t)\\n\\t-&gt;adjust(Adjust::opacity(60)))\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;width\\&quot;=&gt;150, \\&quot;height\\&quot;=&gt;100, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;play_button\\&quot;, \\&quot;width\\&quot;=&gt;\\&quot;0.4\\&quot;, \\&quot;flags\\&quot;=&gt;\\&quot;relative\\&quot;, \\&quot;opacity\\&quot;=&gt;60) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;width\\&quot;=&gt;150, \\&quot;height\\&quot;=&gt;100, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;play_button\\&quot;, \\&quot;width\\&quot;=&gt;\\&quot;0.4\\&quot;, \\&quot;flags\\&quot;=&gt;\\&quot;relative\\&quot;, \\&quot;opacity\\&quot;=&gt;60)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(150).height(100).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;play_button\\&quot;)).width(0.4).flags(\\&quot;relative\\&quot;).opacity(60)).imageTag(\\&quot;kitten_fighting.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .width(150).height(100).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;play_button\\&quot;)).width(0.4).flags(\\&quot;relative\\&quot;).opacity(60)).imageTag(\\&quot;kitten_fighting.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.jpg\\&quot;, transformation: [ {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;}, {overlay: \\&quot;play_button\\&quot;, width: 0.4, flags: \\&quot;relative\\&quot;, opacity: 60} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.jpg\\&quot;, transformation: [\\n  {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {overlay: \\&quot;play_button\\&quot;, width: 0.4, flags: \\&quot;relative\\&quot;, opacity: 60}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(150).Height(100).Gravity(\\&quot;north\\&quot;).Crop(\\&quot;fill\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;play_button\\&quot;)).Width(0.4).Flags(\\&quot;relative\\&quot;).Opacity(60)).BuildImageTag(\\&quot;kitten_fighting.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Width(150).Height(100).Gravity(\\&quot;north\\&quot;).Crop(\\&quot;fill\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;play_button\\&quot;)).Width(0.4).Flags(\\&quot;relative\\&quot;).Opacity(60)).BuildImageTag(\\&quot;kitten_fighting.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(100)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;play_button\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(0.4)\\n\\t.relative()\\n\\t)\\n\\t.adjust(Adjust.opacity(60)))\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(100)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;play_button\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(0.4)\\n\\t.relative()\\n\\t)\\n\\t.adjust(Adjust.opacity(60)))\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(150).setHeight(100).setGravity(\\&quot;north\\&quot;).setCrop(\\&quot;fill\\&quot;).chain() .setOverlay(\\&quot;play_button\\&quot;).setWidth(0.4).setFlags(\\&quot;relative\\&quot;).setOpacity(60)).generate(\\&quot;kitten_fighting.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setWidth(150).setHeight(100).setGravity(\\&quot;north\\&quot;).setCrop(\\&quot;fill\\&quot;).chain()\\n  .setOverlay(\\&quot;play_button\\&quot;).setWidth(0.4).setFlags(\\&quot;relative\\&quot;).setOpacity(60)).generate(\\&quot;kitten_fighting.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(150).height(100).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;play_button\\&quot;)).width(0.4).flags(\\&quot;relative\\&quot;).opacity(60)).generate(\\&quot;kitten_fighting.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .width(150).height(100).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;play_button\\&quot;)).width(0.4).flags(\\&quot;relative\\&quot;).opacity(60)).generate(\\&quot;kitten_fighting.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(100)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;play_button\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(0.4)\\n\\t.relative()\\n\\t)\\n\\t.adjust(Adjust.opacity(60)))\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(100)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t)\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;play_button\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(0.4)\\n\\t.relative()\\n\\t)\\n\\t.adjust(Adjust.opacity(60)))\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;kitten_fighting.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(150)\\n height(100)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;play_button\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(0.4F)\\n\\t relative()\\n\\t })\\n\\t adjust(Adjust.opacity(60)) })\\n\\t })) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;kitten_fighting.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(150)\\n height(100)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;play_button\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(0.4F)\\n\\t relative()\\n\\t })\\n\\t adjust(Adjust.opacity(60)) })\\n\\t })) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;kitten_fighting.jpg\\&quot;, {transformation: [ {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;play_button\\&quot;), width: \\&quot;0.4\\&quot;, flags: \\&quot;relative\\&quot;, opacity: 60} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;kitten_fighting.jpg\\&quot;, {transformation: [\\n  {width: 150, height: 100, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;play_button\\&quot;), width: \\&quot;0.4\\&quot;, flags: \\&quot;relative\\&quot;, opacity: 60}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.jpg\\&quot;)\\n  .resize(\\n    fill()\\n      .width(150)\\n      .height(100)\\n      .gravity(compass(\\&quot;north\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      image(\\&quot;play_button\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(0.4).relative())\\n          .adjust(opacity(60))\\n      )\\n    )\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/w_150,h_100,c_fill,g_north\\\/l_play_button,w_0.4,fl_relative,o_60\\\/kitten_fighting.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;150&quot;,&quot;height&quot;:&quot;100&quot;,&quot;crop_mode&quot;:&quot;fill&quot;,&quot;gravity&quot;:&quot;north&quot;},{&quot;overlay&quot;:&quot;play_button&quot;,&quot;width&quot;:&quot;0.4&quot;,&quot;flags&quot;:&quot;relative&quot;,&quot;opacity&quot;:&quot;60&quot;}],&quot;transformation_string&quot;:&quot;w_150,h_100,c_fill,g_north\\\/l_play_button,w_0.4,fl_relative,o_60&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;kitten_fighting.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_100,c_fill,g_north\/l_play_button,w_0.4,fl_relative,o_60\/kitten_fighting.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_100,c_fill,g_north\/l_play_button,w_0.4,fl_relative,o_60\/kitten_fighting.jpg\" alt=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_100,c_fill,g_north\/l_play_button,w_0.4,fl_relative,o_60\/kitten_fighting.jpg\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"150\" height=\"100\"\/><\/a><\/p>\n<div style=\"clear: both\"><\/div>\n<h2>Resizing and Cropping of Animated GIFs and Conversion to Video<\/h2>\n<p>Your users might have uploaded to your site photos and animations of various dimensions and aspect ratios. Like most websites and mobile apps, you must resize and crop that content to match the site design, such as by creating a uniform square thumbnail for all user-uploaded animations.<\/p>\n<p>Cloudinary can resize and crop animated GIFs in the cloud through dynamic transformation and delivery URLs. The following URL creates a 150&#215;150, centered-cropped, and resized thumbnail of the original:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;, {width: 150, height: 150, crop: \\&quot;fill\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;, {width: 150, height: 150, crop: \\&quot;fill\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;kitten_fighting.gif\\&quot; &gt; &lt;Transformation width=\\&quot;150\\&quot; height=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;kitten_fighting.gif\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;150\\&quot; height=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt; &lt;cld-transformation width=\\&quot;150\\&quot; height=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;150\\&quot; height=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt; &lt;cl-transformation width=\\&quot;150\\&quot; height=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;kitten_fighting.gif\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;150\\&quot; height=\\&quot;150\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;kitten_fighting.gif&#039;, {width: 150, height: 150, crop: \\&quot;fill\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;kitten_fighting.gif&#039;, {width: 150, height: 150, crop: \\&quot;fill\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).image(width=150, height=150, crop=\\&quot;fill\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).image(width=150, height=150, crop=\\&quot;fill\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;kitten_fighting.gif&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(150)\\n-&gt;height(150));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;kitten_fighting.gif&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(150)\\n-&gt;height(150));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;, array(\\&quot;width\\&quot;=&gt;150, \\&quot;height\\&quot;=&gt;150, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;, array(\\&quot;width\\&quot;=&gt;150, \\&quot;height\\&quot;=&gt;150, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(150).height(150).crop(\\&quot;fill\\&quot;)).imageTag(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(150).height(150).crop(\\&quot;fill\\&quot;)).imageTag(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;, width: 150, height: 150, crop: \\&quot;fill\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;kitten_fighting.gif\\&quot;, width: 150, height: 150, crop: \\&quot;fill\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(150).Height(150).Crop(\\&quot;fill\\&quot;)).BuildImageTag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(150).Height(150).Crop(\\&quot;fill\\&quot;)).BuildImageTag(\\&quot;kitten_fighting.gif\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(150)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(150)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(150).setHeight(150).setCrop(\\&quot;fill\\&quot;)).generate(\\&quot;kitten_fighting.gif\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(150).setHeight(150).setCrop(\\&quot;fill\\&quot;)).generate(\\&quot;kitten_fighting.gif\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(150).height(150).crop(\\&quot;fill\\&quot;)).generate(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(150).height(150).crop(\\&quot;fill\\&quot;)).generate(\\&quot;kitten_fighting.gif\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(150)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;kitten_fighting.gif&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(150)\\n.height(150)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;kitten_fighting.gif\\&quot;)\\n\\t resize(Resize.fill() { width(150)\\n height(150) }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;kitten_fighting.gif\\&quot;)\\n\\t resize(Resize.fill() { width(150)\\n height(150) }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;, {width: 150, height: 150, crop: \\&quot;fill\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;kitten_fighting.gif\\&quot;, {width: 150, height: 150, crop: \\&quot;fill\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;kitten_fighting.gif\\&quot;).resize(\\n  fill().width(150).height(150)\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/w_150,h_150,c_fill\\\/kitten_fighting.gif&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;150&quot;,&quot;height&quot;:&quot;150&quot;,&quot;crop_mode&quot;:&quot;fill&quot;}],&quot;transformation_string&quot;:&quot;w_150,h_150,c_fill&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;kitten_fighting.gif&quot;,&quot;extension&quot;:&quot;gif&quot;,&quot;format&quot;:&quot;gif&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.gif\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.gif\" alt=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.gif\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"150\" height=\"150\"\/><\/a><\/p>\n<div style=\"clear: both\"><\/div>\n<p>Though optimized, the above high-quality animated GIF still weighs <strong>2.5 MB<\/strong>, which seems an overkill for such a small image. Converting animated GIFs to WebM or MP4 videos results in much smaller files while maintaining the same visual quality. With the file extension set to <code>mp4,<\/code> the following URL dynamically creates the same 150&#215;150, cropped version of the animation while converting it to the MP4 video format. The generated MP4 looks great, weighing only <strong>106 KB<\/strong>, a size reduction of <strong>96 percent<\/strong>.<\/p>\n<p><a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.mp4\" title=\"with_code: false\">https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.mp4<\/a><\/p>\n<p><video width=\"150\" height=\"150\" autoplay loop muted=\"muted\" poster=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.jpg\"><source type=\"video\/mp4\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.mp4\"><source type=\"video\/webm\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.webm\">Your browser does not support HTML5 video tag. <a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_150,h_150,c_fill\/kitten_fighting.gif\">Click here to view original GIF<\/a><\/video><\/p>\n<h2>HTML5 <video> Tag With MP4 and WebM Sources<\/h2>\n<p>Not all browsers support all video formats. Chrome supports both MP4 and WebM; Firefox, only WebM; and Internet Explorer, only MP4. However, the HTML5 <code>&lt;video&gt;<\/code> tag, with which you can specify multiple source types for the same video, works in most modern browsers. That means you can specify both the dynamic Cloudinary URL, which converts the animation to MP4; and the alternative URL, which converts the animation to WebM. Afterwards, browsers would play the video in the format that they support.<\/p>\n<p>The following HTML snippet creates a 320&#215;180 auto-play <code>&lt;video&gt;<\/code> tag, specifying the MP4 and WebM URLs in addition to a still-frame JPEG poster. Also included is alternative content that links to the original GIF.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"320\"<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"180\"<\/span> <span class=\"hljs-attr\">autoplay<\/span> <span class=\"hljs-attr\">loop<\/span> <span class=\"hljs-attr\">muted<\/span>=<span class=\"hljs-string\">\"muted\"<\/span> \n  <span class=\"hljs-attr\">poster<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.jpg\"<\/span>&gt;<\/span>\n\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/mp4\"<\/span>\n      <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.mp4\"<\/span>&gt;<\/span>\n        \n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/webm\"<\/span>\n      <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.webm\"<\/span>&gt;<\/span>\n        \n  Your browser does not support HTML5 video tag. \n        \n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/kitten_fighting.gif\"<\/span>&gt;<\/span>Click here to view original GIF<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">a<\/span>&gt;<\/span> \n  \n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h2>Summary<\/h2>\n<p>Resizing and cropping animated GIFs, a significant part of online media, takes substantial bandwidth and server resources. Instead, convert uploaded animated GIFs to videos, which offer the same visual quality for considerably less bandwidth, faster loading, and an enhanced user experience.<\/p>\n<p>Cloudinary handles that conversion for you through automation in the cloud in three steps:<\/p>\n<ol>\n<li>Convert animated GIFs to MP4s and WebMs through dynamic URLs.<\/li>\n<li>Resize, crop, and transform the videos generated in step 1.<\/li>\n<li>Optimize the transformed videos through a fast CDN.<\/li>\n<\/ol>\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>The animated WebP format, an alternative to animated GIF, also works on Chrome. Cloudinary supports automated conversion to WebP, serving animated WebPs to browsers that support that format and other formats to other browsers, as appropriate. For more details, see our <a href=\"https:\/\/cloudinary.com\/blog\/animated_webp_how_to_convert_animated_gif_to_webp_and_save_up_to_90_bandwidth\">blog post on animated WebPs<\/a>.<\/p><\/div>\n<p>Conversion of animated GIFs to MP4s and WebMs, as well as all other transformation capabilities, are available in all Cloudinary plans, including the <a href=\"https:\/\/cloudinary.com\/users\/register\/free\">free tier<\/a>. We welcome your feedback.<\/p>\n<hr \/>\n<h2>Further Reading on Video Transformation<\/h2>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/video_api\"><em>Video Transcoding\nand transformation<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/top_10_mistakes_in_handling_website_videos_and_how_to_solve_them\"><em>Top 10 Mistakes in Handling Website Videos and How to Solve Them<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_automate_compression_of_video_files_with_one_line_of_code\"><em>How to Compress Video Size Automatically With One Line of Code<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/exoplayer_android_tutorial_easy_video_delivery_and_editing\"><em>ExoPlayer Android Tutorial: Easy Video Delivery and Editing<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/html5_video_player\"><em>Ultimate HTML5 Video Player Showdown: 10 Players Compared<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\"><em>How to Generate Waveform Images From Audio Files<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/with_automatic_video_subtitles_silence_speaks_volumes\"><em>Auto-Generate Subtitles Based on Video Transcript<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/auto_generate_video_previews_with_great_results_every_time\"><em>Auto-Generate Video Previews With Great Results Every Time<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/html5_video_tags_won_t_do_for_your_videos\"><em>Adaptive HLS Streaming Using the HTML5 Video Tag<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\"><em>Video Optimization With the HTML5 &lt;\\video&gt; Player<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/converting_android_videos_to_animated_gif_images_with_cloudinary_a_tutorial\"><em>Converting Android Videos to Animated GIF Images With Cloudinary: A Tutorial<\/em><\/a>\n<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21252,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[91,92,426,165,176,183,214,227,229,257,305],"class_list":["post-21251","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-django","tag-dotnet","tag-featured","tag-image-transformation","tag-java","tag-jquery","tag-node","tag-performance-optimization","tag-php","tag-ruby-on-rails","tag-video-api"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Animated GIF? Convert to WebM or MP4<\/title>\n<meta name=\"description\" content=\"Converting heavy animated GIFs to efficient WebM or MP4 videos with the HTML5 tag is an automated process in Cloudinary.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation\" \/>\n<meta property=\"og:description\" content=\"Converting heavy animated GIFs to efficient WebM or MP4 videos with the HTML5 tag is an automated process in Cloudinary.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-15T10:35:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-21T19:20:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation\",\"datePublished\":\"2020-03-15T10:35:00+00:00\",\"dateModified\":\"2025-08-21T19:20:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\"},\"wordCount\":15,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA\",\"keywords\":[\"Django\",\"DotNet\",\"Featured\",\"Image Transformation\",\"Java\",\"jQuery\",\"Node\",\"Performance Optimization\",\"PHP\",\"Ruby on Rails\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2020\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\",\"url\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\",\"name\":\"Animated GIF? Convert to WebM or MP4\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA\",\"datePublished\":\"2020-03-15T10:35:00+00:00\",\"dateModified\":\"2025-08-21T19:20:44+00:00\",\"description\":\"Converting heavy animated GIFs to efficient WebM or MP4 videos with the HTML5 tag is an automated process in Cloudinary.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Animated GIF? Convert to WebM or MP4","description":"Converting heavy animated GIFs to efficient WebM or MP4 videos with the HTML5 tag is an automated process in Cloudinary.","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:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4","og_locale":"en_US","og_type":"article","og_title":"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation","og_description":"Converting heavy animated GIFs to efficient WebM or MP4 videos with the HTML5 tag is an automated process in Cloudinary.","og_url":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4","og_site_name":"Cloudinary Blog","article_published_time":"2020-03-15T10:35:00+00:00","article_modified_time":"2025-08-21T19:20:44+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4"},"author":{"name":"","@id":""},"headline":"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation","datePublished":"2020-03-15T10:35:00+00:00","dateModified":"2025-08-21T19:20:44+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4"},"wordCount":15,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA","keywords":["Django","DotNet","Featured","Image Transformation","Java","jQuery","Node","Performance Optimization","PHP","Ruby on Rails","Video API"],"inLanguage":"en-US","copyrightYear":"2020","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4","url":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4","name":"Animated GIF? Convert to WebM or MP4","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA","datePublished":"2020-03-15T10:35:00+00:00","dateModified":"2025-08-21T19:20:44+00:00","description":"Converting heavy animated GIFs to efficient WebM or MP4 videos with the HTML5 tag is an automated process in Cloudinary.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Reducing the Size of Animated GIFs and Converting Them to WebM or MP4 Through Automation"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649722341\/Web_Assets\/blog\/14_reducing_size_animated_gifs\/14_reducing_size_animated_gifs.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21251"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21251\/revisions"}],"predecessor-version":[{"id":36891,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21251\/revisions\/36891"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21252"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}