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.
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.
Enter search & replace
Type the old value and the new one — a URL, a domain, any string.
Choose the tables
Select which parts of the database the run should scan.
Run a dry run
Review the log of every row that would change. No writes yet.
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?
s:20: part) are recalculated so the stored value stays valid and unserializable.Can I undo a replacement?
Will it change my site address?
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?
/e modifier is refused.What does it cost?
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