Title: Media Ranger
Author: Luis Ruiz
Published: <strong>August 16, 2026</strong>
Last modified: August 16, 2026

---

Search plugins

![](https://ps.w.org/media-ranger/assets/banner-772x250.png?rev=3650071)

![](https://ps.w.org/media-ranger/assets/icon.svg?rev=3650071)

# Media Ranger

 By [Luis Ruiz](https://profiles.wordpress.org/lruizcode/)

[Download](https://downloads.wordpress.org/plugin/media-ranger.1.0.2.zip)

 * [Details](https://wordpress.org/plugins/media-ranger/#description)
 * [Reviews](https://wordpress.org/plugins/media-ranger/#reviews)
 *  [Installation](https://wordpress.org/plugins/media-ranger/#installation)
 * [Development](https://wordpress.org/plugins/media-ranger/#developers)

 [Support](https://wordpress.org/support/plugin/media-ranger/)

## Description

**Media Ranger** scans your posts, pages, and custom post types for images hosted
on external domains. It then downloads those images to your WordPress Media Library
and automatically replaces the external URLs with local ones.

This is especially useful when:

 * Migrating content from another platform (Webflow, Squarespace, etc.)
 * Consolidating images from multiple CDNs
 * Ensuring all your media is hosted locally for better control
 * Improving site performance by serving images from your own server or CDN

**Features:**

 * Scan posts, pages, and any custom post type
 * Filter by post status (published, draft, any)
 * Process in batches to avoid timeouts
 * Include/exclude specific external hosts
 * Detect images in `src`, `data-src`, `srcset`, and `<source>` elements
 * Automatic deduplication (won’t re-import already imported images)
 * Optional: prefer original image size over thumbnails
 * Dry run mode to preview changes without modifying anything
 * REST API endpoint for programmatic access
 * Full WPML and Polylang compatibility
 * Support for modern image formats (WebP, AVIF)

### SUPPORT

**Need help or have a suggestion?**
 Please use the [official WordPress.org Support Forum](https://wordpress.org/support/plugin/media-ranger/)
for any issues related to the plugin.

**Official Website**
 For additional information or to get in touch with the development
team, please visit our [official website](https://www.bubuku.com/).

**Like the plugin?**
 Please [leave a 5-star review](https://wordpress.org/support/plugin/media-ranger/reviews/?filter=5)
and help others discover Media Ranger.

### ABOUT BUBUKU_CODE

We develop custom solutions for WordPress focused on performance, accessibility,
and maintainable code. Our work includes plugins, themes, and integrations designed
to improve the daily workflow of marketing and content teams.

## Screenshots

[⌊Admin interface showing scan options⌉⌊Admin interface showing scan options⌉[

Admin interface showing scan options

[⌊Results after processing posts⌉⌊Results after processing posts⌉[

Results after processing posts

## Installation

 1. Upload the `media-ranger` folder to `/wp-content/plugins/`
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Go to Tools  Media Ranger

## FAQ

### Does this modify my original posts?

Yes, when not in dry-run mode, the plugin updates your post content to replace external
image URLs with local ones. The original external images remain untouched on their
servers.

### What happens if an image fails to download?

The plugin logs the error and continues processing other images. Failed downloads
are reported in the results.

### Can I use this with WooCommerce products?

Yes! Simply include “product” in the Post Types field to scan WooCommerce products.

### Does it work with WPML or Polylang?

Yes, the plugin is fully compatible with both WPML and Polylang. You can process
all languages at once or select a specific language.

### How do I avoid re-importing the same image?

The plugin stores the original source URL as attachment metadata. When scanning,
it checks if an image was already imported and reuses the existing attachment.

### Can I run this via WP-CLI or programmatically?

Yes, you can use the REST API endpoint. See the documentation for details on how
to call `/wp-json/media-ranger/v1/run`.

### How does the plugin protect against unsafe downloads?

Before downloading any remote image, the plugin rejects URLs that don’t use the `
http` or `https` scheme, and performs a HEAD request that blocks requests to private/
internal network addresses (via `wp_safe_remote_head()`). It also checks the `Content-
Type` (must be an image) and the `Content-Length` (default max 20 MB) before downloading.
These can be adjusted with the `mran_allowed_mime_prefixes` and `mran_max_download_size`
filters, and the `MRAN_HTTP_TIMEOUT` constant (default 10 seconds, define it in `
wp-config.php`).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Media Ranger” is open source software. The following people have contributed to
this plugin.

Contributors

 *   [ Luis Ruiz ](https://profiles.wordpress.org/lruizcode/)
 *   [ Bubuku I Code ](https://profiles.wordpress.org/bubuku/)

[Translate “Media Ranger” into your language.](https://translate.wordpress.org/projects/wp-plugins/media-ranger)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/media-ranger/), check
out the [SVN repository](https://plugins.svn.wordpress.org/media-ranger/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/media-ranger/) by
[RSS](https://plugins.trac.wordpress.org/log/media-ranger/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.2

 * Added plugin icons, banners, and screenshots for the WordPress.org assets directory

#### 1.0.1

 * Security: reject non-http(s) URLs before making any request
 * Security: use wp_safe_remote_head() to prevent requests to internal/private network
   addresses
 * Security: validate Content-Type and enforce a maximum download size (20 MB default,
   filterable) before downloading
 * Security: configurable HTTP timeout via MR_HTTP_TIMEOUT constant

#### 1.0.0

 * Complete rewrite following WordPress Coding Standards
 * Added namespace support and modular architecture
 * Improved WPML/Polylang compatibility
 * Added scan-only endpoint
 * Enhanced error handling and reporting
 * Added verbose mode for debugging
 * Better deduplication using attachment metadata
 * Initial release

## Meta

 *  Version **1.0.2**
 *  Last updated **14 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [external](https://wordpress.org/plugins/tags/external/)[images](https://wordpress.org/plugins/tags/images/)
   [import](https://wordpress.org/plugins/tags/import/)[media library](https://wordpress.org/plugins/tags/media-library/)
   [migration](https://wordpress.org/plugins/tags/migration/)
 *  [Advanced View](https://wordpress.org/plugins/media-ranger/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/media-ranger/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/media-ranger/reviews/)

## Contributors

 *   [ Luis Ruiz ](https://profiles.wordpress.org/lruizcode/)
 *   [ Bubuku I Code ](https://profiles.wordpress.org/bubuku/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/media-ranger/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://www.bubuku.com/)