{"id":21517,"date":"2017-05-03T17:43:42","date_gmt":"2017-05-03T17:43:42","guid":{"rendered":"http:\/\/quick_guide_using_webp_on_your_website_or_native_apps"},"modified":"2025-02-09T05:23:03","modified_gmt":"2025-02-09T13:23:03","slug":"quick_guide_using_webp_on_your_website_or_native_apps","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps","title":{"rendered":"Adopting the WebP Image Format for Android on Websites Or Native Apps"},"content":{"rendered":"\n<style>\n.btn.exp-btn {\n    text-transform: none;\n    padding: 10px 30px;\n    font-size: 1.1em;\n    border-radius: 40px;\n    margin-top: 20px;\n    margin-bottom: 40px;\n    display: inline-block;\n    position: relative;\n    max-width: 400px;\n}\n#exp-btn-carrot {margin-bottom: 1px; margin-left: 1px;}\n.btn.exp-btn::after {\n    content: \"\";\n    display: inline-block;\n    background-image: url(https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1657723837\/exp-btn.png);\n    position: absolute;\n    background-size: contain;\n    background-repeat: no-repeat;\n    width: 33px;\n    height: 70px;\n    top: 0px;\n    right: -22px;\n}\n@media (max-width: 992px) {\n    .btn.exp-btn {margin-left: 0;}\n}\n\n@media (max-width: 500px) {\n     .btn.exp-btn {\n         max-width: initial;\n         margin-left: auto!important;\n         margin-right: auto;\n         font-size: 15px;\n         width: 300px;\n         display: block;\n         padding: 10px;\n     }\n.btn.exp-btn:after {display: none;}\n}\n<\/style>\n<div style=\"display: flex; justify-content: center;\"><a href=\"#automation_of_image_format_conversion_on_cloudinary\" class=\"exp-btn btn btn-sm btn-primary c-subscription-cta__link\">Shortcut to Cloudinary\u2019s solution\n<svg id=\"exp-btn-carrot\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10.759\" height=\"11.117\" viewBox=\"0 0 10.759 11.117\">\n  <path id=\"Polygon_1\" data-name=\"Polygon 1\" d=\"M4.248,0,8.5,7.518H0Z\" transform=\"translate(6.511) rotate(60)\" fill=\"#fff\"><\/path>\n<\/svg>\n<\/a><\/div>\n\n\n<div class=\"wp-block-cloudinary-markdown \"><p>According to a <a href=\"https:\/\/w3techs.com\/technologies\/overview\/image_format\/all\">W3Techs survey<\/a>, the images on 74 percent of websites worldwide are in JPEG or PNG format and for good reason: those images display well on all browsers. However, several newer image formats are well worth consideration, a leading example being WebP. This post describes how to adopt WebP as your image format and, accordingly, lower your image weight by approximately 30 percent and reduce the load time of your websites or native apps.<\/p>\n<h2>Benefits of WebP for Android<\/h2>\n<p>WebP is an <a href=\"https:\/\/cloudinary.com\/blog\/image_formats_getting_it_right\">image format<\/a> developed by Google, specifically for efficient loading of images online, presenting smaller yet more visually-pleasing pictures. Typically, WebP compresses images by an <a href=\"https:\/\/developers.google.com\/speed\/webp\/\">average of 30 percent more than JPEG<\/a> with no loss in quality.  WebP files can be saved with either lossless or lossy compression. Notably, WebP lossless images are 26% smaller than PNGs.<\/p>\n<p>However, WebP works on the <a href=\"http:\/\/caniuse.com\/#feat=webp\">Chrome, Android, and Opera browsers<\/a> only, which would deter wide adoption of the format. On the other hand, given the steady rise of Chrome usage over the past years\u2014at <a href=\"https:\/\/www.w3schools.com\/browsers\/\">81 percent as of July 2019 according to a W3Schools survey<\/a>\u2014optimization of images for display on Chrome is worth pursuing.<\/p>\n<h2>WebP on Mobile Android Apps<\/h2>\n<p>As a matter of course, Android being an OS developed by Google, WebP works well on Android. Specifically:<\/p>\n<ul>\n<li>Lossy WebP images are supported in Android 4.0 (API level 14) and higher.<\/li>\n<li>Lossless and transparent WebP images are supported in <a href=\"https:\/\/developer.android.com\/studio\/write\/convert-webp.html\">Android 4.3 (API level 18) and higher<\/a>.<\/li>\n<\/ul>\n<p>To read and show WebP images in an Android project, download the webp library, create a \u201cjni\u201d folder in your Android project, copy libwep content to it, and in jni\/Android.mk add necessary configurations. After successful compilation, you will obtain libwebp.jar, which should be included in your project build path<\/p>\n<p>In addition, you can render WebP images on iOS through a library called libwebp, which encodes and decodes them. libwebp is available as precompiled binaries for iOS or as <a href=\"https:\/\/developers.google.com\/speed\/webp\/download\">source code<\/a>.<\/p>\n<p>WebP supports the following image features:<\/p>\n<ul>\n<li>Lossy or lossless compression<\/li>\n<li>Transparency<\/li>\n<li>Extensible Metadata Platform (XMP) metadata<\/li>\n<li>International Color Consortium (ICC) profiles<\/li>\n<li>Animation<\/li>\n<li>Color Space\n* Lossy WebP works exclusively with the 8-bit YUV420 format.\n* Lossless WebP works exclusively with the RGBA [red green blue alpha] format.<\/li>\n<\/ul>\n<p>See this example of how JPEG, PNG, and <a href=\"https:\/\/cloudinary.com\/tools\/compress-gif\">GIF<\/a> images look versus their WebP counterparts.<\/p>\n<p><strong>JPEG -&gt; WebP (Resolution: 300&#215;190. Quality: 80)<\/strong><\/p>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/koala.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/koala.jpg\" alt=\"JPEG\" title=\"JPEG\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>JPEG(15KB)<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/koala.webp\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/koala.webp\" alt=\"WebP\" title=\"WebP\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>WebP(10KB)<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<p><strong>PNG -&gt; WebP (Resolution: 300 x 192. Image with transparency)<\/strong><\/p>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/cloudinary\/image\/upload\/w_300\/png_compression.png\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary\/image\/upload\/w_300\/png_compression.png\" alt=\"PNG\" title=\"PNG\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>PNG(55KB)<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/cloudinary\/image\/upload\/w_300\/png_compression.webp\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary\/image\/upload\/w_300\/png_compression.webp\n\" alt=\"WebP\" title=\"WebP\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>WebP(39KB)<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<p><strong>A GIF -&gt; A WebP (Resolution: 300&#215;168. Quality: 80. Animation)<\/strong><\/p>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/kitten.gif\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/kitten.gif\" alt=\"GIF\" title=\"GIF\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>GIF(2.23MB)<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/kitten.webp\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/w_300,q_80\/kitten.webp\n\" alt=\"Animated WebP\" title=\"Animated WebP\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>Animated WebP(887KB)<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<h2>Adoption of WebP With &lt;picture&gt; Tag<\/h2>\n<p>One way to adopt WebP as your image format is by adding the HTML5 &lt;picture&gt; tag in which to define various image properties, as in this example:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>&lt;picture&gt;\n  &lt;source type=&quot;image\/webp&quot; srcset=&quot;images\/cat.webp&quot;&gt;\n  &lt;img src=&quot;images\/cat.jpg&quot; alt=&quot;A cat&quot;&gt;\n&lt;\/picture&gt;\n<\/code><\/pre>\n<p>The browser then downloads the first image according to the specified source type, in this case WebP, assuming that it supports that format. For browsers that don\u2019t recognize the &lt;picture&gt; tag, adopt WebP through a polyfill, such as <a href=\"http:\/\/scottjehl.github.io\/picturefill\/\">Picturefill<\/a>.<\/p>\n<h2>Automation of Image-Format Conversion on Cloudinary<\/h2>\n<p>In the case of multiple images, rather than specifying a WebP variant for each of them, take advantage of Cloudinary\u2019s automation capability (click here for a  <a href=\"https:\/\/cloudinary.com\/users\/register\/free\" target=\"_blank\">Cloudinary free-forever account<\/a>), like this:<\/p>\n<p>After uploading an image to Cloudinary, add to the image URL the parameter that directs Cloudinary to responsively display the image in the optimal format for the browser in question. If an image request originates from Chrome or Opera, Cloudinary converts its format to WebP on the first request, caching the image on the content delivery network (CDN) for subsequent requests.<\/p>\n<p>In addition, Cloudinary responsively delivers the image in JPEG format to the Firefox browser and JPEG-XR format for the Internet Explorer browser.<\/p>\n<p>For more details, see the <a href=\"https:\/\/cloudinary.com\/blog\/adaptive_browser_based_image_format_delivery\">related documentation<\/a>.<\/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;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetchFormat=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;dog2.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetchFormat=\\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;dog2.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;dog2.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg&#039;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetchFormat: \\&quot;auto\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;dog2.jpg&#039;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetchFormat: \\&quot;auto\\&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;dog2.jpg\\&quot;).image(width=500, height=333, quality=\\&quot;auto\\&quot;, crop=\\&quot;fill\\&quot;, fetch_format=\\&quot;auto\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;dog2.jpg\\&quot;).image(width=500, height=333, quality=\\&quot;auto\\&quot;, crop=\\&quot;fill\\&quot;, fetch_format=\\&quot;auto\\&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;dog2.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(500)\\n-&gt;height(333))\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;dog2.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(500)\\n-&gt;height(333))\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&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;dog2.jpg\\&quot;, array(\\&quot;width\\&quot;=&gt;500, \\&quot;height\\&quot;=&gt;333, \\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;, \\&quot;fetch_format\\&quot;=&gt;\\&quot;auto\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;dog2.jpg\\&quot;, array(\\&quot;width\\&quot;=&gt;500, \\&quot;height\\&quot;=&gt;333, \\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;, \\&quot;fetch_format\\&quot;=&gt;\\&quot;auto\\&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(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).imageTag(\\&quot;dog2.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).imageTag(\\&quot;dog2.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;dog2.jpg\\&quot;, width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;dog2.jpg\\&quot;, width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&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(500).Height(333).Quality(\\&quot;auto\\&quot;).Crop(\\&quot;fill\\&quot;).FetchFormat(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;dog2.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(500).Height(333).Quality(\\&quot;auto\\&quot;).Crop(\\&quot;fill\\&quot;).FetchFormat(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;dog2.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;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&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(500).setHeight(333).setQuality(\\&quot;auto\\&quot;).setCrop(\\&quot;fill\\&quot;).setFetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(500).setHeight(333).setQuality(\\&quot;auto\\&quot;).setCrop(\\&quot;fill\\&quot;).setFetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.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(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.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;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&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;dog2.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(500)\\n height(333) })\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;dog2.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(500)\\n height(333) })\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\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;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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_500,h_333,f_auto,q_auto,c_fill\\\/dog2.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;500&quot;,&quot;height&quot;:&quot;333&quot;,&quot;format&quot;:&quot;auto&quot;,&quot;quality&quot;:&quot;auto&quot;,&quot;crop_mode&quot;:&quot;fill&quot;}],&quot;transformation_string&quot;:&quot;w_500,h_333,f_auto,q_auto,c_fill&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;dog2.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_500,h_333,f_auto,q_auto,c_fill\/dog2.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_500,h_333,f_auto,q_auto,c_fill\/dog2.jpg\" alt=\"Dog\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"500\" height=\"333\"\/><\/a><\/p>\n<h2>Support of WebP on Native Mobile Apps<\/h2>\n<p>For native mobile apps on Android, set up WebP as your image format with the following code on the Android SDK:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cloudinary.url().transformation(new Transformation().width(500).height(333).crop(&quot;fill&quot;)).fetchFormat(&quot;webp&quot;)).generate(&quot;dog.jpg&quot;)\n<\/code><\/pre>\n<p>The corresponding URL is<code>https:\/\/res.cloudinary.com\/cld-name\/image\/upload\/c_fill,f_webp,h_333,w_500\/dog.jpg<\/code>, which you can manually construct.<\/p>\n<h2>A Quality Boost<\/h2>\n<p>Cloudinary\u2019s image-quality setting, which defines the depth of lossy compression, also affects the ultimate look of the media. Finding the sweet spot for your images requires a test cycle, such as by setting the quality level to 80 and then to 90 to verify the image weight reduction and to determine which setting better meets your standard.<\/p>\n<p>To avoid the chore of configuring each image\u2019s optimal quality setting, use Cloudinary\u2019s <code>q_auto<\/code> option, which impeccably performs that job for you. For details, read this excellent <a href=\"https:\/\/cloudinary.com\/blog\/the_holy_grail_of_image_optimization_or_balancing_visual_quality_and_file_size\">article<\/a>.<\/p>\n<h2>Automation of Quality Adjustments for Full Automation<\/h2>\n<p>Automating the selection of image format and quality level with Cloudinary yields wonders. To further fine-tune the setup and save bandwidth, set the visual-quality level according to the delivery method. For example, leave the default \u201cgood\u201d level (<code>q_auto: good<\/code>) as is for websites and set the <code>eco<\/code> level (<code>q_auto: eco<\/code>) for native mobile apps.<\/p>\n<p>For example, this image URL contains automated settings for websites:\n<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;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetchFormat=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;dog2.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetchFormat=\\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;dog2.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;dog2.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;500\\&quot; height=\\&quot;333\\&quot; quality=\\&quot;auto\\&quot; crop=\\&quot;fill\\&quot; fetch-format=\\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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;dog2.jpg&#039;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetchFormat: \\&quot;auto\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;dog2.jpg&#039;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetchFormat: \\&quot;auto\\&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;dog2.jpg\\&quot;).image(width=500, height=333, quality=\\&quot;auto\\&quot;, crop=\\&quot;fill\\&quot;, fetch_format=\\&quot;auto\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;dog2.jpg\\&quot;).image(width=500, height=333, quality=\\&quot;auto\\&quot;, crop=\\&quot;fill\\&quot;, fetch_format=\\&quot;auto\\&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;dog2.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(500)\\n-&gt;height(333))\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;dog2.jpg&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(500)\\n-&gt;height(333))\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto()))\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()));&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;dog2.jpg\\&quot;, array(\\&quot;width\\&quot;=&gt;500, \\&quot;height\\&quot;=&gt;333, \\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;, \\&quot;fetch_format\\&quot;=&gt;\\&quot;auto\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;dog2.jpg\\&quot;, array(\\&quot;width\\&quot;=&gt;500, \\&quot;height\\&quot;=&gt;333, \\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;, \\&quot;fetch_format\\&quot;=&gt;\\&quot;auto\\&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(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).imageTag(\\&quot;dog2.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).imageTag(\\&quot;dog2.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;dog2.jpg\\&quot;, width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;dog2.jpg\\&quot;, width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&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(500).Height(333).Quality(\\&quot;auto\\&quot;).Crop(\\&quot;fill\\&quot;).FetchFormat(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;dog2.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(500).Height(333).Quality(\\&quot;auto\\&quot;).Crop(\\&quot;fill\\&quot;).FetchFormat(\\&quot;auto\\&quot;)).BuildImageTag(\\&quot;dog2.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;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&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(500).setHeight(333).setQuality(\\&quot;auto\\&quot;).setCrop(\\&quot;fill\\&quot;).setFetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(500).setHeight(333).setQuality(\\&quot;auto\\&quot;).setCrop(\\&quot;fill\\&quot;).setFetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.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(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(500).height(333).quality(\\&quot;auto\\&quot;).crop(\\&quot;fill\\&quot;).fetchFormat(\\&quot;auto\\&quot;)).generate(\\&quot;dog2.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;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;dog2.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(500)\\n.height(333))\\n\\t.delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t.delivery(Delivery.quality(\\n\\tQuality.auto())));&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;dog2.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(500)\\n height(333) })\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;dog2.jpg\\&quot;)\\n\\t resize(Resize.fill() { width(500)\\n height(333) })\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()))\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto())) \\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;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;dog2.jpg\\&quot;, {width: 500, height: 333, quality: \\&quot;auto\\&quot;, crop: \\&quot;fill\\&quot;, fetch_format: \\&quot;auto\\&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;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;dog2.jpg\\&quot;)\\n  .resize(fill().width(500).height(333))\\n  .delivery(format(auto()))\\n  .delivery(quality(auto()));&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_500,h_333,c_fill,f_auto,q_auto\\\/dog2.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;500&quot;,&quot;height&quot;:&quot;333&quot;,&quot;crop_mode&quot;:&quot;fill&quot;,&quot;format&quot;:&quot;auto&quot;,&quot;quality&quot;:&quot;auto&quot;}],&quot;transformation_string&quot;:&quot;w_500,h_333,c_fill,f_auto,q_auto&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;dog2.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_500,h_333,c_fill,f_auto,q_auto\/dog2.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_500,h_333,c_fill,f_auto,q_auto\/dog2.jpg\" alt=\"Dog\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"500\" height=\"333\"\/><\/a><\/p>\n<p>To configure the same automation for an Android app, code as follows:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cloudinary.url().transformation(new Transformation().width(500).height(333).crop(&quot;fill&quot;)).fetchFormat(&quot;webp&quot;).quality(&quot;auto:eco&quot;)).generate(&quot;dog.jpg&quot;)\n<\/code><\/pre>\n<p>The equivalent URL is\u2014 <code>https:\/\/res.cloudinary.com\/cldname\/image\/upload\/c_fill,f_webp,h_333,q_auto:eco,w_500\/dog.jpg<\/code><\/p>\n<h2>Summary<\/h2>\n<p>Manually managing images is challenging, necessitating significant development effort to ensure a responsive design for images with different sizes to accommodate the various browsers. It makes a lot of sense to automate the process, especially since <a href=\"http:\/\/httparchive.org\/interesting.php\">images now account for 60-65 percent<\/a> of the average website content. Doing that on Cloudinary is simple and intuitive. Give it a try!<\/p>\n<h2>Want to Learn More About Image Formats?<\/h2>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/image_formats_getting_it_right\">Image Formats: Getting it Right<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/the_great_jpeg_2000_debate_analyzing_the_pros_and_cons_to_widespread_adoption\">The Great JPEG 2000 Debate: Analyzing the Pros and Cons to Widespread Adoption<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/progressive_jpegs_and_green_martians\">Progressive JPEGs and green Martians<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/animated_webp_how_to_convert_animated_gif_to_webp_and_save_up_to_90_bandwidth\">Animated WebP &#8211; how to convert animated GIF to WebP and save up to 90% bandwidth<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/optimize_your_jpeg_images_without_compromising_quality_with_jpegmini_and_cloudinary\">JPEG Image Optimization Without Compromising Quality With JPEGmini and Cloudinary<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_support_webp_images_save_bandwidth_and_improve_user_performance\">Check for WebP Browser Support to Dynamically Deliver Images<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/lossy_compression_for_optimizing_animated_gifs\">Optimizing Animated GIFs With Lossy Compression<\/a>\n<\/li>\n<\/ul>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Shortcut to Cloudinary\u2019s solution<\/p>\n","protected":false},"author":41,"featured_media":21518,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[179,227,321],"class_list":["post-21517","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-jpeg","tag-performance-optimization","tag-webp"],"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>Using WebP for Android on Your Website or Native Apps<\/title>\n<meta name=\"description\" content=\"WebP, a new image format that lowers the image weight by 30 percent, greatly reduces loading time for websites and native apps.\" \/>\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\/quick_guide_using_webp_on_your_website_or_native_apps\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Adopting the WebP Image Format for Android on Websites Or Native Apps\" \/>\n<meta property=\"og:description\" content=\"WebP, a new image format that lowers the image weight by 30 percent, greatly reduces loading time for websites and native apps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-03T17:43:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-09T13:23:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a-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\/quick_guide_using_webp_on_your_website_or_native_apps#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Adopting the WebP Image Format for Android on Websites Or Native Apps\",\"datePublished\":\"2017-05-03T17:43:42+00:00\",\"dateModified\":\"2025-02-09T13:23:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps\"},\"wordCount\":17,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA\",\"keywords\":[\"JPEG\",\"Performance Optimization\",\"WebP\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2017\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps\",\"url\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps\",\"name\":\"Using WebP for Android on Your Website or Native Apps\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA\",\"datePublished\":\"2017-05-03T17:43:42+00:00\",\"dateModified\":\"2025-02-09T13:23:03+00:00\",\"description\":\"WebP, a new image format that lowers the image weight by 30 percent, greatly reduces loading time for websites and native apps.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Adopting the WebP Image Format for Android on Websites Or Native Apps\"}]},{\"@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":"Using WebP for Android on Your Website or Native Apps","description":"WebP, a new image format that lowers the image weight by 30 percent, greatly reduces loading time for websites and native apps.","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\/quick_guide_using_webp_on_your_website_or_native_apps","og_locale":"en_US","og_type":"article","og_title":"Adopting the WebP Image Format for Android on Websites Or Native Apps","og_description":"WebP, a new image format that lowers the image weight by 30 percent, greatly reduces loading time for websites and native apps.","og_url":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps","og_site_name":"Cloudinary Blog","article_published_time":"2017-05-03T17:43:42+00:00","article_modified_time":"2025-02-09T13:23:03+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps"},"author":{"name":"","@id":""},"headline":"Adopting the WebP Image Format for Android on Websites Or Native Apps","datePublished":"2017-05-03T17:43:42+00:00","dateModified":"2025-02-09T13:23:03+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps"},"wordCount":17,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA","keywords":["JPEG","Performance Optimization","WebP"],"inLanguage":"en-US","copyrightYear":"2017","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps","url":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps","name":"Using WebP for Android on Your Website or Native Apps","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA","datePublished":"2017-05-03T17:43:42+00:00","dateModified":"2025-02-09T13:23:03+00:00","description":"WebP, a new image format that lowers the image weight by 30 percent, greatly reduces loading time for websites and native apps.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/quick_guide_using_webp_on_your_website_or_native_apps#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Adopting the WebP Image Format for Android on Websites Or Native Apps"}]},{"@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\/v1649720128\/Web_Assets\/blog\/WebP_2000x1100_v1a\/WebP_2000x1100_v1a.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21517","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=21517"}],"version-history":[{"count":16,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21517\/revisions"}],"predecessor-version":[{"id":36769,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21517\/revisions\/36769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21518"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}