Bulk & Automation

Rename Multiple Files, Each With Its Own Different Name

There are two very different things people mean by "rename multiple files with different names." One is really sequential numbering, one base name plus 001, 002, 003, which is a pattern, not distinct names. The other, the one this page is about, is genuinely different: every file needs its own specific name, and no single rule produces them. That's a mapping problem, and how you solve it depends on where the right names come from: a list you already have, or the content inside each file.

Which Method Fits Your Situation

The right approach depends entirely on where the distinct names come from.

Your situationBest methodNotes
You have a list of new names (old → new)CSV / Excel mappingFastest for a known list; see the Excel-list guide
A handful of files, names in your headManual F2, file by fileSimple, no tools, tedious past ~10 files
You can script the mappingPowerShell hashtable lookupGood when the mapping follows some logic
The right name is inside each fileContent-aware renamingA script can't read the file; OCR/AI can
You just want a base name + numberSequential renameDifferent problem, see the Windows guide

First, Rule Out Sequential Numbering

Before anything else, decide which problem you actually have. If you'd be happy with Photo_001, Photo_002, Photo_003, that's sequential numbering, and Windows File Explorer does it natively: select the files, press F2, type a base name, and it appends numbers. That's covered in how to rename multiple files on Windows. It is not what this page solves.

This page is for when each file needs a genuinely different, meaningful name, invoice-acme-nov, invoice-globex-dec, contract-smith-signed, and there's no counter that produces those. For that, the names have to come from somewhere, and there are two places they can come from.

Method 1: A Mapping List (You Already Know the Names)

If you already have, or can quickly build, a list pairing each old filename with its new name, a mapping is the cleanest solution. You put the pairs in a spreadsheet or CSV, old name in one column, new name in the next, and a tool or short script renames each file to its match.

This is the right method whenever the names exist outside the files, in your head, in an email, in a catalog, and just need to be applied. Because it's a common enough need to deserve its own walkthrough, the full spreadsheet-driven workflow lives on rename files from an Excel list. Use that when your batch is more than a handful of files and you can express the new names as a list.

Before you run any mapping, do two quick sanity checks. First, confirm the number of rows in your list matches the number of files you mean to rename, so nothing is left behind and no row points at a file that isn't there. Second, scan the new-name column for duplicates, because if two files would resolve to the same name the rename either silently overwrites one of them or errors out partway through, leaving your batch half-renamed and hard to recover. Sorting the list by the new name makes any accidental repeats jump out immediately.

Method 2: A PowerShell Lookup (When the Mapping Has Logic)

If the mapping follows some rule you can express, or you just prefer scripting, a PowerShell hashtable works well for a small, known set. Keep the set small and well defined, though, because a hashtable typed by hand gets error-prone past a dozen or so entries, and a stray typo in a key means that file is silently skipped rather than flagged. You define the pairs and rename each file to its looked-up value:

  1. Define the map: $map = @{ 'DSC0001.jpg' = 'front-cover.jpg'; 'DSC0002.jpg' = 'back-cover.jpg' }
  2. Loop and rename each matching file: $map.GetEnumerator() | ForEach-Object { Rename-Item $_.Key -NewName $_.Value }
  3. Add -WhatIf to the Rename-Item to preview the result before applying.
  4. For a longer list, import it from a CSV instead of typing pairs by hand, which is where the Excel-list method takes over.

Method 3: Manual, One File at a Time

For a small batch, ten files or fewer, the low-tech method is often fastest: click a file, press F2, type its name, press Enter, repeat. On Windows and Mac alike this needs no tools and no setup. Even here it helps to work from a written list rather than your memory, ticking off each file as you go, so you never skip one or accidentally reuse a name you already assigned to an earlier file. It stops being reasonable the moment the batch grows or you'd have to open each file to know what to call it, which is the exact signal that you need one of the other methods.

When You Don't Have the Names Yet (They're Inside the Files)

The methods above all assume you know the right names, they're in a list or in your head. Often that isn't true. You have a folder of scans named Scan0043.pdf, and the only way to know each one's correct name is to open it and read it: this is the Acme invoice from November, that's the Smith contract. No mapping list exists yet, and no script can build one, because the names live inside the documents.

That's content-aware renaming: OCR and AI read each file, extract the identifying details, and generate the distinct name for you, exactly the mapping you'd otherwise have to create by hand. It's a fundamentally different tool from a rename script, because the script manipulates names and the content-aware tool reads documents. If the right name for each file depends on what the file contains rather than a list you already hold, see the bulk rename software overview for that approach.

So the deciding question is simply: do you already know the names? If yes, use a mapping or a script. If the names are locked inside the files, you need something that can read them.

Frequently Asked Questions

How do I give each file a completely different name at once?

Use a mapping: pair each old filename with its new name in a spreadsheet or a PowerShell hashtable, then rename each file to its match. This is different from sequential numbering, which applies one base name plus a counter to every file.

What's the difference between this and sequential numbering?

Sequential numbering applies one pattern (Photo_001, Photo_002) to every file. Renaming with different names means each file gets its own distinct, meaningful name, which requires a mapping list rather than a single rule.

How do I rename files from a list of names?

Put old and new names in two spreadsheet columns and use a mapping method to apply them. The full step-by-step is on the rename-files-from-an-Excel-list guide; a short PowerShell hashtable works for small lists.

What if I don't have the names, only the files?

Then the names have to come from inside the files. A rename script can't read a document's contents, so you'd use content-aware renaming, which uses OCR and AI to read each file and generate its distinct name.

Can I do this without any tools or scripting?

For a small batch, yes, select a file, press F2, type its name, and repeat. It's only practical up to roughly ten files or until you'd need to open each file to know what to call it.

How do I build the old-to-new mapping in the first place?

List the current filenames in one column, the quickest way is to copy them straight from the folder or export a directory listing, then type each new name beside its match in the next column. Keep one row per file and no blank rows, so every old name lines up with exactly one new name. Once the two columns agree in count and contain no duplicate new names, the list is ready to apply.

How do I make sure two files don't end up with the same name?

Before applying any mapping, check the new-name column for duplicates. If two rows resolve to the same name, the rename either overwrites one file or fails partway, leaving the batch half-done. Sort the list by the new name, remove or disambiguate any repeats, and only then apply. A dry run with PowerShell's -WhatIf, or a preview in your rename tool, catches collisions before they touch a single file.