Regenerating Thumbnails
wp media regenerate rebuilds image sizes defined by WordPress core, themes, and plugins. It is essential after theme changes, new image size registrations, or migration cleanup.
Understanding Thumbnail Regeneration
When WordPress image size definitions change, existing media files do not automatically get new sizes. WP-CLI helps you:
- Regenerate all thumbnails across the media library
- Regenerate only missing sizes for faster execution
- Target specific attachment IDs for surgical fixes
- Automate image repair in maintenance scripts
- Control cleanup behavior with
--skip-delete
Core Regeneration Commands
Regenerate All Thumbnails
# Regenerate every registered image size for all attachments
wp media regenerate
Example output:
Found 350 images to regenerate.
1/350 Regenerated thumbnails for "header.jpg" (ID 23).
...
Success: Regenerated 350 of 350 images.
Regenerate Only Missing Thumbnails
# Skip existing sizes and create only missing derivatives
wp media regenerate --only-missing
Best for: Large sites where most images are already valid.
Regenerate Without Prompt (Automation)
# Non-interactive mode for scripts/cron
wp media regenerate --yes
Regenerate Specific Attachment IDs
# Single attachment
wp media regenerate 120
# Multiple attachments
wp media regenerate 101 102 103
Use this when only a few assets are broken after import or manual file edits.
Regenerate One Image Size Only
# Rebuild only thumbnail size
wp media regenerate --image_size=thumbnail --yes
# Rebuild WooCommerce catalog size only (if registered)
wp media regenerate --image_size=woocommerce_thumbnail --yes
Advanced Options
Keep Old Generated Files
# Do not delete old intermediate sizes
wp media regenerate --skip-delete --yes
This helps when you want a reversible transition window during theme redesign.
Combine Safety and Speed Flags
# Practical production-safe pattern
wp media regenerate --only-missing --yes
Thumbnail regeneration can be CPU and disk intensive. Run during low-traffic windows on production systems.
Operational Checks Before and After
Confirm Attachment Volume
# Count total attachments
wp post list --post_type=attachment --format=count
Verify Image Size Configuration
# Inspect currently registered sizes
wp eval 'print_r( wp_get_registered_image_subsizes() );'
Spot-Check a Regenerated Image
# Inspect attachment metadata after regeneration
wp post meta get 120 _wp_attachment_metadata
Real-World Scenarios
Scenario 1: Theme Switch with New Image Sizes
# Backup first
tar -czf uploads-backup-$(date +%Y%m%d).tar.gz wp-content/uploads/
# Regenerate all thumbnails
wp media regenerate --yes
Scenario 2: WooCommerce Catalog Fix
# Rebuild only missing files to restore product grid images
wp media regenerate --only-missing --yes
Scenario 3: Repair Broken Imported Images
# Rebuild only specific problematic attachments
wp media regenerate 210 211 212
Scenario 4: Scheduled Weekly Maintenance
#!/bin/bash
# weekly-media-maintenance.sh
wp media regenerate --only-missing --yes --quiet
Best Practices
1. Backup Uploads Before Full Regeneration
tar -czf uploads-backup-$(date +%Y%m%d-%H%M).tar.gz wp-content/uploads/
2. Prefer --only-missing on Large Libraries
wp media regenerate --only-missing --yes
3. Use screen/tmux for Long Jobs
tmux new -s regenerate
wp media regenerate --yes
4. Regenerate by ID for Fast Incident Response
wp media regenerate 120
5. Coordinate with Caching/CDN Layers
Purge image caches after major regeneration so users receive updated image derivatives.
Troubleshooting
Command Times Out or Stops Midway
# Resume safely with missing-only mode
wp media regenerate --only-missing --yes
High CPU or Memory Usage
# Process only one size or run off-peak
wp media regenerate --image_size=thumbnail --yes
Specific Images Still Display Wrong Size
# Regenerate specific IDs and verify metadata
wp media regenerate 345 346
wp post meta get 345 _wp_attachment_metadata
Quick Reference
Essential Commands
# Full regeneration
wp media regenerate
wp media regenerate --yes
# Efficient regeneration
wp media regenerate --only-missing
wp media regenerate --only-missing --yes
# Targeted regeneration
wp media regenerate <attachment-id>
wp media regenerate 101 102 103
wp media regenerate --image_size=thumbnail --yes
# File retention
wp media regenerate --skip-delete --yes
Comparison: Regeneration Strategies
| Strategy | Command | Best Use Case |
|---|---|---|
| Full Rebuild | wp media regenerate --yes | Theme redesign or major image size changes |
| Missing Only | wp media regenerate --only-missing --yes | Large production libraries |
| Single Size | wp media regenerate --image_size=thumbnail --yes | Fix one derivative set quickly |
| Targeted IDs | wp media regenerate 120 121 | Isolated broken media items |
| No Deletion | wp media regenerate --skip-delete --yes | Transition period before cleanup |
Use full regeneration after major design changes, and use --only-missing plus targeted IDs for safer day-to-day maintenance.
Next Steps
- Upload and attach media files: Media Upload & Attachments
- Manage sites at network scale: Site Management
- Automate recurring media tasks: Remote & SSH Execution