Why a plain find-and-replace breaks WordPress
WordPress stores arrays and objects in tables like wp_options, wp_postmeta and wp_usermeta as PHP serialize() strings. Every string carries its length in bytes: s:19:"http://old.test/blog". If a database search-replace swaps old.test for a longer or shorter host, the text changes but the 19 does not — so PHP can no longer unserialize() the value and the option, widget or page-builder layout silently breaks.
How this tool fixes it
Paste the serialized value, type what to find and what to replace it with, and the tool decodes the structure, replaces inside every string, and re-encodes with freshly counted byte lengths. The output is valid serialized data you can write straight back to the database.
How to use it
Plain text
Leave the boxes unchecked for a literal swap — e.g. find http://old.test, replace with https://new.example. Tick Case-insensitive to ignore letter case.
Regular expression
Tick Regular expression to use a JavaScript regex in Find (applied globally). Use $1, $2 in Replace with for capture groups — handy for protocol-relative or wildcard host changes.
Already broken?
If the value has already been mangled by a previous search-replace and no longer unserializes, this tool can't decode it — repair the byte-lengths first with Fix Serialized Data, then swap safely here. To read or edit a value as JSON instead, use Serialized ↔ JSON or the Serialize / Unserialize tool.