Installation

TechArk Media Library Care installs like any standard WordPress plugin. No external dependencies or server configuration required.

  1. 1
    Upload the plugin Go to Plugins → Add New → Upload Plugin and select the techark-media-library-care.zip file, or upload the techark-media-library-care/ folder via FTP to /wp-content/plugins/.
  2. 2
    Activate Navigate to Plugins → Installed Plugins and click Activate next to TechArk Media Library Care. Two database tables are created automatically on activation.
  3. 3
    Open the plugin Go to Media → Library Care in the WordPress admin sidebar. You'll land on the main dashboard, ready to run your first scan.
Requirements WordPress 6.0 or higher, PHP 7.4 or higher. The image optimization feature additionally requires GD or ImageMagick (both are available on virtually all managed WordPress hosts).

Running Your First Scan

A full scan examines every attachment in your media library against all 7 issue detectors in a single pass. Results are stored in the database and remain available until you run the next scan.

  1. 1
    Click "Run Full Scan" The button appears at the top of every tab. A progress bar will animate while the scan runs in the browser tab — keep it open until complete.
  2. 2
    Review the Overview When the scan finishes you'll land on the Overview tab. Stat cards show counts per issue type, and colored recommendations highlight the most impactful actions to take first.
  3. 3
    Drill into Issues Click the Issues tab to see paginated results for each issue type. Use the sub-tabs at the top (Unused, Duplicates, Unoptimized, etc.) to filter by category.
Scan reflects the moment it ran Statistics shown in the Overview and Issues tabs are based on the last scan. If you upload new files or make changes, click Run Full Scan again to refresh.

Scan duration

Most libraries under 500 images scan in a few seconds. Libraries with 5,000+ files typically take 30–60 seconds. Scan speed depends on the number of attachments, not their file sizes.

Interface Overview

The plugin's interface is organized into four top-level tabs. Each is accessible from the tab bar at the top of the page.

Overview

Stat cards for all issue types, color-coded recommendations, storage breakdown by file type, WebP coverage, lifetime savings, and scan history with trend indicators.

Issues

Seven sub-tabs — one per issue type. Each shows a paginated, filterable table with thumbnail previews, file details, and per-row and bulk action buttons.

SEO

Four sub-panels covering missing alt text, poor alt quality, missing titles, and bad filenames — with inline editors and bulk fill actions.

Settings

Image optimization options, scheduled scan configuration, thumbnail cleanup tool, and the Anthropic API key for AI alt text generation.

Toolbar

The toolbar is always visible across all tabs. It contains the Run Full Scan button, the last-scan timestamp, and the Export CSV button (visible after a scan).

Overview Tab

Stat cards

Eight cards display the key counts from the last scan: total attachments, unused, duplicates, unoptimized, broken, missing alt text, orphaned files, and total storage used.

Recommendations

Up to five prioritized recommendations are shown based on your scan results. They are ranked by impact:

  1. Broken attachments (highest — these cause 404 errors)
  2. Orphaned files
  3. Missing alt text
  4. Unused files
  5. Duplicates
  6. Unoptimized images

Each recommendation card shows a count and a direct action button. Clicking it takes you to the relevant Issues sub-tab or triggers a bulk action.

Storage breakdown

A bar chart shows storage used by file type (images, video, audio, documents). Below it, the Reclaimable figure shows how much disk space you'd recover by deleting all unused and orphaned files.

Lifetime savings

A running total of images optimized and bytes saved since the plugin was installed. This counter persists across scans. You can reset it in the Settings tab.

Scan history

The last 10 scans are shown as a sparkline with exact counts below. A trend arrow (↑ ↓ —) next to each metric shows whether the issue count went up, down, or stayed flat compared to the previous scan.

Issues Tab

All detected issues are organized into seven sub-tabs. The Issues badge in the main tab bar shows the total count across all types.

Common controls

Every issue sub-tab shares the same set of controls:

  • Filter bar — filter by file type (image, video, audio, document) and minimum file size.
  • Select all — a checkbox in the table header selects all visible rows for bulk action.
  • Bulk Delete / Bulk Optimize — acts on all selected items at once.
  • Pagination — results are paged at 20 per page by default.

Row actions

Each row shows a thumbnail, filename, file size, dimensions, and upload date. Available per-row actions depend on the issue type:

  • Delete — permanently deletes the attachment file and media library record.
  • Optimize — compresses and optionally converts the image to WebP.
  • Restore — reverts an optimized image to its original backed-up version.
  • Import to Library — registers an orphaned file as a proper attachment.
  • Fix Alt — inline text field to add or edit alt text.
  • Where used — shows which posts/pages reference this attachment.
Counts update without a rescan When you delete or optimize an item, its row is removed from the table and the count in the stat card decreases immediately — no need to re-run a full scan after each action.

