Easy Search Replace — Documentation
Everything you need to know about installing, configuring, and getting the most out of Easy Search Replace and Easy Search Replace Pro.
Getting started
What Easy Search Replace does
Easy Search Replace lets you find and replace any text, HTML, or URL on your WordPress site in real time — without modifying your database. Replacements happen as the page renders, so disabling the plugin instantly restores your original content.
Installing the plugin
You can install the free version directly from your WordPress dashboard:
- Go to Plugins → Add New
- Search for "Easy Search Replace"
- Click Install Now, then Activate
- Find the settings under Settings → Easy Search Replace
If you've purchased Pro, you'll receive a download link by email (also available anytime under Downloads in your FluxPress account). Upload that ZIP via Plugins → Add New → Upload Plugin, then activate. Pro deactivates the free version automatically — you'll see a confirmation notice, all your rules and settings carry over instantly, and you can safely delete the free plugin afterwards.
Activating your Pro license
After installing the Pro version:
- Go to Settings → Easy Search Replace
- Open the License tab
- Enter the license key from your purchase email (or copy it from Licenses in your FluxPress account)
- Click Activate License
All Pro features unlock instantly — no logout or refresh needed. Your license is re-validated automatically in the background; if validation ever fails (for example after a refund), Pro features pause after a 7-day grace period while your rules stay safely stored.
Your first replacement
The plugin starts with one empty rule waiting for input.
- In the Find box, type the text you want to replace (e.g.,
Old Company Name) - In the Replace with box, type what it should become (e.g.,
New Company Name) - Click Save changes
Visit your site's frontend. Every instance of "Old Company Name" is now "New Company Name." Your posts and pages remain untouched in the database.
Creating and editing rules
The rule card
Every replacement is a "rule." Rules display as cards on the Rules tab. Each card has:
- A header with the rule number, a live preview of what it does, an enable/disable toggle, and a delete button.
- A Find box and a Replace with box — these are the only required fields.
- An Advanced options button that reveals the optional sections: targeting, advanced matching, scheduling, and audience. It stays collapsed on simple rules and opens automatically on any rule that already uses an advanced feature.
Adding a rule
Click Add rule at the bottom of the rules list. A new empty rule appears at the end. Fill in Find and Replace with, then save.
The free version supports up to 10 rules (installs that already had more keep all of them). Pro removes the limit.
Removing content
Leave Replace with empty and the matching text will be removed from your pages.
Disabling a rule without deleting it
Toggle the switch in the rule header off. The rule stays saved but stops applying. Useful for testing or for rules you only want active during certain seasons.
Case-insensitive matching
Tick Case-insensitive under the Find/Replace boxes to match any capitalization. This applies to the search text — the replacement text is used exactly as you type it.
Order of execution
Rules run from top to bottom in the order they appear. If two rules might match the same text, the upper rule runs first.
Targeting — where rules apply
By default, every rule applies to every page on your site. The Where to apply section narrows that down.
Limit by post type
Pick one or more post types (Post, Page, Product, custom post types). The rule will only run on singular views of those types. Leave empty to apply on every type.
Limit by post ID
Comma-separated list of post or page IDs (e.g., 12, 15, 22). The rule runs only on those specific entries.
Limit by URL
One URL pattern per line. Each line is a substring match — if the current URL contains the line, the rule applies.
/about/
/contact/
https://yoursite.com/landing-page/
"Don't match if page contains"
A free per-rule safety switch. Enter any text or HTML snippet — if it appears anywhere in a page's output, the rule skips that page entirely. Handy for opting individual pages out without listing every URL: add a marker like <!-- no-replace --> to a page and reference it here.
Exclusion rules Pro
The "Except on" subsection mirrors the include filters but blocks the rule when matched. Use this for "apply this rule everywhere EXCEPT my About page."
Live Preview Pro
The Live Preview panel sits in the sidebar of the Rules tab. It fetches any page of your site without replacements applied, runs your current rules against it — including unsaved edits — and shows a per-rule match count with a short excerpt around the first match.
- Type or edit your rules as usual (no need to save first).
- Enter a URL from your site in the preview box (it defaults to your homepage).
- Click Run preview.
Green rows matched; grey rows didn't. A zero next to a rule you expected to match usually means the page's HTML differs from what you see rendered — right-click the text on your site, choose Inspect, and copy the exact markup. For safety, preview only fetches pages on your own domain.
Advanced matching Pro
The Advanced matching section gives you three ways to make rules more powerful, listed from easiest to most technical.
CSS selector
Restrict a replacement to elements matching a CSS selector. For example, to only replace text inside your footer:
.site-footer
The replacement runs only inside elements matching the selector. Everything outside is ignored.
Visual Picker: don't want to hunt for selectors? Click Pick from site next to the selector field. Your site opens in an overlay — hover highlights elements, and clicking one fills the selector in for you.
On WordPress 6.5+ selector rules run on the native WordPress HTML API — dramatically faster and lighter than the old DOM parser, with automatic fallback on older WordPress versions. Supported syntax: tags, #ids, .classes, attributes like [data-x="1"], combinations, descendant and > child combinators, and comma-separated lists.
Match between two markers
Use this when you want to replace a chunk of HTML that lives between two recognizable snippets, but you don't want to write regex. For example:
- Starts with:
<a href="https://oldsite.com"> - Ends with:
</a> - Replace with:
<a href="https://newsite.com">My Site</a>
Regex
For full pattern-matching power, tick Treat "Find" as a regex pattern. The plugin uses standard PHP regex with these defaults:
.matches newlines (no need for thesflag)- Patterns are UTF-8 aware
- The
iflag is added automatically when you check Case-insensitive
Patterns are validated when you save: invalid patterns are flagged immediately, and patterns slow enough to risk hurting page speed trigger a warning. A plain word like test works fine — you don't need to add delimiters unless you want custom flags.
.*? over .*. Greedy .* can match across multiple tags and break your page. Build and time patterns safely in the Regex Tester before using them in a rule.
Scheduling rules Pro
The Schedule section lets you control when a rule is active.
Date range
Pick a start date and/or an end date. The rule runs only between those dates (inclusive). Leave one empty to extend that side indefinitely.
Time of day
Pick a start time, end time, or both. Times are in 24-hour format and use your WordPress site timezone. Examples:
09:00to17:00— active during business hours22:00to02:00— overnight; the plugin handles the day-wrap correctly
Days of week
Tick which weekdays the rule should be active. Leave all days unchecked to mean "every day."
Audience and device Pro
Logged-in state
- Any visitor — default, no restriction
- Only logged-in users — guests don't see the replacement
- Only guests — logged-in users don't see the replacement
User roles
Pick one or more WordPress roles. The rule runs only when the visitor is logged in AND has at least one of the selected roles.
Device targeting
- Any device — default
- Desktop only — non-mobile visitors
- Mobile only — phones (using
wp_is_mobile()) - Tablet only — devices identifying as iPad or "tablet"
Tools: recipes, tester, sync Pro
The Tools tab collects three utilities, each in its own collapsible panel.
Recipe Library
One-click templates for the most common jobs — remove "Powered by WordPress", rename WooCommerce's "Add to cart", auto-update a copyright year, and a dozen more. Every recipe is added disabled so you can review the text, adjust it to your theme, and enable it when ready.
Regex Tester
Paste a pattern, optional replacement, and a chunk of sample HTML. You'll see every match, the exact final pattern the engine will use, the execution time, and a warning if the pattern is dangerously slow. Nothing you do here touches your site.
Rule Sync
Copy the rule set from another site you manage — ideal when you maintain a standard cleanup stack across client sites.
- On the source site, open Tools → Rule Sync and copy its sync key.
- On the destination site, enter the source site's URL and that key, then click Pull rules now.
By default rules merge (rules with matching IDs update in place); tick Replace my current rules to start fresh from the source. The key can be regenerated anytime, which immediately revokes access for anyone holding the old key. Both sites need an active Pro license.
Rule Analytics Pro
The Analytics tab shows, for every rule: total matches, matches in the last 7 days, and when it last matched. Counts are recorded on uncached page views only, so treat them as a health signal rather than exact traffic numbers.
Two things to look for: a rule that used to match but shows nothing recent usually means a theme or plugin update changed the underlying HTML — and a rule that has never matched is probably targeting text that doesn't exist as written. Collection can be switched off under Settings → Pro behaviour for zero overhead, and the data can be reset anytime.
Import / Export Pro
Export
The Import / Export tab has two download buttons:
- JSON — full fidelity. Best for backups and moving between sites.
- CSV — flat file with one row per rule. Easier to edit in Excel or Google Sheets.
Import
Click Choose file and select either a JSON or CSV file. Tick Replace existing rules to wipe your current rules and start fresh from the imported file. The import file size limit is 2 MB.
Exports include every rule field — between-marker rules, schedules, and rule IDs all survive the round trip — and CSV cells containing multi-line HTML import correctly.
Skip HTML tags
By default, replacements run against your entire HTML output — including content inside <script> and <style> tags. For most sites this is what you want.
Configuring tag protection
Go to the Settings tab and tick which common tags to skip:
<script>— protects inline JavaScript<style>— protects inline CSS<code>,<pre>— protects code examples<noscript>,<textarea>— protects fallback / form content
Caching behaviour
Static rules
Plain find/replace rules bake into cached pages like any other content — after adding or editing rules, just make sure your cache refreshes. Pro does this for you: every rule change automatically purges WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, WP Fastest Cache, SiteGround Optimizer, Hummingbird, Cache Enabler, Breeze, and WP-Optimize.
Conditional rules and Cache-Aware Mode Pro
Rules that vary by time or visitor — schedules, roles, logged-in state, device — clash with page caching, because a cache serves one frozen copy to everyone. Cache-Aware Mode (Settings → Pro behaviour) solves it with two options:
- Exclude affected pages from cache (default) — pages where a conditional rule applies are rendered fresh on every visit, so schedules and targeting always behave correctly. Only the affected pages lose caching; scope conditional rules to specific URLs to keep the rest of your site fully cached.
- Warn only — nothing is excluded and caching stays at maximum everywhere, but cached visitors may see stale conditional content until the cache expires or purges.
If you have no conditional rules, this setting has no effect at all.
Pricing and licensing
The free version needs no account and no credit card — install it from WordPress.org and you're done. Easy Search Replace Pro comes in three tiers; all tiers include every Pro feature — the only difference is how many sites you can activate on.
| Plan | Personal | Business | Agency |
|---|---|---|---|
| Activations | 1 site | 5 sites | Unlimited |
| Annual price | $29/yr | $49/yr | $99/yr |
| Lifetime price | $79 | $129 | $249 |
Localhost and staging don't count. Domains containing .local, .test, staging., or dev. are detected automatically and exempt from your activation count.
FAQ
Does this modify my database?
No. The plugin works at page render time — it intercepts the HTML right before WordPress sends it to a visitor and applies your replacements.
Will it slow down my site?
On a normal page, the overhead is a few milliseconds for plain text rules and slightly more for regex. With caching enabled, replaced output is cached just like normal page output.
Does it work on multisite networks?
Yes. The plugin can be activated network-wide or per-site. Pro is licensed per individual site.
What WordPress versions are supported?
WordPress 5.0 and later, with PHP 7.2 or later. The high-performance selector engine activates automatically on WordPress 6.5+.
How many rules can I create for free?
Up to 10 — and if you installed an earlier version with more, you keep all of them. Pro removes the limit.
Is a credit card required for the free version?
No. The free version is fully functional on WordPress.org with no account, no credit card, and no trial countdown.
Troubleshooting
"My replacement isn't happening"
- Is the rule enabled? Check the toggle in the rule header.
- Is the find text exact? Try toggling Case-insensitive.
- Are filters too restrictive?
- Is caching the issue? Clear your caching plugin and CDN cache.
"My regex matches too much"
Change .* to .*? in your pattern. The ? makes the match non-greedy.
"The site looks broken after a replacement"
Disable the rule that's causing the issue (uncheck its toggle and save). Your site returns to normal immediately.
"Preview shows matches but my live site doesn't change"
Almost always caching. Pro purges known caches automatically on save; on free, clear your caching plugin and any CDN cache manually. Also check server-level caches (LiteSpeed, Varnish) on managed hosts.
"My license shows as invalid"
Licenses re-validate daily. A temporary network hiccup is ignored, but if the license is genuinely revoked you'll see a notice with a 7-day grace period before Pro features pause. Re-activating from the License tab clears it instantly — your rules are never deleted either way.
Still stuck?
Email [email protected] with a description of what you tried, a screenshot of the rule, the URL where you expect the replacement, and your WordPress + PHP versions.