{"id":21822,"date":"2018-12-05T16:16:17","date_gmt":"2018-12-05T16:16:17","guid":{"rendered":"http:\/\/fuif_new_legacy_friendly_image_file_format"},"modified":"2024-09-07T16:28:27","modified_gmt":"2024-09-07T23:28:27","slug":"fuif_new_legacy_friendly_image_file_format","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format","title":{"rendered":"FUIF: New, Legacy Friendly Image File Format"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p><a href=\"https:\/\/cloudinary.com\/blog\/introducing_fuif_responsive_images_by_design\">Part 1 of this series<\/a> introduces the Free Lossy Image Format (FUIF), which I recently developed. <a href=\"https:\/\/cloudinary.com\/blog\/fuif_why_do_we_need_a_new_image_file_format\">Part 2<\/a> explains the why, what, and how of FUIF. This post, part 3 of the series, delves into how FUIF is <strong>legacy friendly<\/strong>, which I alluded to in Part 2.<\/p>\n<p>A vast number of JPEG images exist out there, as well as devices that produce new JPEG images every day. If the only way to transcode a JPEG image to a new image file format is to decode the JPEG to RGB pixels (or to YCbCr) and encode that to the new format, then there\u2019s a problem. The result is either a significant <a href=\"https:\/\/cloudinary.com\/blog\/why_jpeg_is_like_a_photocopier\">generation loss<\/a> or new files that are actually larger than the originals.<\/p>\n<h2>Compatibility With JPEG<\/h2>\n<p>FUIF is compatible with JPEG in the sense that it supports the 8&#215;8 discrete cosine transform (<a href=\"https:\/\/cloudinary.com\/glossary\/dct-compression\">DCT<\/a>) and the YCbCr color transform. That means FUIF can losslessly represent the actual information in JPEG images while still offering you most of its benefits, such as the following:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/features\/responsive_images\">Responsive by design<\/a>, not limited to a scale of 1:8<\/li>\n<li>Minimal header overhead<\/li>\n<li>Better compression results than those from JPEG, thanks to enhanced entropy coding<\/li>\n<\/ul>\n<p>Comparing FUIF to Dropbox\u2019s Lepton, which also does lossless JPEG recompression, reveals that\u2014<\/p>\n<ul>\n<li>Lepton can usually obtain a somewhat better compression.<\/li>\n<li>Lepton is faster.<\/li>\n<li>Lepton is bit exact, not just image exact.<\/li>\n<\/ul>\n<p>However, FUIF offers these benefits:<\/p>\n<ul>\n<li>You can decode FUIF progressively. Lepton is \u201cantiprogressive\u201d because it encodes the AC coefficients before the DC coefficients.<\/li>\n<li>You can enhance JPEGs, for example, by adding a lossless or lossy alpha channel to them.<\/li>\n<\/ul>\n<p>Unlike <a href=\"https:\/\/jpeg.org\/jpegxt\/\">JPEG XT<\/a>, the FUIF bitstream is completely different from legacy JPEG and it is thus unreadable to JPEG decoders. Obviously, full backward compatibility is convenient but it has serious downsides. It implies that the compression density cannot be improved compared to legacy JPEG. It also means that none of the new features (like alpha or higher bit depth) are guaranteed to be rendered correctly since, at least initially, most decoders would simply ignore any extensions of the legacy JPEG bitstream. So, in my opinion, not being backward compatible is a better design choice.<\/p>\n<p>While FUIF is not backward compatible with JPEG, it is \u201clegacy friendly\u201d in the sense that you can convert existing JPEG images losslessly and effectively to FUIF, potentially with added information like alpha or depth channels.<\/p>\n<h2>Effective Recompression of PNGs and GIFs<\/h2>\n<p>FUIF can also effectively recompress existing (animated or still) PNGs and GIFs. Those formats are lossless within their limitations so generation loss is not an issue. However, effectively recompressing them can be challenging for new image formats since the compression methods for PNGs and GIFs differ from those for most lossy formats. For example, for images or animations with few different colors, PNG or <a href=\"https:\/\/cloudinary.com\/tools\/compress-gif\">GIF<\/a> can be smaller than JPEG even though they are lossless and JPEG is lossy.<\/p>\n<p>You can effectively recompress PNGs and GIFs by means of two specific image transformations in FUIF:<\/p>\n<ul>\n<li>\n<strong>Palette<\/strong>: Both PNG8 and GIF use a color palette of up to 256 colors, replacing the usual three-color channels with just a single palette-index channel. FUIF supports palettes of arbitrary sizes.<\/li>\n<li>\n<strong>Matching<\/strong>: This second transformation removes repetitive pixel patterns in images or animations, encoding them just once and replacing the other occurrences with references. This mode results in compression gains similar to what you can obtain with the dictionary-style entropy encoding of PNG and GIF. Because this mode can also compensate for interframe motion, it also works well in animations.<\/li>\n<\/ul>\n<p>You can encode FUIF-recompressed PNGs and GIFs in a progressive\u2014and thus responsive\u2014way, either lossless or lossy.<\/p>\n<h2>Resilience to Generation Loss<\/h2>\n<p>Being able to recompress JPEGs, PNGs, and GIFs effectively without introducing additional loss is one way in which FUIF preserves the legacy of the past. Another way in which FUIF is legacy friendly pertains to the future.<\/p>\n<p>Ideally, lossy compression is applied only once on an image. You should edit only lossless images and, in the final step, apply lossy compression to make those image files smaller for distribution. In practice, however, lossless originals often get lost and all that\u2019s available as source material for editing are lossy images.<\/p>\n<p>Repeated lossy encoding leads to <a href=\"https:\/\/cloudinary.com\/blog\/why_jpeg_is_like_a_photocopier\">generation loss<\/a>, also called the \u201cphotocopier effect.\u201d Ironically, advanced, modern image file formats tend to suffer more from that problem than the older formats. That\u2019s because the advanced formats use a stronger arsenal of compression tricks, which enable them to obtain better compression but which also frequently result in more serious cumulative errors.<\/p>\n<p>Realistically, it\u2019s hard to completely avoid generation loss in lossy compression. Nonetheless, you can minimize the loss with FUIF. Here is an enlightening demo that shows how FUIF and some other image file formats behave after 500 generations of recompression:<\/p>\n<p><video controls=\"controls\" height=\"100%\" poster=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/FUIF_Generation_Loss_comparison.jpg\" preload=\"none\" style=\"margin: 0 auto;display: block\" width=\"1728\"><source src=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/FUIF_Generation_Loss_comparison.webm\" type=\"video\/webm\"><source src=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/FUIF_Generation_Loss_comparison.mp4\" type=\"video\/mp4\"><source src=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/FUIF_Generation_Loss_comparison.ogv\" type=\"video\/ogg\"><\/video><\/p>\n<p>As you can see, FUIF is legacy friendly in two key ways: it can effectively recompress existing JPEG, PNG, and GIF images (the legacy of the past) without introducing additional loss, and it is resilient to generation loss (the legacy to the future). In the next post, I will talk about compression artifacts, including those for FUIF.<\/p>\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p><a href=\"https:\/\/github.com\/cloudinary\/fuif\">The FUIF Code<\/a> has now been made public.<\/p><\/div>\n<hr \/>\n<h2>Further Reading on Responsive Images<\/h2>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/make_all_images_on_your_website_responsive_in_3_easy_steps\">Responsive images with Cloudinary<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/introducing_smart_cropping_intelligent_quality_selection_and_automated_responsive_images\">Auto-Crop Images for Responsive Designs and Improved Image Quality<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/responsive_images_with_srcset_sizes_and_cloudinary\">Responsive Images: The srcset and sizes HTML Image Attributes<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/make_all_images_on_your_website_responsive_in_3_easy_steps\">Make All Images on Your Website Responsive in 3 Easy Steps<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/best_practices_for_responsive_web_design\">Best Practices for Responsive Web Design<\/a>\n<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21823,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[251],"class_list":["post-21822","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-responsive-images"],"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>FUIF: New, Legacy Friendly Image File Format<\/title>\n<meta name=\"description\" content=\"If the only way to transcode a JPEG to a new image format is to decode the JPEG to RGB pixels and encode that to the new image file format, then there\u2019s a problem.\" \/>\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\/fuif_new_legacy_friendly_image_file_format\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FUIF: New, Legacy Friendly Image File Format\" \/>\n<meta property=\"og:description\" content=\"If the only way to transcode a JPEG to a new image format is to decode the JPEG to RGB pixels and encode that to the new image file format, then there\u2019s a problem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-05T16:16:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-07T23:28:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF-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\/fuif_new_legacy_friendly_image_file_format#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"FUIF: New, Legacy Friendly Image File Format\",\"datePublished\":\"2018-12-05T16:16:17+00:00\",\"dateModified\":\"2024-09-07T23:28:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format\"},\"wordCount\":7,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA\",\"keywords\":[\"Responsive Images\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2018\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format\",\"url\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format\",\"name\":\"FUIF: New, Legacy Friendly Image File Format\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA\",\"datePublished\":\"2018-12-05T16:16:17+00:00\",\"dateModified\":\"2024-09-07T23:28:27+00:00\",\"description\":\"If the only way to transcode a JPEG to a new image format is to decode the JPEG to RGB pixels and encode that to the new image file format, then there\u2019s a problem.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FUIF: New, Legacy Friendly Image File Format\"}]},{\"@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":"FUIF: New, Legacy Friendly Image File Format","description":"If the only way to transcode a JPEG to a new image format is to decode the JPEG to RGB pixels and encode that to the new image file format, then there\u2019s a problem.","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\/fuif_new_legacy_friendly_image_file_format","og_locale":"en_US","og_type":"article","og_title":"FUIF: New, Legacy Friendly Image File Format","og_description":"If the only way to transcode a JPEG to a new image format is to decode the JPEG to RGB pixels and encode that to the new image file format, then there\u2019s a problem.","og_url":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format","og_site_name":"Cloudinary Blog","article_published_time":"2018-12-05T16:16:17+00:00","article_modified_time":"2024-09-07T23:28:27+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format"},"author":{"name":"","@id":""},"headline":"FUIF: New, Legacy Friendly Image File Format","datePublished":"2018-12-05T16:16:17+00:00","dateModified":"2024-09-07T23:28:27+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format"},"wordCount":7,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA","keywords":["Responsive Images"],"inLanguage":"en-US","copyrightYear":"2018","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format","url":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format","name":"FUIF: New, Legacy Friendly Image File Format","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA","datePublished":"2018-12-05T16:16:17+00:00","dateModified":"2024-09-07T23:28:27+00:00","description":"If the only way to transcode a JPEG to a new image format is to decode the JPEG to RGB pixels and encode that to the new image file format, then there\u2019s a problem.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/fuif_new_legacy_friendly_image_file_format#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FUIF: New, Legacy Friendly Image File Format"}]},{"@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\/v1649721576\/Web_Assets\/blog\/What-is-FUIF\/What-is-FUIF.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21822","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=21822"}],"version-history":[{"count":4,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21822\/revisions"}],"predecessor-version":[{"id":35605,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21822\/revisions\/35605"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21823"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}