Better Search Replace

Description

When moving your WordPress site to a new domain or server, you will likely run into a need to run a search/replace on the database for everything to work correctly. Fortunately, there are several plugins available for this task, however, all have a different approach to a few key features. This plugin consolidates the best features from these plugins, incorporating the following features in one simple plugin:

  • Serialization support for all tables
  • The ability to select specific tables
  • The ability to run a “dry run” to see how many fields will be updated
  • No server requirements aside from a running installation of WordPress
  • WordPress Multisite support

Time-saving features available in the Pro version:

  • View exactly what changed during a search/replace
  • Backup and import the database while running a search/replace
  • Priority email support from the developer of the plugin
  • Save or load custom profiles for quickly repeating a search/replace in the future
  • Support and updates for 1 year

Learn more about Better Search Replace Pro

The search and replace functionality is heavily based on interconnect/it’s great and open-source Search Replace DB script, modified to use WordPress native database functions to ensure compatibility.

Supported Languages

  • English
  • French
  • German
  • Spanish

Want to contribute?

Feel free to open an issue or submit a pull request on GitHub.

Screenshots

  • The Better Search Replace page added to the "Tools" menu
  • After running a search/replace dry-run.

Installation

Install Better Search Replace like you would install any other WordPress plugin.

Dashboard Method:

  1. Login to your WordPress admin and go to Plugins -> Add New
  2. Type “Better Search Replace” in the search bar and select this plugin
  3. Click “Install”, and then “Activate Plugin”

Upload Method:

  1. Unzip the plugin and upload the “better-search-replace” folder to your ‘wp-content/plugins’ directory
  2. Activate the plugin through the Plugins menu in WordPress

FAQ

Using Better Search Replace

Once activated, Better Search Replace will add a page under the “Tools” menu page in your WordPress admin.

Is my host supported?

Yes! This plugin should be compatible with any host.

Can I damage my site with this plugin?

Yes! Entering a wrong search or replace string could damage your database. Because of this, it is always adviseable to have a backup of your database before using this plugin.

How does this work on WordPress Multisite?

When running this plugin on a WordPress Multisite installation, it will only be loaded and visible for Network admins. Network admins can go to the dashboard of any subsite to run a search/replace on just the tables for that subsite, or go to the dashboard of the main/base site to run a search/replace on all tables.

How can I use this plugin when changing URLs?

If you’re moving your site from one server to another and changing the URL of your WordPress installation, the approach below allows you to do so easily without affecting the old site:

  1. Backup the database on your current site
  2. Install the database on your new host
  3. On the new host, define the new site URL in the wp-config.php file, as shown here
  4. Log in at your new admin URL and run Better Search Replace on the old site URL for the new site URL
  5. Delete the site_url constant you added to wp-config.php. You may also need to regenerate your .htaccess by going to Settings -> Permalinks and saving the settings.

More information on moving WordPress can be found here.

Reviews

