=== Bulk Media Uploader by Anupress ===
Contributors: anupress
Tags: bulk upload, csv import, media library, images, alt text
Requires at least: 5.8
Tested up to: 6.5
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Import 1,000+ images at once from a ZIP + CSV. Sets title, alt text, caption, description, and optionally attaches to posts or sets featured images.

== Description ==

A fast, free bulk media importer for WordPress. Give it a CSV of metadata and a ZIP of images (or a list of URLs) and it will populate your Media Library with the full title/alt/caption/description for every image — up to thousands at a time.

Built by [Anupress](https://anupress.com/tools/), the team behind a growing set of free WordPress calculators, converters, and SEO helpers.

**Free features (all of them):**

* CSV + ZIP import — drop both, and let the plugin match them by filename
* Remote URL import with per-host allowlist (safe against SSRF via `wp_safe_remote_get`)
* Auto-detects your CSV columns (filename, title, alt, caption, description, url, post_id, post_slug, attach_as)
* Auto-generates alt text from the title or filename when the CSV alt column is empty
* Optional filename slugification from the title (better for image SEO)
* Attach uploaded image to a post by numeric ID or slug — as a normal attachment or as the featured image
* Skips duplicate filenames already in the Media Library
* Chunked processing (20 rows per AJAX round-trip) to avoid PHP timeouts on 1,000+ image imports
* Live progress bar, colored log, and a downloadable CSV report of every row's result
* Fully open-source (GPLv2+) — [source on GitHub](https://anupress.com/tools/bulk-media-upload/)

**Supported image formats:** JPG, JPEG, PNG, GIF, WebP.

**Related free tools from Anupress:**

* [WebP Converter](https://anupress.com/tools/webp-converter/) — convert JPG/PNG to WebP before you upload
* [Meta Tag Generator](https://anupress.com/tools/meta-tag-generator/) — pair Open Graph tags with your bulk-imported images
* [All free tools](https://anupress.com/tools/)

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/`, or install through the WordPress admin.
2. Activate the plugin through the Plugins menu.
3. Go to **Bulk Uploader** in the admin sidebar.
4. Drop your CSV (and optional ZIP), map the columns, choose options, and hit Start.

== Frequently Asked Questions ==

= What columns does my CSV need? =

Only one of `filename` (if using a ZIP) or `url` (if fetching remotely) is required. All other columns — `title`, `alt`, `caption`, `description`, `post_id`, `post_slug`, `attach_as` — are optional. Download the template from the plugin's admin page for an example.

= Can I import 5,000 images at once? =

Yes. The plugin processes 20 rows per AJAX request so it will not hit your host's PHP execution limit. Keep the tab open until the progress bar finishes.

= Is remote URL import safe? =

Yes. Remote fetches only work for hosts you explicitly add to the allowlist. Under the hood, `wp_safe_remote_get` also blocks internal / private IP ranges, so a stray URL cannot reach `localhost` or your intranet.

= What happens to duplicate filenames? =

If "Skip duplicates by filename" is checked (the default), rows whose filename already exists in the Media Library are skipped with a note in the report.

= Where do I report bugs or request features? =

The [plugin homepage](https://anupress.com/tools/bulk-media-upload/) has a contact form, and the GitHub repository accepts issues and pull requests.

== Screenshots ==

1. Step 1 — drop your CSV and ZIP
2. Step 2 — auto-detected column mapping with a preview
3. Step 3 — options and URL allowlist
4. Step 4 — live progress with a colored log
5. Step 5 — full report with a downloadable CSV

== Changelog ==

= 1.0.0 =
* Initial release.
* CSV + ZIP import.
* Remote URL import with per-host allowlist.
* Auto column mapping, auto alt text, filename slugification.
* Attach to post by ID or slug, as attachment or featured image.
* Chunked processing, live progress, downloadable CSV report.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
