File Renamer

Drop in as many files as you like and build a chain of renaming steps — find & replace, insert text, sequential numbering, case changes, trimming and sanitizing for Windows-invalid names. Every new name is previewed before you commit, collisions are flagged, and the renamed files are downloaded with their new names (individually or packed in a ZIP). Your files are read locally and never uploaded.
Drop files here, or click to choose them
Up to 50 files. The files stay on this machine.
No files selected.

Find replace with

Text (only used by “after character”)

Pattern start step digits
Tokens: {name} current base name, {ext} extension, {n} the number, {date} today as YYYYMMDD. The pattern replaces the base name; the extension is kept unless you include {ext}.

applies to the base name only
strip leading/trailing spaces, zero-width characters and control characters
replace \ / : * ? " < > | and control bytes with _, collapse .., drop trailing dots and spaces, rename Windows reserved names (CON, NUL, COM1…)

new extension
The preview updates as you type.
Pick files above; every original name is shown next to its new name before you download anything.
How the download works: a browser page cannot rename files on your disk. Instead the renamed copies are produced here and sent to you as downloads — one file at a time with its new name, or all at once inside a ZIP whose entries already carry the new names. Privacy: nothing is uploaded; renaming happens in this tab only.

What is batch renaming?

Renaming one file is trivial. Renaming the 200 photos a camera numbered IMG_0001.JPG to paris-day1-001.jpg, or stripping  (1) copies out of a download folder, is where a batch renamer earns its keep: describe the transformation once, see what it does to every file, then commit. The preview-first design is deliberate — the most common batch-renaming accident is a rule that looked right and quietly renamed everything into document(1).pdf, document(2).pdf…

The steps, in the order they run

StepWhat it doesExample
Find & replacereplaces every occurrence of one literal stringDSC_0041.JPG → DSC_0041.jpg via JPG→jpg
Insertadds text at the start, before the extension, at the end or after the Nth characterreport.pdf → report-final.pdf
Numberingrebuilds the base name from a pattern with {n}IMG_2043.JPG → paris_01.jpg
Caselower, UPPER, Title or snake_case for the base nameMy Notes.txt → my_notes.txt
Trimremoves edge spaces, zero-width and control characters" name .txt" → name.txt
Sanitizemakes the name safe for Windows, macOS and Linuxcon.txt → _con.txt
Extensionrewrites the extension and can force it lowercasearchive.ZIP → archive.zip

Why sanitizing matters

Windows forbids \ / : * ? " < > | and the reserved device names CON, PRN, AUX, NUL, COM1–9, LPT1–9 (with or without an extension); a file called con.txt can be created by a script but then cannot be opened, copied or deleted in Explorer. macOS and Linux allow more but still choke on / and on a leading - at the command line. The sanitizer replaces invalid characters with _, collapses .. (which means “parent directory” in a path) and prefixes reserved names with an underscore.

FAQ

Can it rename files in place? — no browser page may rewrite your disk; you get downloads with the new names instead (see the note above the FAQ).
Why is there no regular-expression mode? — deliberate: a regex is a powerful way to destroy 200 filenames in one click, and the seven steps above cover the cases regular expressions are usually dragged in for.
What is a collision? — two files ending up with the same new name. The preview flags collisions in red; if you download a ZIP anyway, duplicates get a numeric suffix so no entry is lost.
Do you keep my files? — no. Close the tab and everything is gone.