{"id":344324,"date":"2026-07-24T07:06:47","date_gmt":"2026-07-24T07:06:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flowimage-inspector\/"},"modified":"2026-07-26T07:25:39","modified_gmt":"2026-07-26T07:25:39","slug":"khushal-image-audit-tools","status":"publish","type":"plugin","link":"https:\/\/ca.wordpress.org\/plugins\/khushal-image-audit-tools\/","author":23421333,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.15.10","stable_tag":"1.15.10","tested":"7.0.3","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"Khushal Image Audit Tools","header_author":"Khushal Tank","header_description":"Inspect WordPress Media Library images locally with secure, offline image analysis.","assets_banners_color":"ced2f2","last_updated":"2026-07-26 07:25:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/khushal-image-audit-tools\/","header_author_uri":"https:\/\/profiles.wordpress.org\/khushal1995\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":159,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.15.0":{"tag":"1.15.0","author":"khushal1995","date":"2026-07-24 07:06:19"},"1.15.10":{"tag":"1.15.10","author":"khushal1995","date":"2026-07-26 07:25:39"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3620880,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3620880,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3620880,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3620892,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.15.0","1.15.10"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3623078,"resolution":"1","location":"assets","locale":"","width":1600,"height":900},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3623078,"resolution":"10","location":"assets","locale":"","width":1600,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3623078,"resolution":"2","location":"assets","locale":"","width":1600,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3623078,"resolution":"3","location":"assets","locale":"","width":1600,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3623078,"resolution":"4","location":"assets","locale":"","width":1600,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3623078,"resolution":"5","location":"assets","locale":"","width":1600,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3623078,"resolution":"6","location":"assets","locale":"","width":1600,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3623078,"resolution":"7","location":"assets","locale":"","width":1600,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3623078,"resolution":"8","location":"assets","locale":"","width":1600,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3623078,"resolution":"9","location":"assets","locale":"","width":1600,"height":900}},"screenshots":{"1":"Dashboard with Media Library statistics, charts, and quick actions.","2":"Image Converter with single and bulk conversion workflows.","3":"Image Compression with quality controls and storage savings.","4":"Image Resize with before\/after preview.","5":"Duplicate Finder with manual cleanup tools.","6":"Image Usage Finder showing where images are used across content.","7":"Unused images view with Open in Media and Delete actions.","8":"Bulk Actions for rename, alt text, compress, resize, convert, and restore.","9":"CSV Reports for SEO, performance, accessibility, health, and storage.","10":"Settings page for compression, WebP, backups, upload automation, and engines."}},"plugin_section":[],"plugin_tags":[19029,273113,163,12497,233],"plugin_category":[50],"plugin_contributors":[252686],"plugin_business_model":[],"class_list":["post-344324","plugin","type-plugin","status-publish","hentry","plugin_tags-gd","plugin_tags-image-inspection","plugin_tags-images","plugin_tags-imagick","plugin_tags-media-library","plugin_category-media","plugin_contributors-khushal1995","plugin_committers-khushal1995"],"banners":{"banner":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/banner-772x250.png?rev=3620892","banner_2x":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/banner-1544x500.png?rev=3620880","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/icon-128x128.png?rev=3620880","icon_2x":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/icon-256x256.png?rev=3620880","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-1.png?rev=3623078","caption":"Dashboard with Media Library statistics, charts, and quick actions."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-2.png?rev=3623078","caption":"Image Converter with single and bulk conversion workflows."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-3.png?rev=3623078","caption":"Image Compression with quality controls and storage savings."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-4.png?rev=3623078","caption":"Image Resize with before\/after preview."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-5.png?rev=3623078","caption":"Duplicate Finder with manual cleanup tools."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-6.png?rev=3623078","caption":"Image Usage Finder showing where images are used across content."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-7.png?rev=3623078","caption":"Unused images view with Open in Media and Delete actions."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-8.png?rev=3623078","caption":"Bulk Actions for rename, alt text, compress, resize, convert, and restore."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-9.png?rev=3623078","caption":"CSV Reports for SEO, performance, accessibility, health, and storage."},{"src":"https:\/\/ps.w.org\/khushal-image-audit-tools\/assets\/screenshot-10.png?rev=3623078","caption":"Settings page for compression, WebP, backups, upload automation, and engines."}],"raw_content":"<!--section=description-->\n<p>Khushal Image Audit Tools provides a modular foundation for inspecting WordPress Media Library images locally.<\/p>\n\n<p>The plugin:<\/p>\n\n<ul>\n<li>Works completely offline.<\/li>\n<li>Sends no data to external services.<\/li>\n<li>Uses Imagick when available.<\/li>\n<li>Falls back to GD automatically.<\/li>\n<li>Converts JPEG, PNG, and WebP images individually or in safe bulk batches.<\/li>\n<li>Keeps protected original copies that can be restored from the Media Library.<\/li>\n<li>Compresses images in lossless or lossy background batches with storage reports.<\/li>\n<li>Resizes images by width, height, or percentage with before\/after previews.<\/li>\n<li>Finds duplicate images by filename, file size, dimensions, and exact file hash.<\/li>\n<li>Provides manual-only duplicate cleanup tools that never delete automatically.<\/li>\n<li>Finds image usage across posts, pages, products, custom post types, Gutenberg, and Elementor.<\/li>\n<li>Runs rename, alt, compression, resize, conversion, and restore actions on selected images.<\/li>\n<li>Streams SEO, performance, accessibility, media health, and storage CSV reports.<\/li>\n<li>Includes no telemetry, analytics, tracking, or licensing code.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>khushal-image-audit-tools<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate Khushal Image Audit Tools from the Plugins screen.<\/li>\n<li>Open <strong>Khushal Image Audit Tools<\/strong> from the WordPress admin sidebar.<\/li>\n<li>Use Dashboard, Converter, Compression, Resize, and the other tools from that menu.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20send%20image%20data%20externally%3F\"><h3>Does this plugin send image data externally?<\/h3><\/dt>\n<dd><p>No. All processing is performed locally with WordPress Core, Imagick, or GD.<\/p><\/dd>\n<dt id=\"is%20imagick%20required%3F\"><h3>Is Imagick required?<\/h3><\/dt>\n<dd><p>No. Imagick is preferred when available and GD is used as the fallback.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20the%20plugin%20settings%3F\"><h3>Where do I find the plugin settings?<\/h3><\/dt>\n<dd><p>Open <strong>Khushal Image Audit Tools \u2192 Image Settings<\/strong> in the WordPress admin sidebar.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20delete%20images%20automatically%3F\"><h3>Does this plugin delete images automatically?<\/h3><\/dt>\n<dd><p>No. Duplicate cleanup and other destructive actions are always manual and confirmation-based.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.15.10<\/h4>\n\n<ul>\n<li>Fixed Dashboard showing stale scan data for trashed\/deleted images. Stats, formats, and Scan Health now follow the live Media Library only.<\/li>\n<\/ul>\n\n<h4>1.15.9<\/h4>\n\n<ul>\n<li>\u201cConvert to WebP\u201d from Missing WebP now opens the Converter with only those images listed (thumbnail, filename, and reason), so you can see exactly which file to convert.<\/li>\n<\/ul>\n\n<h4>1.15.8<\/h4>\n\n<ul>\n<li>\u201cCompress now\u201d from Oversized Images now opens Compression with only those oversized files listed (thumbnail, filename, and size), so you can see exactly which image to compress.<\/li>\n<\/ul>\n\n<h4>1.15.7<\/h4>\n\n<ul>\n<li>Made Scan Health easier to understand with a clear summary, issue breakdown (alt text, unused, duplicates, oversized, and more), fix links, and failed-scan reasons.<\/li>\n<\/ul>\n\n<h4>1.15.6<\/h4>\n\n<ul>\n<li>Fixed Dashboard Quick Actions layout so all five buttons share equal width, height, and spacing.<\/li>\n<\/ul>\n\n<h4>1.15.5<\/h4>\n\n<ul>\n<li>Added a Delete action for unused images on the Image Usage page. Images are moved to the Media Trash after confirmation and only when the usage scan found no linked content.<\/li>\n<\/ul>\n\n<h4>1.15.4<\/h4>\n\n<ul>\n<li>Bulk resize is now \u201cLimit Oversized Images\u201d: only shrinks images above the max size, never upscales, and skips images already within the limit.<\/li>\n<li>Updated bulk resize copy and capped bulk percentage shrink at 100%.<\/li>\n<\/ul>\n\n<h4>1.15.3<\/h4>\n\n<ul>\n<li>Fixed Compress All Images \/ Resize mode tabs not switching (stale dataset names after rename).<\/li>\n<li>Added a proper image placeholder and prevented broken empty  previews when no thumbnail is selected.<\/li>\n<\/ul>\n\n<h4>1.15.2<\/h4>\n\n<ul>\n<li>Clarified the \u201cno image engine\u201d error: GD\/Imagick must be enabled as PHP extensions in hosting, not only in plugin settings.<\/li>\n<li>Fixed Settings checkboxes so unavailable engines stay selectable as preferences and are no longer disabled\/lost on save.<\/li>\n<li>Added automatic fallback to any available PHP image engine when settings would otherwise leave none selected.<\/li>\n<\/ul>\n\n<h4>1.15.1<\/h4>\n\n<ul>\n<li>Fixed a fatal activation error on PHP 8.0\/8.1 caused by <code>true|\\WP_Error<\/code> return types (PHP 8.2+ only). Replaced with <code>bool|\\WP_Error<\/code> across the plugin.<\/li>\n<li>Replaced PHP 8.1+ <code>never<\/code> return types with <code>void<\/code> for PHP 8.0 compatibility.<\/li>\n<\/ul>\n\n<h4>1.15.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to Khushal Image Audit Tools (slug: khushal-image-audit-tools) to use a distinctive personal brand and avoid trademark conflict with \u201cFlowImage\u201d.<\/li>\n<li>Confirmed Settings API sanitize_callback on register_setting().<\/li>\n<\/ul>\n\n<h4>1.14.6<\/h4>\n\n<ul>\n<li>WordPress.org submission readiness: set author to Khushal Tank (@khushal1995), fixed installation steps, added Screenshots section, and blank index.php guards in asset folders.<\/li>\n<\/ul>\n\n<h4>1.14.5<\/h4>\n\n<ul>\n<li>Refreshed the Dashboard: gradient header, colored stat-card icons, \"fix it\" shortcuts on issue cards, and a tidier Quick Actions panel.<\/li>\n<\/ul>\n\n<h4>1.14.4<\/h4>\n\n<ul>\n<li>Cleared the last Plugin Check warnings around uncached direct writes and dynamic usage listing SQL.<\/li>\n<\/ul>\n\n<h4>1.14.3<\/h4>\n\n<ul>\n<li>Resolved all Plugin Check warnings with prepared identifier placeholders, documented nonce verification, scoped template variables, and intentional cleanup-query annotations.<\/li>\n<li>Added the required languages directory and removed the discouraged manual text-domain loader.<\/li>\n<\/ul>\n\n<h4>1.14.2<\/h4>\n\n<ul>\n<li>Fixed Plugin Check errors: added missing translators comments for i18n placeholders, and removed development-only .distignore and phpcs.xml.dist from the plugin package.<\/li>\n<\/ul>\n\n<h4>1.14.1<\/h4>\n\n<ul>\n<li>Fixed all Plugin Check PHP errors: WP_Filesystem for rename\/chmod\/rmdir, safe LIKE queries, in-memory JPEG stripper, and CSV stream phpcs compliance.<\/li>\n<\/ul>\n\n<h4>1.14.0<\/h4>\n\n<ul>\n<li>Added the Khushal brand logo to every plugin page header.<\/li>\n<li>Redesigned Image Compression and Image Resize as clear step-by-step workflows with single\/bulk tabs.<\/li>\n<li>Added quick 1-2-3 usage guides to Duplicate Finder, Usage Finder, and Bulk Actions.<\/li>\n<li>Unified page headers, engine status badges, and empty states across all admin pages.<\/li>\n<\/ul>\n\n<h4>1.13.0<\/h4>\n\n<ul>\n<li>Redesigned Image Converter as a clear three-step workflow.<\/li>\n<li>Separated single and bulk conversion modes to prevent accidental library-wide actions.<\/li>\n<li>Added compatible image counts, format summaries, recommended settings, and proper empty states.<\/li>\n<li>Fixed hidden converter controls and empty previews appearing unexpectedly.<\/li>\n<\/ul>\n\n<h4>1.12.0<\/h4>\n\n<ul>\n<li>Added direct per-image filename and ALT text editing to Image Bulk Actions.<\/li>\n<li>Added automatic image selection while typing, clearer validation, and user-friendly action labels.<\/li>\n<li>Kept pattern rename, compression, resize, conversion, and restore as advanced bulk tools.<\/li>\n<\/ul>\n\n<h4>1.11.3<\/h4>\n\n<ul>\n<li>Fixed Image Bulk Actions to process selected images through AJAX batches instead of WP-Cron alone.<\/li>\n<li>Hardened bulk selection UI so Start stays disabled until images are selected and jobs resume reliably.<\/li>\n<\/ul>\n\n<h4>1.11.2<\/h4>\n\n<ul>\n<li>Fixed Image Usage Finder so scans run through AJAX batches instead of waiting on WP-Cron alone.<\/li>\n<li>Improved Gutenberg and Elementor usage detection and removed the unnecessary local-file requirement.<\/li>\n<\/ul>\n\n<h4>1.11.1<\/h4>\n\n<ul>\n<li>Moved every plugin page from Media into a dedicated Khushal Image Audit Tools top-level menu.<\/li>\n<li>Added backward-compatible redirects for previous Media submenu URLs.<\/li>\n<li>Updated page-specific asset loading and internal admin links for the new menu structure.<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li>Added validated settings for compression, WebP, backups, upload scanning, and automatic conversion.<\/li>\n<li>Added configurable GD and Imagick engine selection with live local capability diagnostics.<\/li>\n<li>Added protected plugin data reset and asynchronous upload automation.<\/li>\n<\/ul>\n\n<h4>1.10.0<\/h4>\n\n<ul>\n<li>Added five secure, streamed CSV report generators.<\/li>\n<li>Added spreadsheet-safe SEO, performance, accessibility, and media health exports.<\/li>\n<li>Added live attachment storage, derivative size, savings, and backup reporting.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>Added unified selected-image bulk actions with resumable progress tracking.<\/li>\n<li>Added safe bulk filename patterns and offline alt text generation.<\/li>\n<li>Integrated compression, resize, conversion, and protected restore services.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>Added Image Usage Finder with linked content reports.<\/li>\n<li>Added WordPress, Gutenberg, Elementor, WooCommerce, and custom post type detection.<\/li>\n<li>Added resumable background usage indexing and unused image filtering.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Added duplicate image finder using filename, file size, dimensions, and file hash.<\/li>\n<li>Added exact and potential duplicate groups with manual keep, ignore, and trash cleanup.<\/li>\n<li>Added resumable background duplicate indexing with no automatic deletion.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Added width, height, and percentage image resizing.<\/li>\n<li>Added aspect-ratio controls and server-generated before\/after previews.<\/li>\n<li>Added safe bulk resize jobs and original restoration.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Added lossless and lossy JPEG, PNG, and WebP compression.<\/li>\n<li>Added quality controls, protected restore points, and compression reports.<\/li>\n<li>Added resumable WP-Cron bulk compression and storage-saving statistics.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added the production Image Converter with Imagick and GD engines.<\/li>\n<li>Added single and bulk conversion with progress and error reporting.<\/li>\n<li>Added protected original backups, restore support, and Media Library integration.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial production architecture.<\/li>\n<\/ul>","raw_excerpt":"Secure, lightweight, offline image inspection for the WordPress Media Library.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344324"}],"author":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/khushal1995"}],"wp:attachment":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344324"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344324"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344324"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344324"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344324"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}