Bulk String Replacer
Apply an ordered list of find-and-replace rules to your text in one pass — each rule can be plain text or a regex, with a live preview before you commit.
Input text
Replacement rules
Rules run top to bottom. Each rule transforms the result of the rule before it, not the original text — reorder with the arrows if that changes what you want.
Output preview
How Bulk String Replacer works
Each rule in the list runs in order, top to bottom, and every rule transforms the output of the rule before it — never the original text. That's what makes replacements chain:
// Rules (applied top to bottom) 1. Find "cat" -> Replace "dog" 2. Find "dog" -> Replace "fish" // Input The cat sat on the mat. // After rule 1 The dog sat on the mat. // After rule 2 (final output) The fish sat on the mat.
Turn on a rule's Regex toggle to compile its Find field as a JavaScript regular expression (always global, so it replaces every match — optionally case-insensitive too). Its Replace field then supports standard capture-group syntax: $1, $2, and so on. In plain-text mode the Replace field is inserted exactly as typed, with no special characters.
Frequently asked questions
Is it safe to paste sensitive text or code into this tool?
Yes. All processing happens locally in your browser using native JavaScript; nothing you type or paste is ever sent to a server.
Do the rules apply all at once, or one after another?
One after another, in the order they're listed. Rule 2 runs on the output of rule 1, not on the original text, so a rule can match text that a previous rule just created. Reorder rules with the up/down buttons if you need a different result.
Can I use regular expressions?
Yes. Turn on the Regex toggle for any rule to compile its Find field as a JavaScript regular expression, with an optional case-insensitive flag. The Replace field then supports capture groups like $1 and $2.
What happens with a very large input or a runaway regex pattern?
Live processing is capped at a few hundred thousand characters, and each rule stops after 100,000 replacements and flags its count as capped. This keeps a mistyped or catastrophic regex pattern from freezing the tab.