URL Image Importer 1.1: Cleaner Imports, Reliable URL Mapping for WordPress Migrations

by Blake Whittle | May 15, 2026 | News

Two things keep showing up on the punch list at the end of a WordPress image migration. The media library ends up full of messy attachment titles with the file extension stuck on the end. And the mapping of old image URLs to new ones, which you absolutely need for find-and-replace, ends up half-broken on certain hosts.

URL Image Importer 1.1 is out, and it kills both of those headaches.

Here's what's new.

Cleaner attachment titles on every import. No checkbox needed.

In 1.0.x, importing abstract-blue-gradient.png from a URL left you with an attachment titled abstract-blue-gradient.png and a slug of abstract-blue-gradient-png. That's noisier than what WordPress core gives you on a manual media upload, where the extension gets stripped before the title is saved. The plugin wasn't matching core's own behavior on its import paths. Now it does.

1.1 strips the extension every time, on every import path. The same URL now produces:

  • Title: abstract-blue-gradient
  • Slug: abstract-blue-gradient

That's the default on pasted URL imports, WordPress XML imports, and CSV imports. No setting to find, no checkbox to remember. Think of it like the plugin finally speaking the same language as core. The result is a cleaner media library, better alt-text suggestions, and one less pass of manual cleanup after a 500-image migration.

If you were using the old "Use filename without extension" option, it's now the only behavior. Nothing to migrate. Nothing to flip on.

New: Download URL Mapping CSV for one-pass URL rewrites

This is the big one in 1.1. When you batch-import images, URL Image Importer now records every "old external URL to new WordPress media URL" pair and hands it back to you as a downloadable CSV right from the results screen. Two columns, side by side:

Old URL (external)New URL (local WP)
https://external-site.com/images/photo1.jpghttps://your-site.com/wp-content/uploads/2026/05/photo1.jpg

That little file is the missing piece for anyone running a real migration. A few examples of what it unlocks:

  1. Got a Formidable Forms database, a custom post type, or a CSV with thousands of external image URLs in a column? Drop the mapping CSV next to it, run INDEX/MATCH (or VLOOKUP, or XLOOKUP) against the old URL column, and pull the new WordPress URLs in alongside. Re-import the spreadsheet and you've rewritten every image reference in one pass.
  2. Got hard-coded external image URLs sitting in post content from a previous migration? Feed the mapping CSV into Better Search Replace or WP-CLI's search-replace command and rewrite the entire database in one shot.
  3. Running a hybrid stack where some images live in WordPress and some live in a headless CMS? The mapping CSV is the audit trail of what got moved and where it landed.

This is the part of a migration that usually eats hours of manual fiddling and SQL pokes. 1.1 turns it into click, export, match, done.

A note on reliability: in 1.0.x the download button existed but was being served through admin-ajax.php, which is the wrong endpoint for streamed file downloads. On certain hosts the click landed in Chrome's error page instead of saving a file. 1.1 routes the download through admin-post.php, the WordPress endpoint actually built for admin file downloads, with proper Content-Length, X-Content-Type-Options: nosniff, and RFC 5987 UTF-8 filename encoding on the response. It lands in your browser fast and intact on Apache, Nginx, LiteSpeed, and Windows IIS.

Think of it like the moving company labeling every box with both the old room and the new room. You don't have to guess where anything goes. You just match the list.

Quieter hardening underneath

A few changes you won't see but will quietly benefit from:

  1. The path-traversal guard on the mapping export runs through wp_normalize_path() now, so the temp-directory check holds firm on Windows hosts where backslash vs forward slash had previously masked legitimate paths.
  2. Capability and nonce validation for the mapping endpoint is centralized in one validator, so both the new admin-post route and the legacy admin-ajax route share a single source of truth. No drift between the two.
  3. Output buffers are flushed explicitly before the CSV streams. Stray notices or BOM markers from upstream code can't corrupt the first bytes of your download anymore.

Small fixes. They add up to a plugin you can hand to a client without getting a support ticket about it.

Who 1.1 is for

If any of these sound like your week, this release was built for you.

  1. Agencies running WordPress migrations off Squarespace, Wix, Webflow, Shopify, or a static archive, with thousands of external image references to pull local.
  2. Editorial teams importing from feeds, syndicated content, or partner libraries where the images live on someone else's CDN.
  3. Developers rebuilding from scraped data, where the image URL is one column in a CSV among many.
  4. Site owners consolidating off legacy subdomains or third-party image hosts and onto a single, controllable media library.

This is the exact pain point that comes up over and over on real migration projects, and 1.1 takes it off the list.

Upgrading

Click update. That's it. No settings to migrate, no database changes, no compatibility layer. If you were editing attachment titles by hand or running a SQL fixup to clean up .png in titles, you can stop. New imports just do the right thing.

Recent Post

Newsletters

Written By: Blake Whittle

Owner of ClikIT, Blake has been involved in WordPress since 2014. Once designer & developer, now he manages the team at ClikIT and provides project management & strategic vision to their clients. Now, he's leading the change at ClikIT to become a plugin company.

Create Your Account And Start Exploring

Try the Infinite Uploads plugin and discover all its benefits. By registering, you'll gain access to technical support, receive updates, and enjoy exclusive content. Don't wait any longer and join us today!