{"id":382034,"date":"2026-10-13T12:17:49","date_gmt":"2026-10-13T12:17:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/focalize\/"},"modified":"2026-10-13T13:48:07","modified_gmt":"2026-10-13T13:48:07","slug":"focalio","status":"publish","type":"plugin","link":"https:\/\/mfe.wordpress.org\/plugins\/focalio\/","author":23580658,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.34","stable_tag":"1.0.34","tested":"7.1.3","requires":"6.2","requires_php":"8.3","requires_plugins":null,"header_name":"Focalio","header_author":"Big Fat Internet","header_description":"On-demand image cropping, focal-point picker, LQIP and WebP\/AVIF for WordPress uploads. Powered by League Glide.","assets_banners_color":"9195e1","last_updated":"2026-10-13 13:48:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.bigfat.nl\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.33":{"tag":"1.0.33","author":"bigfatinternet","date":"2026-10-13 12:45:35","revision":3743937},"1.0.34":{"tag":"1.0.34","author":"bigfatinternet","date":"2026-10-13 13:48:07","revision":3744086}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3743874,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3743874,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3743874,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3743935,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3743935,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.33","1.0.34"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2247,29161,163,1464,15376],"plugin_category":[50],"plugin_contributors":[286440],"plugin_business_model":[],"class_list":["post-382034","plugin","type-plugin","status-publish","hentry","plugin_tags-focal-point","plugin_tags-image-optimization","plugin_tags-images","plugin_tags-lazy-loading","plugin_tags-webp","plugin_category-media","plugin_contributors-bigfatinternet","plugin_committers-bigfatinternet"],"banners":{"banner":"https:\/\/ps.w.org\/focalio\/assets\/banner-772x250.png?rev=3743935","banner_2x":"https:\/\/ps.w.org\/focalio\/assets\/banner-1544x500.png?rev=3743935","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/focalio\/assets\/icon.svg?rev=3743874","icon":"https:\/\/ps.w.org\/focalio\/assets\/icon.svg?rev=3743874","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Focalio serves cropped, format-converted image variants on demand via signed URLs \u2014 no more pre-generated intermediate sizes filling up your uploads directory. Editors pick a focal point per image so crops always keep the subject in frame.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>On-demand image cropping via signed URLs<\/li>\n<li>WebP or AVIF output for all uploads<\/li>\n<li>Focal-point picker in the media library and the block editor<\/li>\n<li>Non-destructive rotate and flip, applied to every rendition<\/li>\n<li>LQIP (Low Quality Image Placeholder) support<\/li>\n<li>Settings for image quality, output format and maximum width<\/li>\n<li>Presets, as many as you need: edited on the settings page, each with its own quality and LQIP, or registered in code with glide_register_preset()<\/li>\n<li>Attention \/ entropy \/ center crop fallback for images without a manual focal point<\/li>\n<li>Cached images are served before the rest of WordPress loads<\/li>\n<li>Presets also appear as image sizes, so the media library, Advanced Custom Fields, widgets and page builders can pick them by name<\/li>\n<li>Optional: skip writing intermediate image sizes to disk on upload<\/li>\n<li>Turn off the WordPress image sizes your site does not use<\/li>\n<li>A Cache tab: how big the image cache is, and a button to clear it. A weekly cleanup drops renders that are no longer used<\/li>\n<li>WP-CLI commands for the cache and the crop fallback<\/li>\n<li>WooCommerce product images go through Focalio too, and its cropped sizes follow the focal point<\/li>\n<li>Multisite: activate it for the whole network; deleting it cleans up every site<\/li>\n<\/ul>\n\n<p>Focalio Pro is a separate add-on for agencies and editorial teams, not included in this plugin. It adds:<\/p>\n\n<ul>\n<li>Control: focal-point zoom, a straighten ruler that levels a tilted photo by up to 45\u00b0, a live crop preview, a hand-made crop per ratio where the focal point is not enough, and a watermark<\/li>\n<li>Performance: AVIF with a WebP fallback in a picture element, and a cache warm-up that renders images before the first visitor asks for them<\/li>\n<li>Workflow: face detection that puts the focal point on the people in a photo, bulk actions in the media library, and tools to manage every site of a multisite network<\/li>\n<li>WooCommerce: the shop grid of a block theme cut on the focal point at the store's ratio, and one ratio for every photo on a product page<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>Focalio includes the Freemius SDK (https:\/\/freemius.com), which handles the opt-in to share usage data and the licenses of the Focalio Pro add-on. Nothing is sent to Freemius unless you opt in; images are always processed on your own server.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li>When you opt in (on the screen shown after activation): your WordPress user's first and last name and email address; the site's homepage URL and title, WordPress and PHP versions and site language; the Focalio and SDK versions, and whether Focalio is active. The list of plugins and themes (names, slugs, versions, active or not) only when you leave that option on.<\/li>\n<li>After opting in: changes to that information, and when Focalio is activated, deactivated or uninstalled. If you fill in the optional form on deactivation, the reason you give.<\/li>\n<li>You can opt out at any time with the \"Opt Out\" link under Focalio on the Plugins screen. Focalio works the same either way.<\/li>\n<\/ul>\n\n<p>Freemius terms of service: https:\/\/freemius.com\/terms\/\nFreemius privacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/focalio\/<\/code>, or install via the WordPress plugin repository.<\/li>\n<li>Activate the plugin through the Plugins menu in WordPress.<\/li>\n<li>Configure via Focalio in the admin menu.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20focalio%20change%20my%20original%20uploads%3F\"><h3>Does Focalio change my original uploads?<\/h3><\/dt>\n<dd><p>No. Your uploads stay as they are. Every crop and format is rendered from them when it is first asked for, and kept in the <code>.glide-cache<\/code> folder in your uploads folder. That folder can be deleted at any time: what is gone is rendered again.<\/p><\/dd>\n<dt id=\"where%20do%20i%20set%20the%20focal%20point%3F\"><h3>Where do I set the focal point?<\/h3><\/dt>\n<dd><p>In the media library, in the image's details, and in the block editor, on an image block. Without one, the crop fallback on the Settings tab decides: attention, entropy or the center.<\/p><\/dd>\n<dt id=\"which%20wp-cli%20commands%20are%20there%3F\"><h3>Which WP-CLI commands are there?<\/h3><\/dt>\n<dd><ul>\n<li><code>wp focalio cache stats<\/code>: what is in the image cache<\/li>\n<li><code>wp focalio cache cleanup<\/code>: the weekly cleanup, now (add <code>--dry-run<\/code> to only count)<\/li>\n<li><code>wp focalio cache clear<\/code>: delete every rendered image<\/li>\n<li><code>wp focalio guess<\/code>: work out the automatic focal point of every image ahead of time (add <code>--force<\/code> to redo them)<\/li>\n<\/ul><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Product images are served through Focalio like every other image, and WooCommerce's cropped sizes, such as the shop thumbnails of a classic theme and the gallery thumbnails, follow the focal point.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Yes. Activate it per site or for the whole network. Each site keeps its own settings and image cache, and deleting Focalio cleans up every site.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>Focalio has a menu of its own in the admin, with its own icon, instead of a page under Settings.<\/li>\n<li>A Cache tab: how big the image cache is, and the button to clear it, which used to be on the Info tab.<\/li>\n<li>Multisite: activated for the whole network, the opt-in is asked once for the network. Deleting Focalio cleans up every site; deactivating it for the network stops every site's weekly cleanup.<\/li>\n<li>For developers: the <code>focalio\/cache_tab_after<\/code> and <code>focalio\/wordpress_sizes_after<\/code> hooks add a section to the Cache and Presets tabs.<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>First release on WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"On-demand image cropping, focal-point picker, LQIP and WebP\/AVIF for WordPress uploads. Powered by League Glide.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/382034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=382034"}],"author":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bigfatinternet"}],"wp:attachment":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=382034"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=382034"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=382034"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=382034"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=382034"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=382034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}