September 17, 2021
I purchased a Basic install of the PRO version in order to take advantage of the advanced features. I installed it on a staging site, after going through a rather complex licensing process. It didn't solve my issue (wanted to replace a shortcode with a Gutenberg block), but I figured that was my fault because I misread the capabilities. I sent an email asking about that possibility, but received no reply. However, on my live version of the site, I wanted to use it to swap one shortcode for another. I was unable to unlink the license code, so I contacted support. They accused me of trying to game the system by claiming that I'd downloaded the plugin 10 times (only twice, and the second time because I couldn't find my original download file) and that I was trying to use it on multiple sites after buying only a Basic license. I wanted to transfer it from my STAGING to my PRIMARY site, not to a different site. I was NOT trying to transfer to a NEW site. So I am downrating the plugin because their support does not help, and they refused my request of a refund because they wouldn't reset my license for transfer from a staging to a live site.
August 5, 2021
Love the WP Offload Media plug-in from these guys, so thought I'd give this a try. I had an assistant copy-pasting text from a book we put together in Canva to WordPress posts. At first I forgot to show her to copy just the plain text and ended up with a bunch of unnecessary classes added to our heading and paragraph tags within quite a few posts. Didn't affect anything visually but wanted to get rid of the code bloat. I was able to use this plug-in to find all the 300-400 instances of the unneeded classes within around 90 different posts. Clicking the Search/Replace button worked almost instantly. I also appreciate that the checkbox for "Dry Run" is auto enabled after every run. Would be so easy to screw things up without that! This was all on Flywheel hosting. WordPress 5.7.2
July 28, 2021
I have Never give any plugin any review, you have solved my very big problem that can take few weeks to solve, thank you
Read all 441 reviews

Contributors & Developers

“Better Search Replace” is open source software. The following people have contributed to this plugin.

Contributors

“Better Search Replace” has been translated into 23 locales. Thank you to the translators for their contributions.

Translate “Better Search Replace” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.3.4 – December 7, 2020

  • Improvement: WordPress 5.6 and PHP 8 compatible
  • Fix: Strings that have been serialized twice showing up as false-positives

1.3.3 – February 26, 2019

  • Fix: Some special characters interfering with search/replace
  • Security: Pass template filenames through sanitize_file_name()
  • Security: Verify nonce when downloading diagnostic info

1.3.2 – January 3, 2018

  • Fix: Only one table searched on some environments (props @Ov3rfly)
  • Tweak: Update text in sidebar

1.3.1 – September 14, 2017

  • Security: Check if data is serialized before unserializing it
  • Improvement: Increased size of table select

1.3 – November 10, 2016

  • Improvement: Updated sidebar and added pro version discount
  • Fix: Outdated links to old website
  • Fix: Prevent requests to invalid tabs

1.2.10 – June 2, 2016

  • Fix: CSS not loaded on details page

1.2.9 – December 8, 2015

  • Fix: Bug with case-insensitive searches in serialized objects
  • Fix: Bug with early skip due to lack of primary key

1.2.8 – November 25, 2015

  • Fix: Bug with report details

1.2.7 – November 24, 2015

  • Fix: Untranslateable string
  • Tweak: Check BSR_PATH instead of ABSPATH to be consistent
  • Tested with 4.4

1.2.6

  • Removed unused code/small cleanup

1.2.5

  • Improved progress bar info and styles
  • Small cleanup

1.2.4

  • Added “Settings saved” notice when saving settings
  • Fixed bug with wp_magic_quotes interfering with some search strings

1.2.3

  • Fixed bug with searching for backslashes
  • Fixed potential bug with getting tables in large multisites
  • Fixed potential notice in append_report
  • Improved handling of missing primary keys

1.2.2

  • Fixed AJAX conflict with WooCommerce
  • Fixed a few issues with translations
  • Tweaked “System Info” to use get_locale() instead of WP_LANG constant
  • Updated German translation (props @Linus Ziegenhagen)

1.2.1

  • Fixed minor issue with display of progress bar
  • Updated translation file

1.2

  • Switched to AJAX bulk processing for search/replaces
  • Decreased minimum “Max Page Size” to 1000
  • Added “Help” tab with system info for easier troubleshooting

1.1.1

  • Added ability to change max page size
  • Decreased default page size to prevent white screen issue on some environments

1.1

  • Added ability to change capability required to use plugin
  • Small bugfixes and translation fixes

1.0.6

  • Added table sizes to the database table listing
  • Added French translation (props @Jean Philippe)

1.0.5

  • Added support for case-insensitive searches
  • Added German translation (props @Linus Ziegenhagen)

1.0.4

  • Potential security fixes

1.0.3

  • Fixed issue with searching for special characters like ‘\’
  • Fixed bug with replacing some objects

1.0.2

  • Fixed untranslateable strings on submit button and submenu page.

1.0.1

  • Fixed issue with loading translations and added Spanish translation (props Eduardo Larequi)
  • Fixed bug with reporting timing
  • Updated to use “Dry Run” as default
  • Added support for WordPress Multisite (see FAQs for more info)

1.0

  • Initial release