{"id":396585,"date":"2026-11-08T17:01:02","date_gmt":"2026-11-08T17:01:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/oio-octopus-image-optimizer\/"},"modified":"2026-11-08T22:58:25","modified_gmt":"2026-11-08T22:58:25","slug":"takopic","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/takopic\/","author":20453602,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.4","requires":"6.2","requires_php":"8.2","requires_plugins":null,"header_name":"Takopic \u2013 Local Image Optimizer | Convert WebP & AVIF","header_author":"Cl\u00e9ment Gayot","header_description":"Compresses JPG and PNG images and converts them to WebP and AVIF on your own server, with cwebp, avifenc, jpegoptim and optipng. Free, unlimited, no API key.","assets_banners_color":"280e4d","last_updated":"2026-11-08 22:58:25","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/github.com\/Striffly\/takopic#-support","header_plugin_uri":"https:\/\/github.com\/Striffly\/takopic","header_author_uri":"https:\/\/github.com\/Striffly","rating":0,"author_block_rating":0,"active_installs":0,"downloads":135,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"striffly","date":"2026-11-08 17:00:44","revision":3791227},"1.0.1":{"tag":"1.0.1","author":"striffly","date":"2026-11-08 22:58:25","revision":3791597}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3791227,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3791227,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3791227,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3791227,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3791227,"resolution":"1","location":"assets","locale":"","width":2400,"height":1560},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3791227,"resolution":"2","location":"assets","locale":"","width":2400,"height":1560},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3791227,"resolution":"3","location":"assets","locale":"","width":2400,"height":1560},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3791227,"resolution":"4","location":"assets","locale":"","width":2400,"height":1560},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3791227,"resolution":"5","location":"assets","locale":"","width":2400,"height":1560}},"screenshots":{"1":"The overview: the bytes saved, the status of the images and the libraries of each format.","2":"The optimisation of the media library in the background, with its progress.","3":"The delivery of WebP and AVIF on the site, and its test.","4":"The settings of each format: quality, compression, library.","5":"The status and the bytes saved of each image, in the media library."}},"plugin_section":[],"plugin_tags":[194661,56174,29161,247,15376],"plugin_category":[54],"plugin_contributors":[291516],"plugin_business_model":[],"class_list":["post-396585","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-compress-images","plugin_tags-image-optimization","plugin_tags-performance","plugin_tags-webp","plugin_category-security-and-spam-protection","plugin_contributors-striffly","plugin_committers-striffly"],"banners":{"banner":"https:\/\/ps.w.org\/takopic\/assets\/banner-772x250.png?rev=3791227","banner_2x":"https:\/\/ps.w.org\/takopic\/assets\/banner-1544x500.png?rev=3791227","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/takopic\/assets\/icon-128x128.gif?rev=3791227","icon_2x":"https:\/\/ps.w.org\/takopic\/assets\/icon-256x256.gif?rev=3791227","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/takopic\/assets\/screenshot-1.png?rev=3791227","caption":"The overview: the bytes saved, the status of the images and the libraries of each format."},{"src":"https:\/\/ps.w.org\/takopic\/assets\/screenshot-2.png?rev=3791227","caption":"The optimisation of the media library in the background, with its progress."},{"src":"https:\/\/ps.w.org\/takopic\/assets\/screenshot-3.png?rev=3791227","caption":"The delivery of WebP and AVIF on the site, and its test."},{"src":"https:\/\/ps.w.org\/takopic\/assets\/screenshot-4.png?rev=3791227","caption":"The settings of each format: quality, compression, library."},{"src":"https:\/\/ps.w.org\/takopic\/assets\/screenshot-5.png?rev=3791227","caption":"The status and the bytes saved of each image, in the media library."}],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/github.com\/Striffly\/takopic\">GitHub<\/a> | <a href=\"https:\/\/github.com\/Striffly\/takopic#readme\">Documentation<\/a> | <a href=\"https:\/\/github.com\/Striffly\/takopic\/blob\/main\/CHANGELOG.md\">Changelog<\/a> | <a href=\"https:\/\/github.com\/Striffly\/takopic\/issues\">Support<\/a><\/p>\n\n<p>Takopic optimises the images of your media library with the libraries of your own server: <code>jpegoptim<\/code>, <code>optipng<\/code> or <code>oxipng<\/code>, <code>pngquant<\/code>, <code>cwebp<\/code> and <code>avifenc<\/code>, or GD and Imagick for the WebP and AVIF formats. Free and unlimited, no API key, no quota: your images never leave your server.<\/p>\n\n<h4>Optimisation<\/h4>\n\n<ul>\n<li>Compresses JPG and PNG images in place, and creates their WebP and AVIF versions, kept only when lighter.<\/li>\n<li>Keeps the original images, to restore them at any time.<\/li>\n<li>Strips the metadata (camera, date, GPS position), but keeps the colour profile when the colours need it.<\/li>\n<li>Handles CMYK JPGs and the photos stored sideways.<\/li>\n<\/ul>\n\n<h4>Media library<\/h4>\n\n<ul>\n<li>Optimises the images on upload, or the whole library in the background, with pause and cancel.<\/li>\n<li>Re-optimises the images left behind by new settings or new image sizes of the theme.<\/li>\n<li>Shows the status, the errors and the bytes saved of each image, and optimises or restores it in one click.<\/li>\n<\/ul>\n\n<h4>On the site<\/h4>\n\n<ul>\n<li>Serves AVIF and WebP with the JPG or PNG as fallback: in a <code>&lt;picture&gt;<\/code> element, or from the server with rewrite rules (Apache, nginx).<\/li>\n<li>Tests the delivery.<\/li>\n<\/ul>\n\n<h4>For developers<\/h4>\n\n<ul>\n<li><code>takopic_image()<\/code> and <code>takopic_image_sources()<\/code> give the <code>&lt;picture&gt;<\/code> of an image or its srcsets, in your own templates.<\/li>\n<li>WP-CLI: <code>wp takopic run<\/code>, <code>clean<\/code>, <code>restore<\/code>, <code>stats<\/code> and <code>health<\/code>.<\/li>\n<li>Filters for the folder of the originals, the priority and threads of the libraries, the pace of the background jobs and the path of a library.<\/li>\n<\/ul>\n\n<p>All of them are documented in the <a href=\"https:\/\/github.com\/Striffly\/takopic#-developers\">README on GitHub<\/a>.<\/p>\n\n<h3>Privacy<\/h3>\n\n<ul>\n<li><strong>No external request<\/strong>: no API, no tracking. The delivery test only requests the images of the site, from its CDN if they are served by one.<\/li>\n<li><strong>No metadata<\/strong>: the optimised images lose it, GPS position included. The originals keep it.<\/li>\n<li><strong>Private originals<\/strong>: kept in <code>uploads\/takopic\/originals-{key}\/<\/code>, under a key drawn at random for each site. Takopic closes the folder to the web with a <code>.htaccess<\/code> on Apache and LiteSpeed; on nginx, add the rules of the Delivery tab. <code>Test the delivery<\/code> checks it on both.<\/li>\n<li><strong>Originals out of the web root<\/strong>: set their folder with the <code>takopic_backup_dir<\/code> filter, before optimising any image. Takopic does not move the originals already kept: move the folder yourself when you change it.<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>Takopic is developed by <a href=\"https:\/\/github.com\/Striffly\">Cl\u00e9ment Gayot<\/a>.<\/p>\n\n<p>It started as a fork of <a href=\"https:\/\/github.com\/ainsleyclark\/squidge\">Squidge<\/a>, created by <a href=\"https:\/\/github.com\/ainsleyclark\">Ainsley Clark<\/a> in 2021 with contributions from Roman K, Rohinish and karbivskij, and was largely rewritten in 2026. Many thanks to them for the foundations: the idea of relying on the native libraries of the server comes from Squidge.<\/p>\n\n<p>Thanks also to <a href=\"https:\/\/wordpress.org\/plugins\/yoohw-media-optimizer\/\">Media Optimizer<\/a> by YooHW for some ideas: the menu, the delivery page, the display of the bytes saved, and more.<\/p>\n\n<!--section=installation-->\n<p>In <code>Plugins &gt; Add New Plugin<\/code>, search for Takopic, then install and activate it.<\/p>\n\n<p>After installing:<\/p>\n\n<ul>\n<li><strong>The new uploads<\/strong> are optimised right away: <code>Optimise new uploads<\/code>, ticked by default.<\/li>\n<li><strong>The images already in the library<\/strong> wait in the Optimise tab: <code>Optimise new images<\/code> optimises them in the background.<\/li>\n<li><strong>The Overview tab<\/strong> lists the missing libraries, and how to install them.<\/li>\n<li><strong>WebP and AVIF are not served<\/strong> until you turn them on in the Delivery tab.<\/li>\n<\/ul>\n\n<p>Takopic needs PHP allowed to run the libraries of the server (<code>proc_open()<\/code> or <code>exec()<\/code>):<\/p>\n\n<ul>\n<li>JPG: <code>jpegoptim<\/code>. Without it, not compressed.<\/li>\n<li>PNG: <code>optipng<\/code> or <code>oxipng<\/code> (faster). Without them, not compressed.<\/li>\n<li>PNG lossy (optional): <code>pngquant<\/code>. Without it, lossless only.<\/li>\n<li>WebP: <code>cwebp<\/code>. Without it, GD or Imagick, with heavier PNG graphics.<\/li>\n<li>AVIF: <code>avifenc<\/code>. Without it, GD or Imagick (WordPress 6.5+), with less sharp colours.<\/li>\n<\/ul>\n\n<p>On Debian or Ubuntu: <code>sudo apt install jpegoptim optipng webp libavif-bin<\/code>.<\/p>\n\n<p>On Windows: no JPG and PNG compression. For WebP and AVIF, put the official builds of <a href=\"https:\/\/developers.google.com\/speed\/webp\/download\"><code>cwebp<\/code><\/a> and <a href=\"https:\/\/github.com\/AOMediaCodec\/libavif\/releases\"><code>avifenc<\/code><\/a> on the <code>PATH<\/code>, or set their path with the <code>takopic_binary_path<\/code> filter.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20takopic%20replace%20my%20images%3F\"><h3>Does Takopic replace my images?<\/h3><\/dt>\n<dd><p>By default, yes: the JPG and PNG files are replaced by their compressed version, and the originals are kept in <code>uploads\/takopic\/originals-{key}\/<\/code>. <code>Restore original images<\/code> on the settings page, or <code>Restore original<\/code> on an image of the media library, puts them back. To only make the WebP and AVIF versions, untick <code>Compress JPG images<\/code> and <code>Compress PNG images<\/code> on the Settings tab.<\/p><\/dd>\n<dt id=\"does%20it%20serve%20webp%20and%20avif%20automatically%3F\"><h3>Does it serve WebP and AVIF automatically?<\/h3><\/dt>\n<dd><p>Once turned on in the Delivery tab, in one of two ways:<\/p>\n\n<ul>\n<li><strong>In the HTML<\/strong>: the images of the content and of <code>wp_get_attachment_image()<\/code> (featured images, galleries, most themes) are wrapped in a <code>&lt;picture&gt;<\/code> element, with the JPG or PNG as fallback. Works everywhere, but may break a layout styling <code>img<\/code> directly. In a custom theme, use <a href=\"https:\/\/github.com\/Striffly\/takopic#theme-development\"><code>takopic_image()<\/code><\/a>.<\/li>\n<li><strong>From the server<\/strong>: the server answers <code>photo.jpg<\/code> with its AVIF or WebP version when the browser reads it. The HTML does not change, and CSS backgrounds are served too. Takopic writes the rules in <code>uploads\/.htaccess<\/code> on Apache and LiteSpeed; on nginx, add the ones given on the Delivery tab, or in the <a href=\"https:\/\/github.com\/Striffly\/takopic#-faq\">README<\/a>.<\/li>\n<\/ul>\n\n<p>A CDN must vary its cache on the <code>Accept<\/code> header, or serve the JPG to everyone. <code>Test the delivery<\/code> checks what the server sends.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20the%20theme%20changes%20its%20image%20sizes%3F\"><h3>What happens when the theme changes its image sizes?<\/h3><\/dt>\n<dd><p>Its images are listed as \"Older settings\": <code>Re-optimise outdated images<\/code> makes their thumbnails again from the originals, and optimises them.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20the%20site%20down%3F\"><h3>Does it slow the site down?<\/h3><\/dt>\n<dd><p>The background jobs run the libraries at the lowest priority, behind the requests of the site. On a small server, the <a href=\"https:\/\/github.com\/Striffly\/takopic#filters\">filters<\/a> slow them down further.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20shared%20hosting%3F\"><h3>Does it work on shared hosting?<\/h3><\/dt>\n<dd><p>Yes for WebP and AVIF, made by GD or Imagick when the libraries are missing. The JPG and PNG compression needs the libraries, which most shared hosts do not let you install: ask your host. The Overview tab tells what is missing.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20or%20delete%20takopic%3F\"><h3>What happens when I deactivate or delete Takopic?<\/h3><\/dt>\n<dd><p>Deactivated, Takopic stops its background job and removes its rewrite rules: the site serves the JPG and PNG images again. Its settings and files stay, and the rules come back on activation.<\/p>\n\n<p>Deleted, Takopic removes its settings and data from the database, but leaves the files: the compressed images, their WebP and AVIF versions and the originals. To get the originals back, run <code>Restore original images<\/code> before deleting it.<\/p>\n\n<p>Before deactivating, a dialog shows how many images Takopic has optimised and the size of <code>uploads\/takopic\/<\/code>, with a button to restore the originals, and warns when the theme calls <code>takopic_image()<\/code>: its pages break while Takopic is deactivated. With nothing to warn about, Takopic deactivates at once.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Images no longer listed as \"Older settings\" for a thumbnail size a plugin registers but never makes: <code>Re-optimise outdated images<\/code> puts them back as optimised, without encoding them again.<\/li>\n<li>WP-CLI prints its welcome first, even when the theme or a plugin holds the output back.<\/li>\n<li><code>wp takopic run<\/code> numbers the images it processes, with their ID, e.g. <code>Processing image 10\/256: Sunset (ID 147)<\/code>.<\/li>\n<li>The counts of the images stay right with a persistent object cache that missed a change made elsewhere, e.g. by WP-CLI.<\/li>\n<li>The numbers the settings page updates are written as WordPress writes them, e.g. <code>1 044<\/code> in French, not <code>1,044<\/code>.<\/li>\n<\/ul>\n\n<p>The older versions, and those of Squidge before Takopic, are in the <a href=\"https:\/\/github.com\/Striffly\/takopic\/blob\/main\/CHANGELOG.md\">full changelog<\/a>.<\/p>","raw_excerpt":"Squeezes images. Spills no ink, sends no bill. JPG, PNG, WebP and AVIF optimised on your own server, free and unlimited.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=396585"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/striffly"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396585"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396585"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396585"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396585"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396585"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}