{"id":319914,"date":"2026-06-01T06:43:17","date_gmt":"2026-06-01T06:43:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/local-webp-avif-image-optimizer\/"},"modified":"2026-06-01T06:43:06","modified_gmt":"2026-06-01T06:43:06","slug":"harvify-image-optimizer-webp-avif","status":"publish","type":"plugin","link":"https:\/\/srd.wordpress.org\/plugins\/harvify-image-optimizer-webp-avif\/","author":23508132,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.0","requires_php":"","requires_plugins":null,"header_name":"Harvify Image Optimizer for WebP and AVIF","header_author":"harv","header_description":"Fast, client-side bulk image optimizer using browser processing.","assets_banners_color":"","last_updated":"2026-06-01 06:43:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":22,"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":"jethalal","date":"2026-06-01 06:43:06"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[194661,56174,146523,29158,15376],"plugin_category":[],"plugin_contributors":[265280],"plugin_business_model":[],"class_list":["post-319914","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-compress-images","plugin_tags-image-converter","plugin_tags-image-optimizer","plugin_tags-webp","plugin_contributors-harv","plugin_committers-jethalal"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/harvify-image-optimizer-webp-avif.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Harvify Image Optimizer helps WordPress administrators convert Media Library images to modern WebP and AVIF formats without running heavy compression work inside PHP.<\/p>\n\n<p>The plugin scans lightweight attachment metadata first, then your browser converts selected images in a small queue. Images are processed with Web Workers and OffscreenCanvas where available, uploaded back through authenticated WordPress REST API requests, and released from browser memory as each item finishes.<\/p>\n\n<p>This client-side approach is designed for shared hosting environments where PHP memory limits and execution timeouts can interrupt large image optimization jobs.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>Convert JPEG, PNG, WebP, and AVIF source images to WebP or AVIF.<\/li>\n<li>Scan one source format at a time so existing target-format images are not accidentally reprocessed.<\/li>\n<li>Select a few images for a test run before processing the full queue.<\/li>\n<li>Adjust quality and queue concurrency from the admin screen.<\/li>\n<li>Save queue state in the browser with IndexedDB so work can resume after interruption.<\/li>\n<li>Keep wp-admin responsive by doing conversion work in browser workers.<\/li>\n<li>Process images locally in your browser without using an external optimization API.<\/li>\n<li>Optional original-file deletion, disabled by default.<\/li>\n<\/ul>\n\n<h4>Privacy and external services<\/h4>\n\n<p>Harvify Image Optimizer does not send images to a third-party compression service, load scripts from external CDNs, or track usage. Images are fetched by your browser from your own WordPress site and uploaded back to your own WordPress REST API.<\/p>\n\n<p>AVIF encoding uses the bundled MIT-licensed @saschazar\/wasm-avif WebAssembly encoder.<\/p>\n\n<h4>Format testing<\/h4>\n\n<p>If you want to experiment with AVIF conversion outside your WordPress Media Library first, you can use this browser-based test tool:<\/p>\n\n<p><a href=\"https:\/\/conversores.online\/en\/avif-to-png-converter\/\">AVIF to PNG Converter<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>Open Harvify Image Optimizer in the WordPress admin menu.<\/li>\n<li>Choose a source format, choose WebP or AVIF as the target, and scan the library.<\/li>\n<li>Select a few test images if desired, adjust quality, and start the selected queue.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20conversions%20are%20supported%3F\"><h3>Which conversions are supported?<\/h3><\/dt>\n<dd><p>The source selector can scan JPEG, PNG, WebP, or AVIF attachments. The target selector can write WebP or AVIF, depending on browser, WordPress, and server image metadata support.<\/p><\/dd>\n<dt id=\"can%20i%20test%20only%20a%20few%20images%20first%3F\"><h3>Can I test only a few images first?<\/h3><\/dt>\n<dd><p>Yes. Scan a source format, select only the queue rows you want to process, adjust quality, and start the selected queue. This is recommended before processing a large live media library.<\/p><\/dd>\n<dt id=\"does%20it%20modify%20theme%20or%20plugin%20files%3F\"><h3>Does it modify theme or plugin files?<\/h3><\/dt>\n<dd><p>No. This version only replaces Media Library attachment files inside the uploads directory. Theme and plugin asset rewriting is intentionally excluded because it can break updates, checksums, and third-party package expectations.<\/p><\/dd>\n<dt id=\"does%20this%20send%20my%20images%20to%20a%20remote%20service%3F\"><h3>Does this send my images to a remote service?<\/h3><\/dt>\n<dd><p>No. Images are fetched by your browser from your own WordPress site and uploaded back to your WordPress REST API.<\/p><\/dd>\n<dt id=\"why%20can%20avif%20be%20slower%20than%20webp%3F\"><h3>Why can AVIF be slower than WebP?<\/h3><\/dt>\n<dd><p>AVIF compression is more CPU intensive, especially when using a WebAssembly encoder in the browser. For large batches, start with a small test selection and keep concurrency low.<\/p><\/dd>\n<dt id=\"why%20is%20avif%20unavailable%20on%20some%20sites%3F\"><h3>Why is AVIF unavailable on some sites?<\/h3><\/dt>\n<dd><p>AVIF output depends on browser WebAssembly support and WordPress\/server support for AVIF media metadata. WordPress added AVIF support in version 6.5, but the hosting image library must also support it.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20tab%20is%20closed%3F\"><h3>What happens if the tab is closed?<\/h3><\/dt>\n<dd><p>The queue is saved in IndexedDB in the same browser. Open Harvify Image Optimizer again and choose Start Selected \/ Resume.<\/p><\/dd>\n<dt id=\"are%20original%20files%20deleted%3F\"><h3>Are original files deleted?<\/h3><\/dt>\n<dd><p>No, not by default. The admin must explicitly enable the delete originals option before starting the queue.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Convert Media Library images to WebP or AVIF locally in your browser.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/319914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=319914"}],"author":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jethalal"}],"wp:attachment":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=319914"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=319914"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=319914"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=319914"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=319914"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=319914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}