Skip to main content

Regenerating Thumbnails

Overview

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
Resource Usage

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

StrategyCommandBest Use Case
Full Rebuildwp media regenerate --yesTheme redesign or major image size changes
Missing Onlywp media regenerate --only-missing --yesLarge production libraries
Single Sizewp media regenerate --image_size=thumbnail --yesFix one derivative set quickly
Targeted IDswp media regenerate 120 121Isolated broken media items
No Deletionwp media regenerate --skip-delete --yesTransition period before cleanup
Key Takeaway

Use full regeneration after major design changes, and use --only-missing plus targeted IDs for safer day-to-day maintenance.

Next Steps