SEO Tab

The SEO tab runs a live analysis of your image library's metadata quality — independently of the Issues scan. It covers four problem categories.

Missing Alt Text

Images with an empty alt attribute. An inline text field lets you type a new alt directly from the table. The Use Title as Alt bulk action fills missing alt text with each image's title in one click — useful for bulk cleanup.

Poor Alt Quality

Alt text that is technically present but unhelpful: fewer than 5 characters, over 125 characters, or matching generic words like image, photo, banner, screenshot. Edit inline or use the AI button to generate a better description.

Missing Title

Attachments with a blank post title in the media library. An inline field lets you type the title and save with a single click per row, or select multiple and bulk-save.

Bad Filename

Filenames that hurt SEO and readability: camera defaults like IMG_3847.jpg or DSC_0012.jpg, purely numeric names, names with spaces. These are flagged for review — renaming requires re-uploading the file, but seeing them in one place helps you plan uploads going forward.

Settings Tab

The Settings tab consolidates all configuration for optimization, scheduling, and cleanup into one place.

Optimization settings

These defaults apply when you click Optimize on any image from the Issues tab. They can also be overridden per-image in the optimization dialog.

SettingDescription
Quality82 JPEG and WebP compression quality (1–100). Values between 75 and 85 produce good quality at significant size reduction for most images.
Max Width2560px Images wider than this value are scaled down proportionally. Set to 0 to disable width capping.
Max Height2560px Images taller than this value are scaled down proportionally. Set to 0 to disable height capping.
Strip EXIFon Removes embedded camera metadata (GPS coordinates, lens model, etc.) from JPEG files. Reduces file size by 10–30 KB on average.
Convert to WebPoff Creates a .webp version alongside the original. The original file is preserved. Modern browsers serve WebP automatically when available.
Keep Backupon Saves the original file before optimizing. Backups can be restored individually from the Issues table or deleted to reclaim space.
AI API Key Your Anthropic API key, used only for the AI alt text generator. Leave blank if you don't use that feature. See AI Alt Text for details.

Thumbnail Cleanup

When you remove an image size from your theme (e.g., a portfolio-thumb size no longer in use), WordPress stops generating it — but old thumbnail files already on disk remain.

Click Scan for Orphaned Thumbnails to find these leftovers. The scan shows a count and total size. Click Delete Orphaned Thumbnails to remove them and update the attachment metadata for each affected image.

Safe to run on live sites Only thumbnails for sizes that are no longer registered in WordPress are removed. Active image sizes are never touched.

Unused Files

Attachments in your media library that are not referenced anywhere on the site. These consume disk space and serve no purpose.

How detection works

The detector checks over 20 sources before marking a file as unused:

  • Featured images across all post types
  • Post content — Gutenberg blocks, classic editor, reusable blocks
  • Page builders — Avada/Fusion Builder, Divi, Elementor, Beaver Builder, Bricks, WPBakery, Oxygen
  • Slider Revolution — both postmeta and custom database tables
  • Widget areas and customizer settings
  • SEO plugin social images (Yoast, Rank Math, AIOSEO)
  • WooCommerce product galleries
  • Any postmeta or WordPress option containing an uploads URL
When to be cautious Files referenced only in email templates, external integrations, or dynamically constructed URLs may be flagged as unused. Review thumbnails before bulk-deleting.

Actions

Use Where Used on any row to confirm it's truly unreferenced before deleting. Bulk Delete removes all selected attachments permanently. Delete All Unused in the Recommendations section handles everything in one action.

Duplicates

Files with identical content, regardless of filename. Each duplicate group shows the original file and all copies below it.

How detection works

Each attachment's file is hashed with MD5. Hashes are cached in post metadata (_mlcare_file_hash) keyed to the file's modification time, so unchanged files are not re-hashed on subsequent scans — only new or modified uploads are processed.

Files with the same hash are grouped; the earliest-uploaded file is treated as the original. All others are listed as duplicates.

Actions

Review each group before deleting — a duplicate might be used in a different context than the original. Delete All Duplicates from the Recommendations section keeps the first copy in each group and removes the rest.

Unoptimized Images

Images that are unnecessarily large in file size or pixel dimensions, or that don't have a WebP version.

Detection criteria

  • File size greater than 500 KB
  • Width or height greater than 2,560 px
  • Legacy formats (BMP, TIFF)
  • JPEG or PNG ≥ 100 KB with no .webp sidecar file (when WebP is enabled)

Files previously optimized by this plugin are not re-flagged unless they still exceed thresholds after optimization.

Per-image optimization dialog

Clicking Optimize on any row opens a dialog showing the current file size, dimensions, and reason for flagging. You can adjust the quality, resize limits, and WebP/EXIF settings before confirming. A before/after comparison card is shown after the optimization completes.

