Skip to content
TextLab

Free bulk find and replace

Find and replace text everywhere at once

Paste your text, type what to find and what to put in its place, and every occurrence changes at once with an exact count of how many. It is free, needs no signup, and takes up to eight find-and-replace pairs at a time, all applied in one left-to-right pass — so two words can be swapped with each other, which running the rules one after another could never manage. Each change is listed with the words around it before you copy anything, and the work happens in this tab: two megabytes of prose with 89,888 replacements is rewritten in about 25 milliseconds.

  • 100% free
  • No signup
  • Up to 8 pairs in one pass
  • Every change previewed
  • No length limit
0replacementsnothing to change yet

What to swap

1 of 8 · all applied in one pass, top pair first where two match the same spot

How to find and replace text in bulk

Three steps, and nothing is altered until you copy the result out.

  1. Load the text that needs the same edit repeatedly

    Paste the article, the batch of product descriptions, the exported list of headlines — anything where one word has to become another everywhere it occurs. ⌘V (Ctrl+V on Windows) works anywhere on this page. Nothing is altered yet: the original stays in the top box untouched, and the rewrite appears separately at the bottom.

  2. Fill in what to find, and add a row for each further swap

    Type the word or phrase on the left and its replacement on the right. Add another pair for the next swap, up to eight, and every one of them is applied in the same left-to-right sweep — so you can exchange two words with each other, which two separate passes could never do. The number at the end of each row counts what that pair changed; the tick box turns a row off without deleting it.

  3. Read the change list before you take the result

    Every replacement is listed with the words around it, the old text struck through and the new text beside it, up to the first 200; the headline count is exact however many there are. When it looks right, Copy the result puts the rewritten text on your clipboard, Download saves it as replaced.txt, and Run the next pass on this moves the result up into the input box so you can chain a second round of swaps.

Technical specifications

Pairs per runUp to 8, each with its own on/off tick and its own count; all applied in one left-to-right pass, the earliest match winning and ties going to the higher row
Matching optionsCase-insensitive by default, whole-word boundaries, literal text or a pattern, plus per-line ^ and $ and a line-crossing dot when the pattern option is on
In the replacement boxLiteral text, or $1 to $9 for bracketed groups and $& for the whole match once patterns are enabled; an empty box deletes the match
Runaway-pattern guardTwo exponential shapes are refused before they run — a repeat inside a repeat, and a repeated group with overlapping alternatives — and any other pattern is stopped after 2 seconds
Main-thread behaviourThe pass hands control back to the browser every 12 ms and abandons a superseded run as soon as a newer one starts, so typing stays smooth on a multi-megabyte paste
Change previewThe first 200 replacements listed with 34 characters of context on each side, old struck through and new beside it; the headline count is exact however many there are
Measured speed2 MB of prose with four pairs running and 89,888 replacements made: about 25 ms on an Apple M-series laptop
PriceFree, no signup, no length limit and no cap on how many passes you run

Frequently asked questions

Can I replace several different words in one go?

Yes — up to eight pairs, and they all run in a single sweep rather than one after another. That distinction does more work than it sounds like. Applied in sequence, changing cat to dog and then dog to wolf would turn your cats into wolves, and swapping two words with each other would be impossible because the second rule would undo the first. Here each position in the text is settled once: the earliest match wins, and where two pairs match at the same spot the one nearer the top of the list takes it, so nothing a pair writes can be picked up by a pair below it.

Does it care about capital letters?

Not unless you tick Match capitals exactly, so by default Colour, colour and COLOUR are all found. The replacement, though, is inserted precisely as you typed it — it does not copy the capitalisation of the word it replaced. Swapping colour for color in a text where the word also starts sentences therefore needs either two pairs, one for each capitalisation, or a second pass through the sentence case tool afterwards.

How do I stop it changing words inside other words?

Tick Whole words only, and cat will no longer match the middle of catalogue, scatter or bobcat. It works by requiring a boundary between a letter or digit and anything that is not one, which means it has no effect on a search term that starts or ends with punctuation — searching for (draft) is already unambiguous, so the option is quietly ignored there rather than breaking the match.

Do I need to understand regular expressions to use this?

