{"id":302671,"date":"2026-04-28T13:35:38","date_gmt":"2026-04-28T13:35:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ninjaweb-smart-media-optimizer\/"},"modified":"2026-04-28T13:41:40","modified_gmt":"2026-04-28T13:41:40","slug":"ninjaweb-smart-media-optimizer","status":"publish","type":"plugin","link":"https:\/\/bcc.wordpress.org\/plugins\/ninjaweb-smart-media-optimizer\/","author":23484087,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"NinjaWeb Smart Media Optimizer","header_author":"NinjaWeb","header_description":"Local WordPress media optimization with no external API, no credits, no CDN dependency, usage-aware queues, WebP generation, backups, and restore tools.","assets_banners_color":"a5a095","last_updated":"2026-04-28 13:41:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ninjaweb.com.au","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"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":"ninjaw3b","date":"2026-04-28 13:41:40"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3517467,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3517467,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3517488,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3517488,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3517467,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3517467,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3517467,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3517467,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3517467,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Main NinjaWeb Smart Media Optimizer dashboard","2":"Compression settings with preset guidance","3":"Real-time Media Engine with progress and activity log","4":"Media Scanner table with usage and status details","5":"Restore workflow for images with backups"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[29152,29161,14337,233,247],"plugin_category":[54],"plugin_contributors":[261287],"plugin_business_model":[],"class_list":["post-302671","plugin","type-plugin","status-publish","hentry","plugin_tags-image-compression","plugin_tags-image-optimization","plugin_tags-image-resize","plugin_tags-media-library","plugin_tags-performance","plugin_category-security-and-spam-protection","plugin_contributors-ninjaw3b","plugin_committers-ninjaw3b"],"banners":{"banner":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/banner-772x250.png?rev=3517488","banner_2x":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/banner-1544x500.png?rev=3517488","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/icon-128x128.png?rev=3517467","icon_2x":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/icon-256x256.png?rev=3517467","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/screenshot-1.png?rev=3517467","caption":"Main NinjaWeb Smart Media Optimizer dashboard"},{"src":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/screenshot-2.png?rev=3517467","caption":"Compression settings with preset guidance"},{"src":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/screenshot-3.png?rev=3517467","caption":"Real-time Media Engine with progress and activity log"},{"src":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/screenshot-4.png?rev=3517467","caption":"Media Scanner table with usage and status details"},{"src":"https:\/\/ps.w.org\/ninjaweb-smart-media-optimizer\/assets\/screenshot-5.png?rev=3517467","caption":"Restore workflow for images with backups"}],"raw_content":"<!--section=description-->\n<p>NinjaWeb Smart Media Optimizer is a local media optimization engine for WordPress site owners, maintainers, and agencies who want controlled image processing without relying on an external optimization service.<\/p>\n\n<p>The plugin runs inside WordPress using the image tools available on your server. There are no API keys, no credits, no monthly image caps, no required CDN, and no subscription gate for the core workflow. You control when images are scanned, queued, optimized, retried, and restored.<\/p>\n\n<p>The workflow is designed for transparency. Instead of hiding the process behind a remote service, the plugin provides a real-time Media Engine panel with progress, current job details, live activity logging, pause\/resume\/stop controls, failed-item retry, and clear restore options when backups are available.<\/p>\n\n<p>Key features:<\/p>\n\n<ul>\n<li>Local optimization using your WordPress\/server image tools<\/li>\n<li>No external API, no credits, no CDN dependency, and no required subscription<\/li>\n<li>Real-time bulk optimizer with progress, pause, resume, stop, retry, and live activity log<\/li>\n<li>Optimize used images, all pending images, the full Media Library, or selected images<\/li>\n<li>Usage-aware scanner for featured images, galleries, common content embeds, and upload URLs<\/li>\n<li>Local WebP generation for JPEG and PNG images when supported by the server<\/li>\n<li>Search and filter Media Library images from one screen<\/li>\n<li>Oversized-image detection based on your configured maximum width<\/li>\n<li>Compression presets with simple guidance<\/li>\n<li>Custom quality mode for advanced control<\/li>\n<li>Maximum-width resizing for large uploads<\/li>\n<li>Optional minimum file-size threshold so tiny images can be skipped<\/li>\n<li>PNG to JPG conversion modes for non-transparent PNG files<\/li>\n<li>Transparent PNG protection<\/li>\n<li>Optional metadata stripping where supported by the server image editor<\/li>\n<li>Backup originals before changes<\/li>\n<li>Restore selected images or restore all originals when backups exist<\/li>\n<li>Original Kept status when optimization would not reduce the file size<\/li>\n<li>Regenerate WordPress attachment metadata after changes<\/li>\n<li>Preserves attachment IDs instead of replacing posts or breaking relationships<\/li>\n<li>Global dashboard stats for total images, optimized images, pending images, backups, and saved space<\/li>\n<\/ul>\n\n<p>NinjaWeb Smart Media Optimizer is intentionally built for a deliberate, auditable workflow rather than remote black-box processing.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or upload the ZIP through <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the WordPress plugins screen.<\/li>\n<li>Go to <strong>Media &gt; NinjaWeb Smart Media Optimizer<\/strong>.<\/li>\n<li>Choose your compression mode and optimization settings.<\/li>\n<li>Scan, filter, and optimize selected, used, pending, or full-library images.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20use%20an%20external%20api%3F\"><h3>Does it use an external API?<\/h3><\/dt>\n<dd><p>No. The plugin uses the image processing tools available in your WordPress\/server environment.<\/p><\/dd>\n<dt id=\"does%20it%20require%20image%20credits%2C%20a%20cdn%2C%20or%20a%20subscription%3F\"><h3>Does it require image credits, a CDN, or a subscription?<\/h3><\/dt>\n<dd><p>No. The core optimizer runs locally. It does not require credits, an external CDN, or an account with a third-party image service.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20image%20urls%20in%20posts%3F\"><h3>Does it replace image URLs in posts?<\/h3><\/dt>\n<dd><p>No. It preserves the existing attachment ID and optimizes the underlying attached file. This keeps the normal WordPress media relationship intact.<\/p><\/dd>\n<dt id=\"what%20does%20optimize%20used%20images%20do%3F\"><h3>What does Optimize Used Images do?<\/h3><\/dt>\n<dd><p>It builds a queue from images that appear to be used in content, including featured images, common content references, galleries, and upload URLs. This helps process the images that matter first.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20an%20optimization%3F\"><h3>Can I undo an optimization?<\/h3><\/dt>\n<dd><p>Yes. If backups are enabled and a backup exists for that image, you can restore selected originals or restore all originals from the plugin screen.<\/p><\/dd>\n<dt id=\"what%20does%20original%20kept%20mean%3F\"><h3>What does Original Kept mean?<\/h3><\/dt>\n<dd><p>It means the image was processed, but the optimized result did not produce a smaller file. The plugin kept or restored the original based on your settings.<\/p><\/dd>\n<dt id=\"can%20it%20convert%20png%20files%20to%20jpg%3F\"><h3>Can it convert PNG files to JPG?<\/h3><\/dt>\n<dd><p>Yes. You can keep PNG files unchanged, convert non-transparent PNG files, or only keep the JPG conversion when the JPG result is smaller. Transparent PNG files are protected.<\/p><\/dd>\n<dt id=\"does%20it%20generate%20webp%20files%3F\"><h3>Does it generate WebP files?<\/h3><\/dt>\n<dd><p>Yes. The plugin can generate local WebP versions for JPEG and PNG images when the server image library supports WebP generation.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20for%20existing%20sites%3F\"><h3>Is it safe for existing sites?<\/h3><\/dt>\n<dd><p>The plugin is intentionally conservative. Backups are enabled by default, attachment IDs are preserved, and optimizations are controlled from the admin screen.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Local image optimization with no external API, no credits, and no CDN dependency.<\/li>\n<li>Added real-time Media Engine with progress, pause, resume, stop, retry, and live activity logging.<\/li>\n<li>Added Optimize Used Images, Optimize All Pending, Optimize Full Library, selected optimization, and failed-item retry workflows.<\/li>\n<li>Added local WebP generation for JPEG and PNG images when supported by the server.<\/li>\n<li>Added original backups, selected restore, and restore-all-originals workflows.<\/li>\n<li>Added compression presets, custom quality mode, maximum-width resizing, PNG to JPG options, transparent PNG protection, and optional metadata stripping.<\/li>\n<li>Added usage-aware scanning for featured images, galleries, content references, and upload URLs.<\/li>\n<li>Added global dashboard stats for total images, optimized images, pending images, backups, and saved space.<\/li>\n<\/ul>","raw_excerpt":"Free local image optimizer. No API, credits, or CDN. Bulk optimize, WebP, backups, restore, and used-image queues.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=302671"}],"author":[{"embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ninjaw3b"}],"wp:attachment":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302671"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302671"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302671"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302671"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302671"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}