Distinguish missing files from broken URLs
Database bloat and broken links typically arise from two distinct problems: database attachments pointing to missing uploads files, and published post content containing raw URLs to files that no longer exist. A complete media cleanup must check both conditions.
Cyphex runs local integrity checks on the database attachment table (`wp_posts` with `post_type=attachment`) and crawls post content to verify that all referenced local image links return a valid HTTP 200 code on your server, compiling them into a repair dashboard.
Duplicate hashes are evidence, not deletion permissions
Files that share the same cryptographic content hash (MD5 or SHA-1) are exact duplicates. They consume duplicate storage space under `/wp-content/uploads/`. However, blindly deleting one of them can break references in page builders, custom fields, or variation settings.
Before removing duplicate files, check all references. If both attachments are active, you must update the referencing posts to link to a single unified attachment first. Cyphex lists exact duplicate groups and displays where each file is used before suggesting removal.
Handling the "unused" media myth
There is no safe binary way to declare an image "unused" in WordPress. Custom database tables, page builder serializations (like Elementor or Divi), and theme options frequently store attachment IDs outside standard post content. Mass deletion tools that target "unattached" media often cause unexpected site breakages.
Look for tools that calculate an "orphan confidence score". A confidence level checks known builder tables, active widgets, and theme settings. Always run a dry run and verify database backups before cleaning folders.