Title: Image Alt Sync
Author: dufour_l
Published: <strong>October 10, 2025</strong>
Last modified: October 10, 2025

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/image-alt-sync.svg)

# Image Alt Sync

 By [dufour_l](https://profiles.wordpress.org/dufour_l/)

[Download](https://downloads.wordpress.org/plugin/image-alt-sync.1.4.11.zip)

 * [Details](https://tzm.wordpress.org/plugins/image-alt-sync/#description)
 * [Reviews](https://tzm.wordpress.org/plugins/image-alt-sync/#reviews)
 *  [Installation](https://tzm.wordpress.org/plugins/image-alt-sync/#installation)
 * [Development](https://tzm.wordpress.org/plugins/image-alt-sync/#developers)

 [Support](https://wordpress.org/support/plugin/image-alt-sync/)

## Description

**Image Alt Sync** scans selected posts and updates any `<img>` tags found in the
post content that reference media items (class `wp-image-###`), and replaces their`
alt` attributes with the attachment’s `_wp_attachment_image_alt` value:
 – If the
image is in the Media Library, it prefers the attachment’s Alt Text. – If no attachment
alt is set, it falls back to the image filename (without extension) or the post 
title (configurable in the UI). – Optionally skip images that aren’t found in the
Media Library. – Optionally restrict by image file extensions (e.g. `jpg,webp`).

Run in **dry run** first to see exactly what would change. The log shows each post
processed and any per-image alt changes.

**Highlights**
 – Processes **per post** in **batches** with a **customizable delay**(
default 100 posts, 1s). – Filter by **post status** and **date range** (quick buttons:
Today, Yesterday, Last week, Last month, YTD, All). – **Validate** that “Date after”
≤ “Date before”. – Limit by **Post ID range** with buttons to auto-fill **lowest**
and **highest** post IDs. – **Skip posts without `<img>`** (optional). – **Exclude
image extensions** (comma-separated, e.g. `.svg,.gif`). – **Dry run** (browser &
WP-CLI) shows clickable post IDs, post titles, **filenames**, and detailed **old
new** alt replacements. – Only processes posts that have at least one **image attachment**.

For more details you can send mail with your suggestions, recommendation to dufour_l@hotmail.
com

### Usage

 1.  Choose your filters (date range, min/max post ID, or “Apply to all posts”).
 2.  Set **Batch size** and optional **Delay** between batches to throttle load.
 3.  Choose a **Date Range**, or click a shortcut button (autofills **Date after**/**
     Date before**).
 4.  (Optional) Enter **Lowest/Highest Post ID** or click the quick-fill buttons.
 5.  (Optional) Check **Skip posts without `<img>`**.
 6.  (Optional) Enter **Exclude extensions** like `.svg,.gif`.
 7.  Optionally enable **Dry run** to preview changes without saving.
 8.  Click **Start**. Progress and detailed per-post changes appear in the log.
 9.  If needed, click **Stop** to pause after the current batch finishes.

**Tips**
 – Use the “Lowest ID” and “Highest ID” buttons to auto-fill the ID range.–
Use the extension filter (e.g. `jpg, jpeg, png, webp`) to target specific image 
types. – Check “Skip images not in media library” to avoid external or missing files.

### Usage (WP-CLI)

From your WordPress root:

    ```
    wp image-alt-sync run --status=publish --after=2025-01-01 --before=2025-08-13 --batch-size=100 --delay=1 --dry-run --low-id=1 --high-id=9999 --skip-noimg=1 --exclude-ext=".svg,.gif"
    ```

**Args**
 – `--status=` publish|pending|draft|any (default: publish) – `--after=`
YYYY-MM-DD (optional) – `--before=` YYYY-MM-DD (optional) – `--batch-size=` integer(
default: 100) – `--delay=` seconds (float, default: 1) – `--dry-run` flag (no changes
saved if provided) – `--low-id=` minimum post ID (optional) – `--high-id=` maximum
post ID (optional) – `--skip-noimg=` 1|0 (default 0) – `--exclude-ext=` comma-separated
list like `.svg,.gif`

### Credits

Crafted with ❤️ for accessible content.

## Installation

 1. Download the ZIP and install via **Plugins  Add New  Upload Plugin**.
 2. Activate **Image Alt Sync**.
 3. Go to **Tools  Image Alt Sync**.

## FAQ

### Will it update the Media Library alt text?

No. This tool updates `<img alt="">` **inside post content**. It does not edit attachment
fields.

### Does Dry Run modify anything?

No changes are saved during Dry Run. You’ll only see a preview in the log.

### Which “ tags are updated?

Tags containing a class `wp-image-###` so we can map to the attachment ID and read
its media-library alt text.

### Does it also change the media alt in the library?

No—this version focuses on replacing `alt` inside post content from the media library
value.

### What if an “ has no `alt`?

The plugin injects `alt="..."` based on the media alt.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Image Alt Sync” is open source software. The following people have contributed 
to this plugin.

Contributors

 *   [ dufour_l ](https://profiles.wordpress.org/dufour_l/)

[Translate “Image Alt Sync” into your language.](https://translate.wordpress.org/projects/wp-plugins/image-alt-sync)

### Interested in development?

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

## Changelog

#### 1.4.6 / 1.4.7 / 1.4.8 / 1.4.9 / 1.4.10 / 1.4.11

 * Fix: Code cleanup

#### 1.4.5

 * Added two new date button ( last 4 weeks, since first of the month )

#### 1.4.4

 * Fix: Code cleanup

#### 1.4.2 / 1.4.3

 * Fix: Copyright sanitization.

#### 1.4.1

 * Fix: Ajax not working.
 * Add private to the post status
 * Tested in WordPress 6.8.2

#### 1.4

 * Fix: Eliminated `[object Object]` messages by robust JSON/error-string logging.
 * Improvement: Processing now **continues** when a post/batch fails; errors are
   reported in the log.
 * Security: Added nonce checks to all AJAX endpoints.
 * DX: Structured JavaScript in a separate file and passed `ajaxurl`/`nonce` via`
   wp_localize_script`.
 * UI: Clearer batch progress messages and safer scrolling of the log.

#### 1.3

 * Restored the v1.1 UI while keeping the v1.2 functionality and enhancements.
 * Post ID range quick-fill buttons; dry run shows filenames and detailed changes.
 * Maintains batching, delay, status/date filters, and WP-CLI parity.

#### 1.2

 * Replace `alt` inside `<img>` tags using media alt; added ID ranges, skip & exclude
   options.

#### 1.1

 * Batch processing; status/date filters; dry run logging; WP-CLI support.

## Meta

 *  Version **1.4.11**
 *  Last updated **6 ⴰⵢⵢⵓⵔⵏ ago**
 *  Active installations **10+**
 *  WordPress version ** 5.4 or higher **
 *  Tested up to **6.8.5**
 *  Language
 * [English (US)](https://wordpress.org/plugins/image-alt-sync/)
 * Tags
 * [accessibility](https://tzm.wordpress.org/plugins/tags/accessibility/)[Alt Text](https://tzm.wordpress.org/plugins/tags/alt-text/)
   [batch](https://tzm.wordpress.org/plugins/tags/batch/)[images](https://tzm.wordpress.org/plugins/tags/images/)
   [seo](https://tzm.wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://tzm.wordpress.org/plugins/image-alt-sync/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/image-alt-sync/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/image-alt-sync/reviews/)

## Contributors

 *   [ dufour_l ](https://profiles.wordpress.org/dufour_l/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/image-alt-sync/)