Restoring originals

If Keep Backup is enabled, a Restore button appears on any previously optimized image. Clicking it replaces the current file with the backed-up original.

Broken Attachments

Media library records that point to files no longer present on disk. These produce 404 errors when WordPress tries to serve the image and prevent thumbnails from generating.

Common causes

  • Files deleted directly from disk via FTP or cPanel without removing the attachment record
  • Migrating a site and missing files in the transfer
  • Cloud offload plugins that removed local copies

Actions

If you have the original file, re-upload it and update the attachment record. If the file is genuinely lost, delete the attachment record to clean up your media library and remove the 404 source.

Missing Alt Text

Image attachments with an empty alt attribute. Alt text is required for WCAG 2.1 accessibility compliance and improves image indexing in search engines.

Actions

Three ways to fix missing alt text:

  • Inline edit — click the Fix Alt field on any row, type the text, and click Save.
  • Use Title as Alt — bulk action that copies each image's title into its alt field for all selected rows.
  • AI Generate — the lightbulb button sends the image to Claude to generate a descriptive alt text. Requires an Anthropic API key in Settings. See AI Alt Text.

Orphaned Files

Files on disk inside the uploads directory that have no corresponding attachment record in WordPress. They take up space but cannot be found or managed through the Media Library.

How detection works

The scanner builds a complete list of known files — both original attachments and all registered thumbnail sizes — from the WordPress database, then walks the uploads directory recursively. Any file not on the known list is flagged as orphaned.

Backup files created by this plugin (.mlcare-backup) are excluded from orphan detection.

Supported file types

jpg, jpeg, png, gif, webp, svg, pdf, mp4, mov, avi, mp3, zip, doc, docx, xls, xlsx, pptx

Actions

  • Import to Library — registers the file as a proper WordPress attachment, runs thumbnail generation, and removes it from the orphaned list.
  • Delete File — permanently deletes the file from disk.
  • Delete All Orphaned — bulk-removes every orphaned file in one action.
Review before bulk-deleting Some orphaned files may be intentional — raw uploads, temp files from other plugins, or assets referenced via hardcoded HTML rather than WordPress attachment IDs.

Image Optimization

The optimizer compresses, resizes, strips metadata, and converts images — using ImageMagick when available and falling back to GD.

Single image

Click Optimize on any row in the Unoptimized sub-tab. A dialog shows the current stats and lets you adjust settings before running. After completion, a before/after comparison card shows size reduction and dimensions.

Bulk optimize

Select multiple rows and click Bulk Optimize. The operation runs sequentially through each selected image using the settings from the Settings tab.

WebP conversion

Enabling Convert to WebP creates a filename.jpg.webp sidecar alongside the original. WordPress and properly configured servers will serve the WebP version to supporting browsers automatically. The original file is kept.

Backups and restore

With Keep Backup enabled, the original file is copied to filename.mlcare-backup before any optimization. A Restore button appears on the row for any image that has a backup. Clicking Restore replaces the current file with the original and removes the optimization log — the image may re-appear in the Unoptimized list after the next scan.

AI Alt Text Generation

The lightbulb button on any image in the SEO or Issues tab sends the image to Claude (Anthropic) and returns a descriptive alt text suggestion.

Setup

  1. 1
    Get an API key Sign up at console.anthropic.com and create an API key from your account dashboard.
  2. 2
    Enter the key in Settings Paste the key into the AI API Key field in the Settings tab and save.
  3. 3
    Use the lightbulb button On any image row in the SEO tab or Missing Alt sub-tab, click the lightbulb (✦) icon. A spinner appears while the image is analyzed. The generated alt text pre-fills the edit field — review it and click Save to apply.

Limits and behavior

  • Maximum image size: 5 MB
  • Supported formats: JPEG, PNG, GIF, WebP
  • Generated alt text is 10–125 characters, plain text only
  • The suggestion is editable before saving — treat it as a starting point
  • No images are sent to Anthropic unless you explicitly click the lightbulb
Anthropic API usage costs Each generation uses Claude Haiku (the most cost-efficient model). Usage is billed by Anthropic according to image size and the selected model. Check anthropic.com/pricing for current rates.

Scheduled Scans

Automate recurring scans without opening the WordPress admin. Scheduled scans run via WordPress cron and can send email summaries.

Configuration

Go to Settings → Scheduled Scans. Available options:

OptionDescription
Enable Turns scheduled scanning on or off. When disabled, no cron event is registered.
Frequency Daily or Weekly. Uses WordPress's built-in cron schedules.
Email address Where the scan report is sent. Defaults to the site admin email. Leave blank to disable email reports.
Only email if issues When checked, the email report is only sent if at least one of: unused, broken, missing alt, or orphaned files is found. Saves inbox space on clean sites.

Test email

