Feature · Organise

Bulk rename with a live preview

Rename hundreds of files at once: find/replace or regex, counters, case, crop, affixes, EXIF and audio-tag tokens, saved recipes — previewed first, one undo.

Default shortcut: Shift+F2 · F2 Updated 16 August 2026 View as Markdown

cwdio's Rename multiple panel over a folder of twelve camera photos: Find is DSC_0, Replace with is Iceland-, and the table below lists every old name beside the new one it will get, from DSC_0148.jpg to Iceland-148.jpg.
Type the rule, read the result. Every new name is on screen — with conflicts and invalid names flagged — before the Rename button does anything, and one Ctrl+Z puts it all back.

Select the files, press Shift+F2, describe the change once, and watch every new name appear in a table beside the old one. Nothing is renamed until you apply, conflicting rows are flagged and skipped, and the entire batch undoes with one Ctrl+Z.

What it does

  • Find and replace, or regex. Literal or regular-expression find with capture groups, optional case-insensitivity, applied to the stem, the extension or the full name.
  • Counters. {n}, {nn}, {nnn} with a configurable start and step, sequenced by selection order, name, date modified or date taken.
  • Case, crop, affix. Upper, lower, Title Case or Sentence case (Unicode-aware, so Cyrillic re-cases correctly); remove N characters from the start or end; add a prefix and a suffix. Applied in a fixed order — replace, re-case, trim, wrap — so one recipe can do all four.
  • Metadata tokens. Dates from the file ({date}, {time}, {YYYY}, {MM}, {DD}, {HH}, {mm}, {ss}, {created}), from a photo’s EXIF ({taken} and parts), from audio tags ({title}, {artist}, {album}, {track}, {year}, {genre}), plus {parent} for the folder name. An unavailable value stays literal, so you can see it did not resolve.
  • Live validation. Windows-invalid characters, reserved names and collisions are flagged per row; checkboxes exclude rows.
  • Saved recipes. Save the complete configuration — find/replace, flags, scope, case, counter, crop, affix and numbering order — as a chip and re-apply it in one click later.
  • AI suggestions. With an AI provider configured, a Suggest names row with an instruction box fills the same table with proposed names and a confidence chip each; they apply through the same preview and undo.
  • One undo. Apply records a single undo entry; Ctrl+Z reverses every rename, including swaps and cycles.

How to use it

  1. Select the files (or use flat view to gather them from subfolders) and press Shift+F2.
  2. Type what to find and what to replace it with — or leave Find empty and pick a case, a crop or an affix. Watch the New column update as you type.
  3. Add a counter — {nnn} — and choose its order; add {taken} for photos or {artist} - {title} for music.
  4. Check the table for red rows, untick anything you want left alone, and Apply. If it was wrong, Ctrl+Z.
  5. Doing this every week? Save recipe.

A single file renames in place with F2 — the row becomes an editor, the stem is pre-selected, and Esc cancels.

How the tokens are read

EXIF dates and camera fields come from a JPEG’s APP1 block, audio tags from the head of the file (ID3v2, FLAC and Ogg Vorbis comments, MP4 ilst atoms), all read through the same provider that lists the file — so the tokens work for files inside an archive or on an SFTP server too. Values are fetched once when the studio opens.

What it deliberately does not do

  • It never applies a row it cannot validate. Conflicts and invalid names are shown, not guessed around.
  • ID3v1 (tail) tags, an MP4 whose metadata is at the end of the file, and TIFF/RAW/HEIC EXIF are not read yet; those tokens stay literal for such files.
  • Recipes are labelled by their content (find → replace, title · +v_…), not by a name you give them.

Questions

Can I rename photos by the date they were taken?

Yes. The {taken} token, and its parts {takenYYYY}, {takenMM}, {takenDD} and {takentime}, come from the JPEG's EXIF date; {date}, {time} and {YYYY}…{ss} use the file's modified time and {created} its creation time. A counter such as {nnn} can be numbered by date taken, so “number these holiday photos 001, 002… in the order they were shot” is one recipe.

Can it read music tags?

Yes. {title}, {artist}, {album}, {track}, {year} and {genre} are read from MP3 (ID3v2), FLAC and Ogg/Opus (Vorbis comments) and MP4/M4A (iTunes atoms), each value sanitised for a file name — AC/DC becomes AC_DC. {parent} inserts the file's own folder name, so a flat-view selection spanning albums can prefix each track with its album.

What if two files would end up with the same name?

The preview flags conflicting and invalid rows (Windows-illegal characters, reserved names) before anything happens, and they are never applied. A name vacated by the plan itself is not a conflict, so renaming 1→2 while 2→3 works, and a swap or a cycle (a↔b) is carried out through a temporary name and rolled back as a unit if a step fails.

Is it undoable?

The whole batch is one undo entry: Ctrl+Z restores every original name, Ctrl+Y re-applies. Rows you untick are excluded from both.