Ethereal Link Replacer — safe search & replace for WordPress | Ethereal Web Solution
WordPress plugin · Free & open source

Search and replace across WordPress, without corrupting serialized data.

Ethereal Link Replacer rewrites links, URLs and text everywhere they live — posts, options, meta, terms and comments — and repacks serialized arrays so nothing breaks. Preview first, then apply.

Works from the admin screen or via WP-CLI. No account, no tracking, no external requests.

post content
https://old-site.com
→ https://new-site.io
serialized option — string length recalculated
a:1:{s:20:"https://old-site.com";}
a:1:{s:19:"https://new-site.io";}
result
valid, unserializable, nothing corrupted ✓

A raw SQL replace changes the text but not the s:20: byte count in front of it — and every serialized setting on the site breaks. This plugin fixes the count.

Everything a migration needs, nothing it doesn't.

Built for one job — moving domains, HTTP to HTTPS, or swapping an old media host — and built to do it without surprises.

Serialized-data safe

Unpacks serialized arrays and objects, replaces inside them, and recalculates string lengths so the data stays valid. This is the part naive tools get wrong.

Dry run first

Preview every row that would change and read the full log before a single byte is written. Nothing touches the database until you say so.

Choose the scope

Posts, post meta, options, terms, term meta and comments — tick only what you need. GUIDs are opt-in and off by default.

Plain text or regex

Match a simple string or a regular expression. The dangerous /e modifier is blocked and patterns are validated before they run.

A full change log

Every changed row is recorded and downloadable as a CSV, so you have a paper trail of exactly what the run touched.

WP-CLI & batched

Script big migrations from the terminal, and rest easy on large sites — rows are processed in batches to keep memory use low.

Four steps, one of them optional to skip at your peril.

01

Enter search & replace

Type the old value and the new one — a URL, a domain, any string.

02

Choose the tables

Select which parts of the database the run should scan.

03

Run a dry run

Review the log of every row that would change. No writes yet.

04

Back up, then apply

Tick the confirmation, run for real, and download the CSV log.

Or do it from the command line.

The same engine, wired into WP-CLI for scripted and large-scale migrations.

Always back up first

A real run writes directly to your database and can't be undone from inside the plugin. Take a full backup and preview with a dry run before you apply. Your siteurl and home options are skipped on purpose so a replacement can't lock you out.

Questions, answered.

Does it really handle serialized data?
Yes. Serialized arrays and objects are unpacked, edited, and repacked, and the string-length prefixes (the s:20: part) are recalculated so the stored value stays valid and unserializable.
Can I undo a replacement?
Not from the plugin — it writes straight to the database. Keep a backup and always preview with a dry run before applying. That is what the dry run and the CSV log are there for.
Will it change my site address?
No. The siteurl and home options are deliberately skipped so a run can't lock you out of wp-admin. Change those from Settings → General.
Can I use a regular expression?
Yes. Turn on the regex option to treat the search value as a pattern. Patterns are validated first, and the code-executing /e modifier is refused.
What does it cost?
Nothing. It's free and open source under the GPL, with no premium tier, no feature gates and no upsells. Building your site well is our business — this tool is part of it.

Ready to move your links, safely?

Install Ethereal Link Replacer, run a dry run, and see exactly what will change before it changes.

Get it on WordPress.org

Ethereal Link Replacer is a free, open-source WordPress plugin built by Manuel Zela at Ethereal Web Solution. We design, build and maintain WordPress sites — this is one of the tools we use every day.