No. The pattern option is switched off, and while it is off every character in the find box is taken literally — a dot means a dot, an asterisk means an asterisk, and $19.99 finds $19.99. Turn it on only if you want the extra reach: \d{4} for any four digits, ^\s+ for the indent at the start of a line, or (\w+)@example\.com to catch a whole family of addresses at once.

Why was my pattern refused before it ran?

Because its shape can take exponential time, and a pattern like that does not merely run slowly — it stops the tab responding at all, with your text still in it. Two shapes are refused: a repeated group whose contents also repeat, such as (\w+\s?)* or (a+)+, and a repeated group whose alternatives can start with the same character, such as (a|a)+ or (\w|\d)*. Both make the engine try every possible way of dividing a line that nearly matches, and the number of ways doubles with each character. Everything else is allowed to run, under a two-second budget after which the pass gives up and tells you so.

How do I delete a word instead of replacing it?

Leave the replace box empty and every match disappears, with the count still telling you how many went. It is the quickest way to strip a recurring tag, a tracking parameter or a piece of boilerplate out of a long file, and the change list shows each deletion as a struck-through phrase followed by an empty-set mark so you can confirm you are not also taking the space beside it.

Can I keep part of what I found in the replacement?

Yes, once the pattern option is on: put the part you want to keep in round brackets and refer to it as $1 in the replace box, up to $9 for the ninth pair of brackets, with $& standing for the whole match. Turning 2026-08-09 into 09/08/2026 is one pair — find (\d{4})-(\d{2})-(\d{2}) and replace with $3/$2/$1 — and rewriting every heading with a prefix is simply $& with your text in front of it.

The two ways a bulk replace goes wrong

The first is order. Most tools apply your rules one after another over the whole text, which sounds harmless until the output of one rule becomes the input of the next. Change cat to dog, then dog to wolf, and the cats you never meant to touch have quietly become wolves. Exchange two names with each other in a draft and the second rule undoes the first, leaving both people called the same thing. This page settles every position in the text once, in a single sweep from left to right: whichever pair matches earliest wins that spot, ties go to the pair nearer the top of the list, and the sweep resumes after the text that was written, never inside it. Swapping two words really does swap them, and a chain of rules cannot cascade. When you do want a second round — replacing something you have only just created — the button below the result moves it up into the input box, which makes the cascade deliberate instead of accidental.

The second is the pattern that never finishes. Certain shapes of regular expression make a matching engine try every possible way of dividing a piece of text, and the number of ways doubles with each extra character: (a+)+b against thirty as with no b takes roughly a billion attempts, against forty as it takes a trillion, and the tab simply stops responding with your text still inside it. This is not a theoretical hazard. Cloudflare took a large part of the web offline for about half an hour in July 2019 because a single firewall rule contained the sequence .*.*=.*; Stack Overflow went down for 34 minutes in 2016 when a routine tidy-up pattern met a post containing 20,000 consecutive spaces. Both were engineers who knew what they were doing. So two shapes are refused here before they are ever run — a repeat nested inside a repeat, and a repeated group whose alternatives can begin with the same character — and every other pass is given two seconds, checks the clock as it goes and hands control back to the browser every twelve milliseconds so the page stays alive while it works.

The oldest failure is smaller and more embarrassing: matching inside a word. A profanity filter that swapped three letters for a politer three turned classic into clbuttic and the Associated Press into the Buttociated Press, a bug so common it has a name; AOL famously spent years refusing to let anyone from Scunthorpe register an account for the same reason. Whole words only is the fix for that, and the change list above is the safety net for everything else — a preview costs you five seconds and catches the replacement that was right in nine hundred places and disastrous in the tenth. Two neighbouring jobs deserve their own tools rather than a clever pattern here: if the goal is to reshape rows into fields, the text to columns splitter handles quoting and ragged rows properly, and if you are hunting for email addresses rather than editing them, extract emails from text already knows every shape one can take.

Where the rewriting happens

In your browser, on your machine, with no server involved at any point. The text you paste and the words you are swapping are held in the tab's own memory while it works and are gone the moment you close it — nothing is uploaded, nothing is logged, and no draft, contract or client file passes through anything of ours. It is also why the two-second budget exists: there is no big machine elsewhere to send a slow job to, so a slow job has to be stopped politely here.