Home / Guides

How to rename files from an Excel list

Last updated . Takes about 3 minutes for a batch of 200 files.

If you already have a spreadsheet with the current filenames in one column and the names you want in another — a photo shoot's shot list, a product catalogue, scanned invoices, exported audio stems — you do not need a macro. You need to get that spreadsheet and those files into the same place and let something match them up. That is what the tool on the home page does, entirely in your browser.

1. Put the two columns in your sheet

Any of these header pairs are recognised automatically:

Current filenameNew filename
old, current, from, source, filename, original, existing namenew, target, to, rename to, desired, new name

The first column is the name as it is on disk right now, the second is the name you want. Everything after row 1 is treated as data. Blank rows are skipped. If your sheet has no headers at all, the tool falls back to using the first two columns and says so.

A real example. Row 2 could read DSC_0412.JPG → whitby-abbey-sunrise-01.jpg. The match is made on the name without its extension and is case-insensitive, so dsc_0412 also matches DSC_0412.JPG.

2. Decide what happens to extensions

The extension on disk wins. If your sheet says invoice-2024-001 and the file is scan_0031.pdf, the result is invoice-2024-001.pdf. You do not have to type extensions, and if you do type one that differs from the file, the file's own extension is kept. This is deliberate: a spreadsheet should not be able to turn a PDF into a JPEG by typo.

3. Get the files and the sheet into the tool

  1. Open the renamer.
  2. Drop your .xlsx or .csv on the first box. Every sheet in the workbook is listed; pick one.
  3. Drop the files on the second box — select them in Explorer/Finder, or drop a ZIP of them. A ZIP is unpacked in memory.
  4. Check the preview.

Nothing is uploaded at any point. The spreadsheet is parsed by a JavaScript library inside the tab, the matching happens in memory, and the output ZIP is assembled the same way. You can confirm this yourself by opening your browser's Network panel while you use it.

4. Read the preview before you commit

The preview lists every file with one of five statuses:

StatusMeaning
Will renameMatched, new name is legal and unique.
UnchangedMatched, but the new name is identical to the old one.
No row in sheetThe file exists on disk but no row mentions it. It is left untouched.
ConflictTwo files would end up with the same name. Both are skipped rather than one silently winning.
Illegal nameContains < > : " / \ | ? *, ends in a dot or space, or is a reserved Windows name such as CON or LPT1.

Rows in the sheet that match no file are listed separately, so a typo in the old-name column shows up as "unmatched row" instead of quietly doing nothing.

5. Download the renamed ZIP — or write to the folder

Download a ZIP works everywhere and is the safe default: the original files are untouched, you unzip the result next to them and delete the originals yourself when you are happy.

Rename in place is offered in Chromium-based browsers (Chrome, Edge, Brave) through the File System Access API. You pick the folder, the tool copies each file to its new name and only then removes the old one, so an interrupted run leaves you with duplicates rather than holes.

Why not just write a VBA macro?

You can — Name oldPath As newPath in a loop is about six lines. The reasons people end up looking for a tool instead are usually one of these:

Why not mv / Rename-Item in a shell?

Also fine if you are comfortable with it, and the tool will happily export a report CSV you could turn into a script. The trade-off is that a shell loop needs the mapping in a machine-readable form, needs correct quoting for names with spaces or apostrophes, and needs you to have a dry-run habit. If you have all three, use the shell. If you would rather see a preview table and click a button, use this.

What about 5,000 files?

The mapping engine is linear in the number of files and rows. Our own test suite builds a 5,000-file / 5,000-row plan and asserts it completes well under a second on a laptop; the browser-side ZIP then takes most of the wall time because it is compressing real bytes. Very large batches are limited by your tab's memory, not by the matching.

Open the renamer →

Next: renaming from a CSV · batch rename on Mac and Windows