Replace many words at once and see every change in color
Bulk Find and Replace applies a list of "find → replace" rules to a whole text in one go. Use it when a notice needs a new team name, a manuscript needs one consistent spelling, or meeting notes need their names hidden: any job where you would otherwise run Find and Replace once per rule.
Changed spots are painted in the rule's color in the result pane, and the same spots are marked in the original pane. Click a painted spot and the other pane jumps to the same place, so you can check what was there before. The big number at the top counts the changed spots, and the distribution map shows where in the text they cluster. Your text and files are processed in this browser only. Nothing is sent to a server or stored.
What goes wrong when you press Find and Replace several times
With one rule, the Find and Replace of any editor is enough. With two or more, the output of one rule becomes the input of the next. Replace "left" with "right" and then "right" with "left", and every spot ends up as "left", including the ones that said "right" at the start. Replace "York" first, and a later rule for "York Station" finds nothing.
This tool lets you choose how the rules are applied, and it flags the spots where a later rule changed text that an earlier rule had just written. That makes it easier to see where a long rule list got tangled. Typical uses:
- Renaming: a company, team or product changes its name and every notice and help page has to follow
- Unifying spelling: e-mail, E-mail and EMAIL are mixed in one manuscript
- Masking: names and phone numbers in meeting notes or shared documents become initials or asterisks
- Swapping: two words trade places, such as left and right, or Party A and Party B
- Code and data: variable names, or values in a CSV, replaced as whole words
How to use it
- Paste your text into the original pane or drop a text file onto it. Open file reads TXT, MD, CSV, SRT and other plain-text files.
- Type the text to find in the left box of a rule row and the replacement in the right box. Leave the replacement empty to delete what was found. Pressing Enter in the replacement box moves to the next rule row.
- Turn on Aa (ignore case), ab (whole word), AB (preserve case) or the padlock (keep as is) for each rule as needed. Press the number box at the start of a row to switch that rule off for now.
- Pick how the rules apply with Sequential or All at once. All at once is the right choice when you swap two words or when a longer find text contains a shorter one.
- Check the warnings and the painted spots, then press Copy result or Save. A file you opened is saved under the same name with "-replaced" added.
Sequential and All at once give different results
Sequential applies rule 1 to the whole text, rule 2 to that result, and rule 3 to the result of that. It is the same as pressing Replace All once per rule, in order. Text written by an earlier rule can be found by a later one, so it suits chains such as A → B, B → C.
All at once reads the original text once, from the start, and applies whichever rule matches at each spot. Replaced text is never searched again, and when several rules match at the same spot the longest find text wins (the upper rule if they are equally long). This is how PHP's strtr works when you pass it an array. You do not have to think about rule order when you swap words or replace words that contain each other.
| Original | Rules (top to bottom) | Sequential | All at once |
|---|---|---|---|
| left right | left → right right → left | left left | right left |
| cat | cat → dog dog → rabbit | rabbit | dog |
| York Station and York office | York → Leeds York Station → Leeds Station | Leeds Station and Leeds office | Leeds Station and Leeds office |
| York Station and York office | York → Leeds York Station → York Station | Leeds Station and Leeds office | York Station and Leeds office |
The third row looks the same in both modes, but in Sequential mode rule 2 finds 0 matches, because rule 1 had already changed the "York" inside "York Station". The tool puts a wavy underline under the count of such a rule and says it has matches in the original but 0 now. In the fourth row you want to keep "York Station". In Sequential mode a rule that replaces it with itself does not help, so use All at once or turn on Keep as is (below).
How to swap two words
In All at once mode a swap takes two rules. Because the original is read only once, a "right" that was just written never turns back into "left". With the same rules in Sequential mode, the summary shows the spots that changed and came back as dashed marks, and a button in the warning switches to All at once.
In an editor that only has sequential replacing, you swap in three steps through a temporary marker. Choose a marker that never appears in your text.
| Original | Rules (top to bottom) | Result |
|---|---|---|
| Alice pays Bobby and Bob | Alice → §tmp§ Bob → Alice §tmp§ → Bob | Bob pays Aliceby and Alice |
The swap worked, but "Bobby" became "Aliceby". When a swapped word is part of another word, that word changes too. In the All at once version below, Keep as is protects "Bobby", so only the two names trade places.
| Original | Rules (top to bottom) | Result |
|---|---|---|
| Alice pays Bobby and Bob | Bobby keep as is Alice → Bob Bob → Alice | Bob pays Bobby and Alice |
When the new word needs a different "a" or "an"
When one find text contains another (York and York Station), the order of the rules changes the result. In Sequential mode put the longer text on top. In All at once mode the longer text always wins, whatever the order. The same trick fixes grammar that depends on the next word. In English the common case is a or an.
| Original | Rules (top to bottom) | Result |
|---|---|---|
| I ate an apple and an orange. | apple → pear | I ate an pear and an orange. |
| I ate an apple and an orange. | apple → pear an apple → a pear | I ate a pear and an orange. |
| Buy a pear and a plum. | pear → apple | Buy a apple and a plum. |
| Buy a pear and a plum. | pear → apple a pear → an apple | Buy an apple and a plum. |
After "apple" becomes "pear", "an apple" turns into "an pear", because the tool replaces letters and does not read sentences. Add the article to the rule, as the second and fourth rows do. The same applies to verb forms: replacing "the team" with "the teams" leaves "the teams is ready". Add the frequent pairs as rules, and read the painted spots in the result for the rest.
Keep as is: protect what must not change
A rule with Keep as is (the padlock) does not replace what it finds and locks that spot. In Sequential mode the rules below it cannot touch a locked spot. In All at once mode a kept text that is longer than a short rule's text matches first. Put keep rules at the top and they work in both modes.
This matters most in a document that is already partly converted. If you replace "AI" with "artificial intelligence (AI)" and the text already contains "artificial intelligence (AI)", the AI inside it is replaced too and you get "artificial intelligence (artificial intelligence (AI))". As the second row shows, keeping "artificial intelligence (AI)" leaves the converted spots alone.
| Original | Rules (top to bottom) | Result |
|---|---|---|
| artificial intelligence (AI) and AI translation | AI → artificial intelligence (AI) | artificial intelligence (artificial intelligence (AI)) and artificial intelligence (AI) translation |
| artificial intelligence (AI) and AI translation | artificial intelligence (AI) keep as is AI → artificial intelligence (AI) | artificial intelligence (AI) and artificial intelligence (AI) translation |
| York Station and York office | York Station keep as is York → Leeds | York Station and Leeds office |
A kept spot gets a dotted underline in both panes, and the number on that rule counts kept spots, not changes.
Whole word and apostrophes
With Whole word (ab) on, a match counts only if the character right before and right after it is not a letter, digit or underscore. Searching for user changes the lone "user" and skips username, getUser and user_id. If your find text starts or ends with a symbol such as # or a parenthesis, that side is not checked.
The test looks at characters, not spaces. An apostrophe is not a letter, so "user" is still found inside "user's". Plurals are different words here: "users" is skipped, so add a second rule for it if you want it changed too.
| Original | Rules (top to bottom) | Result |
|---|---|---|
| user username getUser user_id | user → member, whole word | member username getUser user_id |
| the user's file, a username and users | user → member, whole word | the member's file, a username and users |
| #tag, a#tag, #tags | #tag → #label, whole word | #label, a#label, #tags |
Ignore case and Preserve case
By default only the exact capitalization you typed is found. With Aa (ignore case), a search for apple also finds Apple and APPLE. The replacement goes in as you typed it, though, so an Apple at the start of a sentence becomes a lower-case pear.
AB (preserve case) adjusts the replacement to the shape of what was found. All capitals give an all-capital replacement, all lower case gives lower case, and a capital first letter gives a capital first letter. A mixed shape such as iPhone has nothing to copy, so the replacement goes in as typed. It is the same idea as Preserve Case in the replace box of VS Code. Turning on Preserve case turns on Ignore case too.
| Original | Option | Result |
|---|---|---|
| Color color COLOR | none | Color colour COLOR |
| Color color COLOR | Ignore case | colour colour colour |
| Color color COLOR | Preserve case | Colour colour COLOUR |
Digits, symbols and scripts without capital letters, such as Chinese, Japanese, Korean, Arabic and Hebrew, are not affected by these two options.
Paste a spreadsheet list as rules
If you have dozens of replacements, put them in two spreadsheet columns (find | replace), copy the range and paste it into any find box. Spreadsheets copy the columns separated by a tab, so every row becomes one rule. You can have up to 200 rules.
The List view above the rules shows all rules as text that you can edit. Write one rule per line and put a tab or → between the find text and the replacement. In the list box the Tab key types a tab, so press Esc and then Tab to leave the box. Copy this list and keep it, and you can paste it back the next time you do the same job.
Why the rule counts and the changed spots differ
The number at the right of a rule row is how many times that rule found something when it ran. The big number in the summary is how many spots in the result differ from the original. They differ in these cases:
- In Sequential mode, when a later rule changes text that an earlier rule wrote, both rules count their hits but the spot is one change. The summary says that rule n changed text made by rule m again.
- A spot that changed and came back to the original text is not counted as changed. It is marked with a dashed line instead.
- The number on a keep rule counts kept spots, so it is not part of the changed spots.
- Inside one rule, overlapping matches are counted once from the left. Replacing aa with X in aaa gives Xa, and the count is 1.
Press the number on a rule row to step through the spots that rule changed. The ‹ › buttons in the summary step through all changed spots one at a time.
Compared with other programs
| Program | How several words are replaced | Notes |
|---|---|---|
| Google Docs | One find and replace pair at a time | Match case and regular expression options |
| VS Code | One find and replace pair at a time | Match Case, Match Whole Word, regular expressions, Preserve Case |
Python str.replace | In the order you call it (sequential) | Non-overlapping from the left, optional count argument |
PHP strtr (array) | All at once, longest first | Replaced text is not searched again |
JavaScript replaceAll | In the order you call it (sequential) | Even with a string as the find text, patterns such as $& in the replacement keep their special meaning |
Excel SUBSTITUTE | Nested calls run from the inside out | The fourth argument replaces only the nth match |
This tool inserts the replacement exactly as you typed it. If you write $& or $1, those characters appear in the result. They do not turn into the match or a group the way they do in a regular expression. For patterns such as digits only or the start of a line, use the replace tab of the Regex Tester.
Common mistakes
- Looks identical but is not found: text copied from a web page can contain a no-break space (U+00A0) and curly quotes or apostrophes (’ “ ”) in place of the straight ones (' "). They look alike but are different characters. Letters with accents can also be stored in two ways (é as one character, or e plus a combining accent), and the two forms are different too. Copy the part you want to change from the original text and paste it into the find box, and it matches.
- Spaces around the find text: if a cell copied from a spreadsheet ends with a space, that space is part of the find text. A rule with a leading or trailing space is reported in the status line.
- Changes inside other words: replacing "cat" with "dog" turns "category" into "dogegory". Look through the painted spots in the result, and protect words that must stay with Keep as is or Whole word.
- The same text replaced twice: in Sequential mode, A → AB followed by B → C also changes the new B. When the warning appears, switch to All at once or change the rule order.
- A space left after deleting: removing "(draft)" from "(draft) report" leaves a space in front. Put the space into the find text and delete "(draft) " instead.
- Plurals and endings: replacing "box" with "crate" turns "boxes" into "cratees". Add "boxes → crates" as its own rule on top, or use All at once, where the longer text wins.
Limits
- Find texts are matched letter for letter. Regular expressions, wildcards and patterns such as the start of a line are not supported.
- The tool does not read the meaning of a sentence. It does not fix a or an, plurals or verb forms for you, so add rules for them or edit the result by hand.
- Whole word looks at the kind of character before and after, not at spaces. It is not meant for languages that are written without spaces, such as Japanese and Chinese.
- Preserve case follows only three shapes: all upper case, all lower case, and a capital first letter.
- The source can have 300,000 characters, the result 1,000,000, rules 200, a find text 500 and a replacement 2,000. A character stored as two units, such as an emoji, counts as one. Painting covers the first 3,000 spots, and after that only the result text changes.
- Only plain-text files such as TXT, MD and CSV open. DOCX, HWP and PDF files carry formatting, so copy the text and paste it. A file that is not UTF-8 is read again as Windows-1252.
- Rules and text are not kept in the address or in storage. Before you close the page, save the result and, if you need them again, copy the rules from the List view.
Basis: the replacing methods come from the PHP strtr, Python str.replace and ECMAScript replaceAll documentation, and the options of other programs from the official help of VS Code, Google Docs and Microsoft Excel, all checked on October 22, 2026. The results in the tables were re-run with this page's replace code and matched.
Sources
- 01PHP: strtrWith an array the longest keys are tried first, and replaced text is not searched again
- 02Python: str.replaceA copy with all matches replaced, and the count argument
- 03ECMAScript: String.prototype.replaceAllThe specification of string replacing in JavaScript
- 04MDN: String.prototype.replace()Special patterns such as $& and $1 in the replacement
- 05VS Code: Basic editingMatch Case, Match Whole Word and Preserve Case in find and replace
- 06Google Docs Editors Help: Find and replace textMatch case and regular expression options
- 07Microsoft: SUBSTITUTE functionFourth argument instance_num replaces only the nth match
- 08Unicode: UAX #15 Normalization FormsDifferent representations of characters that look the same (NFC and NFD)
Frequently asked questions
How do I replace several words at once?
Enter one find and replace pair per rule row, and all rules are applied to the whole text. Add rows with the Add rule button or by pressing Enter in a replacement box, or copy two spreadsheet columns and paste them into a find box to get one rule per line.
What is the difference between Sequential and All at once?
Sequential runs rule 2 on the result of rule 1, so text written by an earlier rule can be changed again. All at once reads the original text once, applies all rules together and never searches replaced text again. When several rules match at the same spot, the longest find text wins.
Can I swap A and B?
Yes. Set the mode to All at once and add the two rules A → B and B → A. In Sequential mode A becomes B and then turns back into A, so the summary marks the spots that came back with dashed lines and offers a button to switch to All at once.
Can I stop certain words from changing?
Add the word as a find text and turn on the padlock (keep as is). That spot is locked, and the rules below cannot change it. Use it to keep York Station while York becomes Leeds, or to avoid changing text that is already converted.
Can I replace only whole words?
Turn on ab (whole word) for the rule, and only matches with no letter, digit or underscore right before or after are replaced. An apostrophe is not a letter, so user is still found in user's, while username and users are skipped.
Can I match upper and lower case and keep the shape?
Turn on AB (preserve case) to find without regard to case and write the replacement in the shape of what was found: Color becomes Colour and COLOR becomes COLOUR. With only Aa (ignore case), the replacement is inserted exactly as you typed it.
Why does a rule show 0 matches when the text is clearly there?
An earlier rule may have changed part of that text first, or the characters may only look the same. If an earlier rule is the cause, the count gets a wavy underline and a note, so move the longer text up or switch to All at once. For a no-break space or a curly apostrophe copied from the web, copy that part from the original and paste it into the find box.
Are my text and files stored on a server?
No. Text and files are changed only inside this browser, and nothing is sent to a server or kept in the address or in storage. The text is gone when you close the page, so copy or save the result.