Click Send Test Email to send a report using the current cached scan data. Useful for confirming the email address and format before enabling the schedule.

WordPress Cron dependency Scheduled scans rely on WP-Cron, which fires when someone visits your site. On very low-traffic sites, scans may run later than scheduled. For reliable timing, use a real cron job to hit wp-cron.php on schedule.

Dashboard Widget

A compact health summary widget appears on the WordPress Dashboard (the main admin screen). It shows four key issue counts — unused, unoptimized, missing alt, and orphaned — colored by severity, plus a last-scan timestamp and a link to the full report.

The widget updates automatically whenever a new scan is run. If no scan has been run yet, it shows a prompt to run the first scan.

The widget can be repositioned or hidden using the standard WordPress Screen Options panel at the top of the Dashboard screen.

CSV Export

Click Export CSV in the toolbar to download the current scan results as a spreadsheet. The export covers all issue types in a single file.

Columns included

ColumnDescription
IDWordPress attachment ID
TitleAttachment title from the Media Library
FileFilename (basename only)
URLFull public URL of the attachment
Issue TypeCategory: unused, duplicate, unoptimized, broken, missing_alt, orphaned
DetailsJSON-encoded issue metadata (e.g., original file path for duplicates, reason for unoptimized)
File Size (KB)Current file size on disk
DimensionsWidth × height in pixels

Orphaned files (which have no attachment record) appear with an empty ID and URL, and their relative path in the File and Title columns.

Settings Reference

Data stored by the plugin

The plugin creates two database tables and several options:

NameContents
mlcare_scan_results All detected issues from the latest scan — attachment ID, issue type, JSON metadata, and timestamp.
mlcare_scan_history Aggregate statistics from the last 50 scans, used for the history chart and trend indicators.
mlcare_stats Cached issue counts from the most recent scan. Used by the Overview tab and Dashboard widget.
mlcare_optimize_options Saved optimization settings (quality, dimensions, flags, API key).
mlcare_schedule_options Scheduled scan configuration (enabled, frequency, email).
mlcare_cumulative_savings Running total of images optimized and bytes saved since install.

Post meta keys

The plugin writes post metadata to attachment records:

  • _mlcare_file_hash — MD5 hash of the file, used for duplicate detection caching
  • _mlcare_file_hash_mtime — file modification time at hash time, for cache invalidation
  • _mlcare_optimize_log — serialized log of optimization runs for an image
  • _mlcare_original_backup — path to the backup file, if one was created

Uninstalling

Deleting the plugin via Plugins → Delete removes all tables, options, and post meta listed above. The plugin's scan data and settings are completely removed — your actual media files are not affected.

Frequently Asked Questions

Will the plugin automatically delete any files?
No. Every deletion requires explicit confirmation — either clicking Delete on a row or using a bulk action after selecting rows. There are no background auto-delete operations.
Is there a backup before optimizing?
Yes, when Keep Backup is enabled in Settings (it is on by default). Backups are stored alongside the original file as filename.mlcare-backup and can be restored individually from the Issues table. You can delete backups when you're confident the optimization looks right.
Does this work with Avada, Divi, Elementor, and other page builders?
Yes. Unused image detection covers Avada/Fusion Builder, Divi/ET Builder, Elementor, Beaver Builder, WPBakery, Bricks, Oxygen, Slider Revolution, and more. Images used in page builder shortcodes, JSON data, and custom database tables are all detected as "used" and will not be flagged.
How long does a scan take on a large library?
Libraries under 500 images typically scan in a few seconds. Libraries with 5,000+ attachments generally take 30–60 seconds. The scan runs in the browser — keep the tab open and active until the progress bar completes. For very large libraries, consider using scheduled scans instead.
An image I know is in use is being flagged as unused — why?
This can happen when an image is referenced via a hardcoded URL not stored in WordPress's database (e.g., in an HTML email template, a CSS background in a stylesheet file, or a URL built dynamically in custom PHP). The plugin scans post content, post meta, options, and widget data — but cannot analyze flat files outside WordPress's data store. Use the Where Used button to confirm, and if the file genuinely is in use, consider adding it to a post so WordPress tracks the relationship.
Does it work on multisite?
The plugin installs and operates per-site on a multisite network. Each site has its own scan results, settings, and tables. There is no network-wide scan.
Will the AI alt text feature send my images to a third party?
Only when you explicitly click the lightbulb button on a specific image. No images are sent during normal scans or automatically. The image is sent as base64-encoded data to the Anthropic API. Maximum file size is 5 MB per request. See the AI Alt Text section and Anthropic's Privacy Policy for full details.
What happens to my data when I uninstall the plugin?
All custom database tables and plugin options are removed when you delete the plugin via the WordPress admin. Post meta added by the plugin (hashes, optimization logs, backup paths) is also removed. Your actual media files are not touched.