{"id":368864,"date":"2026-09-17T17:07:19","date_gmt":"2026-09-17T17:07:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/medivora-media-library-health\/"},"modified":"2026-09-17T17:07:08","modified_gmt":"2026-09-17T17:07:08","slug":"librizent-media-library-health","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/librizent-media-library-health\/","author":23530379,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Librizent - Media Library Health","header_author":"Muhammad Mujahid Sarfraz","header_description":"Find and understand hidden problems in your WordPress Media Library.","assets_banners_color":"906fa0","last_updated":"2026-09-17 17:07:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"mujahidwp","date":"2026-09-17 17:07:08","revision":3700653}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3700635,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3700635,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3700635,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3700635,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3700635,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3700635,"resolution":"1","location":"assets","locale":"","width":1320,"height":1747},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3700635,"resolution":"10","location":"assets","locale":"","width":1320,"height":808},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3700635,"resolution":"2","location":"assets","locale":"","width":1320,"height":1120},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3700635,"resolution":"3","location":"assets","locale":"","width":1320,"height":1120},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3700635,"resolution":"4","location":"assets","locale":"","width":1320,"height":1180},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3700635,"resolution":"5","location":"assets","locale":"","width":1320,"height":1136},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3700635,"resolution":"6","location":"assets","locale":"","width":1320,"height":1240},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3700635,"resolution":"7","location":"assets","locale":"","width":1320,"height":1140},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3700635,"resolution":"8","location":"assets","locale":"","width":1320,"height":1120},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3700635,"resolution":"9","location":"assets","locale":"","width":1320,"height":1036}},"screenshots":{"1":"Librizent Dashboard with purple\/orange branding, overall score, scan action, and issue cards.","2":"Missing ALT Text review with manual ALT editing.","3":"Large Images review showing dimensions and file sizes.","4":"Possibly Unused Media review with usage limitations explained.","5":"Transparent score deduction breakdown.","6":"Media Usage workspace with usage-state filters and focused attachment review.","7":"Scan History showing score trends, scan duration, and aggregate issue counts.","8":"Heavy image file-size review with configurable threshold and file details.","9":"Missing or unreadable local file review for broken attachment records.","10":"Modern Settings screen for image dimension threshold, file-size threshold, and review pagination."}},"plugin_section":[],"plugin_tags":[1953,17214,269563,233,231428],"plugin_category":[34],"plugin_contributors":[281325],"plugin_business_model":[],"class_list":["post-368864","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-alt-text","plugin_tags-image-audit","plugin_tags-media-library","plugin_tags-media-management","plugin_category-accessibility","plugin_contributors-mujahidwp","plugin_committers-mujahidwp"],"banners":{"banner":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/banner-772x250.png?rev=3700635","banner_2x":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/banner-1544x500.png?rev=3700635","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/icon.svg?rev=3700635","icon":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/icon.svg?rev=3700635","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-1.png?rev=3700635","caption":"Librizent Dashboard with purple\/orange branding, overall score, scan action, and issue cards."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-2.png?rev=3700635","caption":"Missing ALT Text review with manual ALT editing."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-3.png?rev=3700635","caption":"Large Images review showing dimensions and file sizes."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-4.png?rev=3700635","caption":"Possibly Unused Media review with usage limitations explained."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-5.png?rev=3700635","caption":"Transparent score deduction breakdown."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-6.png?rev=3700635","caption":"Media Usage workspace with usage-state filters and focused attachment review."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-7.png?rev=3700635","caption":"Scan History showing score trends, scan duration, and aggregate issue counts."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-8.png?rev=3700635","caption":"Heavy image file-size review with configurable threshold and file details."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-9.png?rev=3700635","caption":"Missing or unreadable local file review for broken attachment records."},{"src":"https:\/\/ps.w.org\/librizent-media-library-health\/assets\/screenshot-10.png?rev=3700635","caption":"Modern Settings screen for image dimension threshold, file-size threshold, and review pagination."}],"raw_content":"<!--section=description-->\n<p>Librizent is a lightweight Media Library health and audit plugin. It helps site owners find review-worthy media issues before they become website problems.<\/p>\n\n<p>Librizent is not an image optimization plugin. It does not compress, replace, rename, or automatically delete media. It does not automatically write ALT text.<\/p>\n\n<p>The workflow is deliberately safe: <strong>Scan \u2192 Review \u2192 Decide<\/strong>.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Media Health Score calculated from actual scan results.<\/li>\n<li>Missing ALT text detection for images with completely empty ALT values.<\/li>\n<li>Oversized image detection with a configurable pixel threshold.<\/li>\n<li>Heavy image file-size detection with a configurable per-image MB threshold.<\/li>\n<li>Missing or incomplete image dimension metadata detection.<\/li>\n<li>Missing or unreadable local attachment file detection, with an offloaded-media caution.<\/li>\n<li>Potentially poor filename detection using conservative filename patterns.<\/li>\n<li>Possible duplicate detection using SHA-256 hashes where practical and metadata signatures as a fallback.<\/li>\n<li>Possibly Unused Media review using WordPress-native attachment, featured-image, and content-reference checks.<\/li>\n<li>Manual ALT text editing with capability and nonce checks.<\/li>\n<li>Batched manual scanning designed to avoid loading the full Media Library into memory.<\/li>\n<li>Batch-built usage index so post-content and featured-image checks are not repeated once per attachment.<\/li>\n<li>Dedicated Media Usage workspace with Usage Found, Possibly Unused, and live attachment review states.<\/li>\n<li>Scan History with up to 10 compact local summaries, score trends, issue totals, and scan duration.<\/li>\n<li>Five focused admin destinations: Dashboard, Media Health, Media Usage, Scan History, and Settings.<\/li>\n<li>No external services, registration, API keys, telemetry, tracking, or AI features.<\/li>\n<\/ul>\n\n<h4>Important safety note about unused media<\/h4>\n\n<p>Librizent intentionally uses the wording <strong>Possibly Unused<\/strong>. A WordPress media item can be referenced from custom fields, theme options, page builders, CSS, JavaScript, WooCommerce data, or external integrations that this scanner cannot prove exhaustively.<\/p>\n\n<p>Always review media in context before deleting it. Librizent does not provide automatic deletion.<\/p>\n\n<h4>Health Score<\/h4>\n\n<p>The Media Health Score starts at 100. Each issue category has a maximum weight. The deduction for that category is proportional to the share of eligible media affected, capped at the category's maximum weight.<\/p>\n\n<p>The score breakdown is shown in the admin so users can see exactly why the score changed.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Librizent works locally inside your WordPress installation. It does not send Media Library data, scan results, site information, or user information to external servers. It does not use telemetry, tracking, remote APIs, external fonts, or third-party JavaScript\/CSS services.<\/p>\n\n<p>The plugin stores its settings, the latest scan state\/results, and up to 10 compact scan-history summaries in WordPress options. These plugin-owned options are removed by the included uninstall routine when the plugin is deleted through WordPress.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>librizent-media-library-health<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate Librizent through the Plugins screen.<\/li>\n<li>Open Librizent &gt; Dashboard.<\/li>\n<li>Select <strong>Run Media Health Scan<\/strong>.<\/li>\n<li>Review findings under Librizent &gt; Media Health.<\/li>\n<li>Use Librizent &gt; Media Usage to inspect usage signals, and Librizent &gt; Scan History to compare completed scans.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20librizent%20optimize%20or%20compress%20images%3F\"><h3>Does Librizent optimize or compress images?<\/h3><\/dt>\n<dd><p>No. Librizent is an audit and health tool, not an image optimizer.<\/p><\/dd>\n<dt id=\"does%20librizent%20delete%20unused%20media%3F\"><h3>Does Librizent delete unused media?<\/h3><\/dt>\n<dd><p>No. It never automatically deletes media. The \"Possibly Unused\" result is a review signal, not proof that a file is unused.<\/p><\/dd>\n<dt id=\"does%20librizent%20automatically%20generate%20or%20change%20alt%20text%3F\"><h3>Does Librizent automatically generate or change ALT text?<\/h3><\/dt>\n<dd><p>No. Librizent has no AI functionality and never writes ALT text automatically. Users can manually save ALT text for a flagged image.<\/p><\/dd>\n<dt id=\"does%20librizent%20send%20data%20to%20another%20server%3F\"><h3>Does Librizent send data to another server?<\/h3><\/dt>\n<dd><p>No. Librizent does not require an external service, API key, registration, telemetry, or tracking.<\/p><\/dd>\n<dt id=\"what%20does%20the%20heavy%20image%20file-size%20check%20do%3F\"><h3>What does the heavy image file-size check do?<\/h3><\/dt>\n<dd><p>It flags readable local image files above the MB threshold you choose in Settings. It does not compress, resize, replace, or otherwise modify the file.<\/p><\/dd>\n<dt id=\"what%20does%20the%20missing%20or%20unreadable%20files%20check%20mean%3F\"><h3>What does the missing or unreadable files check mean?<\/h3><\/dt>\n<dd><p>It means the attachment record did not resolve to a readable local source file during the scan. This can indicate a broken migration or moved file, but sites that intentionally offload media should verify their storage integration before treating a result as broken.<\/p><\/dd>\n<dt id=\"how%20are%20possible%20duplicates%20detected%3F\"><h3>How are possible duplicates detected?<\/h3><\/dt>\n<dd><p>Readable local files up to a conservative size limit are compared with SHA-256 hashes. Larger files use a metadata-based signature and remain explicitly labeled as possible duplicates.<\/p><\/dd>\n<dt id=\"why%20can%20a%20file%20be%20marked%20possibly%20unused%20even%20if%20i%20use%20it%3F\"><h3>Why can a file be marked Possibly Unused even if I use it?<\/h3><\/dt>\n<dd><p>Media can be referenced outside standard post content and featured images. Page builders, custom fields, theme options, CSS, JavaScript, ecommerce data, and external integrations may store references in ways this lightweight scan does not inspect.<\/p><\/dd>\n<dt id=\"does%20the%20scan%20run%20on%20every%20admin%20page%20load%3F\"><h3>Does the scan run on every admin page load?<\/h3><\/dt>\n<dd><p>No. Scans are manual and processed in small AJAX batches. Before attachment analysis, Librizent builds a lightweight usage index from common WordPress content references and featured images in batches, then reuses that index during the media scan. Stored scan results are used for review pages until the next scan.<\/p><\/dd>\n<dt id=\"what%20does%20the%20media%20usage%20page%20check%3F\"><h3>What does the Media Usage page check?<\/h3><\/dt>\n<dd><p>It uses the latest manual scan to classify attachments when WordPress-native usage signals were found or when an item was marked Possibly Unused. Opening Review Usage performs a focused live lookup for attachment relationships, featured-image use, and common post-content references. These checks are intentionally conservative and cannot prove that media is unused everywhere.<\/p><\/dd>\n<dt id=\"what%20is%20stored%20in%20scan%20history%3F\"><h3>What is stored in Scan History?<\/h3><\/dt>\n<dd><p>Librizent keeps up to 10 compact local summaries containing timestamps, scan duration, Health Score, and aggregate counts. It does not duplicate full issue lists in history, and clearing history does not delete media or the latest detailed scan.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Completed a WordPress.org guideline hardening pass against the current Plugin Directory guidance.<\/li>\n<li>Added a direct-access guard to the root index file.<\/li>\n<li>Added the Librizent audit capability check to manual ALT updates in addition to attachment edit permission and nonce verification.<\/li>\n<li>Added canonical UUID validation for AJAX scan identifiers before state comparison.<\/li>\n<li>Standardized local file-size reads on WordPress core <code>wp_filesize()<\/code> for the declared WordPress requirement.<\/li>\n<li>Removed tier-related ambiguity from public copy and added an explicit local-only privacy disclosure.<\/li>\n<li>Re-checked remote calls, bundled libraries, update mechanisms, executable downloads, input handling, output escaping, SQL preparation, internationalization, and uninstall cleanup.<\/li>\n<li>Prepared the package for a clean Librizent WordPress.org submission.<\/li>\n<li>Verified that the plugin folder, main plugin filename, and text domain all use <code>librizent-media-library-health<\/code>.<\/li>\n<li>Removed the unused local translation Domain Path header so WordPress.org language packs can use the canonical plugin slug.<\/li>\n<li>Hardened the default audit capability to administrators while keeping the capability filter available to developers.<\/li>\n<li>Re-checked nonces, capability checks, sanitization, escaping, prepared database reads, direct-access guards, and uninstall cleanup.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed the plugin to Librizent - Media Library Health.<\/li>\n<li>Updated plugin branding, internal identifiers, admin UI references, file names, and asset handles to Librizent.<\/li>\n<li>Updated the WordPress.org text domain to <code>librizent-media-library-health<\/code>.<\/li>\n<li>Bumped the plugin version to 1.0.1.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added batched Media Library health scanning.<\/li>\n<li>Added missing ALT, oversized image, heavy image file-size, dimension, filename, duplicate, possibly-unused, and missing\/unreadable file detectors.<\/li>\n<li>Added transparent Media Health Score.<\/li>\n<li>Added manual ALT editing, settings, usage review, and safe uninstall cleanup.<\/li>\n<li>Added the polished purple\/orange Librizent admin interface.<\/li>\n<li>Added a dedicated Media Usage workspace with stored usage classification, filters, pagination, and focused live review.<\/li>\n<li>Added compact Scan History with up to 10 local summaries, score trends, issue totals, scan duration, and protected history clearing.<\/li>\n<li>Expanded the professional Librizent menu to five destinations: Dashboard, Media Health, Media Usage, Scan History, and Settings.<\/li>\n<li>Improved large-library scan performance by building WordPress-native usage signals in batches instead of running content and featured-image lookups separately for every attachment.<\/li>\n<\/ul>","raw_excerpt":"Audit your Media Library for hidden problems without optimization, tracking, external services, or automatic deletion.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/368864","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=368864"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mujahidwp"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=368864"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=368864"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=368864"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=368864"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=368864"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=368864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}