Documentation

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:

  1. Go to Plugins → Add New
  2. Search for "Easy Search Replace"
  3. Click Install Now, then Activate
  4. 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:

  1. Go to Settings → Easy Search Replace
  2. Open the License tab
  3. Enter the license key from your purchase email (or copy it from Licenses in your FluxPress account)
  4. 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.

  1. In the Find box, type the text you want to replace (e.g., Old Company Name)
  2. In the Replace with box, type what it should become (e.g., New Company Name)
  3. 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.

  1. Type or edit your rules as usual (no need to save first).
  2. Enter a URL from your site in the preview box (it defaults to your homepage).
  3. 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 the s flag)
  • Patterns are UTF-8 aware
  • The i flag 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.

Tip: When matching across HTML, prefer .*? 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:00 to 17:00 — active during business hours
  • 22:00 to 02: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."

Important: The schedule fields are only honored when the Enable schedule checkbox at the top of the section is on.

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.

  1. On the source site, open Tools → Rule Sync and copy its sync key.
  2. 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
Important: Regex rules and "match between" rules always run against the full HTML output. Plain rules are the only ones affected by tag protection settings.

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.

PlanPersonalBusinessAgency
Activations1 site5 sitesUnlimited
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.

Ready to try it?
Free on WordPress.org. Pro from $29/year.
View plugin