Find and Replace Text – Bulk Edit Any Text in Your Browser
A find and replace text tool does one job that everyone needs and almost nobody wants to do by hand: swapping every occurrence of one string for another across a whole document. Renaming a variable in a pasted code snippet, fixing a misspelled product name in a draft, changing a delimiter across thousands of CSV rows, or redacting identifiers in a support transcript are all the same operation underneath. This tool runs that operation entirely in your browser, so logs, config files, and unreleased copy never leave your device.
Literal mode versus regular expression mode
Literal mode is the safe default. Your search term is escaped before it is compiled, so characters like ., *, ( and ? match themselves instead of doing something clever. Searching for 1.5 finds 1.5 and not 145.
Regular expression mode hands the pattern straight to the JavaScript regex engine. That unlocks character classes, quantifiers, anchors, lookarounds, and — most usefully — capture groups. A pattern of ^(\w+), (\w+)$ with a replacement of $2 $1 turns Smith, John into John Smith on every line at once. The replacement field also understands $& for the whole match and $$ for a literal dollar sign.
Narrowing what counts as a match
Two switches do most of the work. Case sensitive decides whether Fox and fox are the same thing. Whole word only wraps your term in word boundaries so cat matches the standalone word but leaves cats and category alone. When a term begins or ends with a non-word character — think --flag or (x) — plain word boundaries would never match, so whitespace lookarounds are substituted automatically.
Occurrence scoping handles the cases where replacing everything is wrong. You can rewrite only the first match, only the last, only the Nth, or only the first N. Splitting one,two,three on its first comma alone is a one-click operation rather than a manual edit.
Line guards protect the parts you care about
Real documents have regions that must not change: a CSV header row, a licence comment, a frozen configuration block. A line range restricts replacement to a span of lines, and a skip pattern exempts any line matching a secondary regular expression — ^# leaves every comment untouched. Matches are counted after these guards are applied, so the number you see is the number that will actually change.
Batch rules for dictionary-style cleanups
Some jobs are not one replacement but twenty — normalising British to American spellings, standardising terminology across research notes, or mapping a list of old URLs to new ones. Batch mode takes an ordered rule list and applies each rule sequentially over the text in a single pass, then reports a hit count per rule so you can see which rules did the work and which never fired. Order matters, because a later rule sees the output of the earlier ones; the tool warns you when two rules share the same search term for exactly that reason.
Escape sequences and safety guards
With Interpret escapes enabled, sequences like \n, \t, \r, \\, \xNN and \uXXXX in the Find and Replace fields become the characters they represent, which is how you convert tabs to commas or split a single line into many.
Regular expressions can also misbehave. A pattern that matches the empty string, such as a* or ^, would loop forever, so it is rejected with a clear message instead. Nested quantifiers that trigger catastrophic backtracking are contained by a match cap and a two-second time budget — you get a warning and partial results rather than a frozen tab. An invalid pattern reports the engine's own SyntaxError, so you learn where the unterminated group actually is.
Reading the statistics
Alongside the result text you get matches found, replacements made, lines affected, and the signed change in characters and words. The gap between matches found and replacements made is the fastest way to confirm that a scope or line guard did what you expected. Results can be copied, downloaded as a .txt file, or exported as CSV for the match list and the per-rule report.