Batch File Renamer

Rename many files at once with find and replace (text or regex), prefixes, suffixes, sequential numbering, and case changes, preview every new name, then download them as a ZIP.

runs locally on your browser. Your data never leaves your device.

Drag & drop the files to rename

Any file type. Drop a folder to keep its sub-folders in the ZIP.

Rename rules

Applied to every file in this order: find and replace, case, numbering, then prefix and suffix. Folder names are never changed.

Find and replace

Name case

Extension case

Prefix and suffix

Common Use Cases

Turn a folder of camera files like IMG_4821.JPG into Trip_001.jpg, Trip_002.jpg in shooting order
Strip a repeated prefix, (copy), or _final_v2 from dozens of exported documents with one find and replace
Rewrite dates inside file names with a regular expression, such as 20240105 to 2024-01-05, so they sort correctly
Add a client code prefix and lowercase every extension before sending a batch of deliverables

About Batch File Renamer

Batch File Renamer gives a whole set of files new names in one pass. Drop in a folder of photos called IMG_4821.JPG, IMG_4822.JPG and so on, a stack of scanned invoices, or a handful of exports with names like final_v2 (copy).pdf, set a few rules, and the list beside each file shows exactly what it will be called before anything is saved. Every new name is also an editable field, so the one file the rules get wrong can be fixed by hand without changing the rules for the rest.

There are four kinds of rule, and they always run in the same order: find and replace, then case, then numbering, then prefix and suffix. Find and replace works on plain text by default, so typing IMG_ and leaving the replacement empty deletes that text from every name. Switch on Regular expression and the find field becomes a JavaScript regex, with $1, $2 and so on in the replacement standing for captured groups, which is how IMG_(\d{4})(\d{2})(\d{2}) and $1-$2-$3 turn a camera's IMG_20240105 into 2024-01-05. Matching ignores upper and lower case unless Match case is on, and the extension is left alone unless Include extension is on, so replacing jpg cannot accidentally break .jpg. If the regular expression is not valid, the tool says so and why, and no name changes until it is fixed.

Case conversion turns names into lowercase, UPPERCASE, Title Case, or Sentence case, and the extension has its own setting, which is the quickest way to turn a camera's .JPG into .jpg without touching the rest of the name. Sequential numbering adds a counter before or after each name, or replaces the name with the counter entirely. You choose the starting number, the step, the separator, and the number of digits. Padding matters more than it looks: a list numbered 1, 2, 10 sorts as 1, 10, 2 in most file managers, while 001, 002, 010 sorts correctly, so the tool warns you when your last number needs more digits than you allowed. Numbers follow the list order, which can be the order you added the files, natural name order (where file2 comes before file10), or date modified, the right choice for photos from several cameras. The prefix and suffix are added last, so a prefix of Trip_ with numbering set to Replace name produces Trip_001.jpg, Trip_002.jpg, Trip_003.jpg.

Two files must never end up with the same name, because one would silently overwrite the other when you unpack the result. The tool checks every new name against all the others, ignoring case, since Photo.jpg and photo.jpg are the same file on Windows and on a standard Mac disk. The first file in the list keeps the name and each later one gets (1), (2), and so on before the extension, the same way the File Archiver on this site handles clashes. The row is outlined, says which name it will really be saved under, and the Clashes Resolved count shows how many there are. Characters that Windows does not allow in file names, such as a colon, a question mark, or a slash, are replaced with an underscore, and a rule that would leave nothing but the extension keeps the original name instead of producing a hidden file.

A web page cannot rename files on your disk in place. Browsers give a page a read-only copy of each file you choose, and no permission exists that would let it rename the original. So the renamed files come out as one ZIP, with each file saved under its new name, its modification date kept, and any sub-folders from a dropped folder kept as they were. Photos, videos, and other already compressed files are stored in the ZIP as they are, and text and documents are compressed. Unzip it where you want the renamed copies, and delete the originals once you have checked them.

Everything happens in your browser tab. The file names, the rules, and the file contents never leave your device, no request carries them anywhere, and the ZIP is built from the files on your own disk. That makes it safe for private photos, client documents, and anything else whose names you would rather not upload to a renaming service.

Frequently Asked Questions

Are my files or their names uploaded anywhere?
No. The tool reads the files you choose directly from your disk inside your browser tab, works out every new name there, and builds the ZIP there too. No request containing a file, a file name, or your rules is ever sent to a server. You can open the Network tab in your browser's developer tools while you use it and confirm that nothing leaves the page.
Why do I get a ZIP instead of my files being renamed directly?
Browsers do not let a web page rename or move files on your computer. When you choose files, the page receives a read-only copy of each one, and there is no permission that grants access to rename the original. A ZIP is the one way to hand back every file under its new name in a single download. Extract it where you want the renamed copies, then delete the originals when you are happy with the result.
What happens when two files would get the same name?
The first file in the list keeps the name and every later file with the same name gets (1), (2), and so on before its extension, so report.pdf, report (1).pdf, report (2).pdf. Names are compared without regard to case, because Photo.jpg and photo.jpg overwrite each other on Windows and macOS. The affected rows are outlined and show the name they will really be saved under, and the Clashes Resolved count tells you how many there are.
How do I use a regular expression to rename files?
Turn on Regular expression, type a JavaScript pattern in Find, and use $1, $2 and so on in Replace with for the parts in parentheses. For example, Find IMG_(\d+) with Replace photo-$1 turns IMG_4821.jpg into photo-4821.jpg, and ^ with a replacement of draft- adds draft- to the front of every name. Every match in a name is replaced. An invalid pattern shows an error and changes nothing until it is fixed.
How does the numbering decide which file gets which number?
Numbers follow the order of the list, and the Order control sets it: as added, by name, or by date modified. By name uses natural order, so photo2 comes before photo10. Each row keeps its position's number even if you edit that row by hand, so fixing one name never shifts the others. Set Digits to the length of your largest number, for example 3 for up to 999 files, so the names sort correctly in any file manager.
Can I change just one name the rules got wrong?
Yes. Every new name in the list is a text field. Type over it and that row keeps your name, marked Edited by hand, while the rules keep updating every other row as you change them. The undo button on the row, or Undo edits above the list, puts the row back under the rules. Hand-typed names still go through the duplicate check and have characters that are not allowed in file names replaced.