Scan your entire site, detect every unattached image, and link them to their parent post automatically, in the background, without a single manual step.
Works with Posts · Products (WooCommerce) · Downloads (EDD)
When a visitor lands on an image attachment page, don't leave them stranded. Show the parent post context or redirect them there instantly. Every setting is yours to control.
Every part of the scanning engine is designed to handle thousands of posts without timeouts, errors, or data loss.
Display rich parent post previews on attachment pages to improve engagement, retain visitors, and turn image search traffic into valuable clicks.
Extracts every img src from post content using regex, resolves size-suffixed URLs back to originals, and skips external CDN images automatically.
Real-time percentage counter and animated progress bar show exactly how far along the scan is — no guessing, no page refreshes.
Processes posts in configurable batches of 10, 20, 50, or 100 to prevent PHP timeouts on large sites with thousands of posts.
Stop the scan at any point without losing progress. Click Resume to continue from exactly the same offset — no re-scanning, no wasted work.
Only updates post_parent on existing attachments. Never deletes, moves, or reuploads any files. Fully reversible via the database.
Forget the manual scan entirely. With Pro, images are automatically attached to the parent post every time you create or update a post, product, or download.
The free version is powerful enough to get started. Pro unlocks background processing, 10× speed, and automatic attachment on every save.
post_parent field. When you upload an image directly inside a post editor, WordPress sets that field to the post's ID. If the image is uploaded via the media library independently, that field stays at 0 — it's "unattached." Our plugin sets the correct parent ID so WordPress knows which post the image belongs to.
post_parent) on existing attachment records. No files are moved, renamed, reuploaded, or deleted. The operation is 100% reversible by setting the field back to 0.