Open source · macOS, Windows, Linux

Bulk file renaming, with a preview you can trust.

RenForge is a preview-first bulk rename utility. Filter your files, chain rename steps (regex, case, numbering, photo dates), see every change before it happens, and apply with confidence — with one-click undo so you can always step back.

Always previews first Deterministic rules One-click undo .csv
renforge · Preview mode
IMG_2023-07-01 (copy).png
→
IMG_2023-07-01.png
invoice_final_FINAL_v7.pdf
→
invoice_final_v7.pdf
report (draft) 001.txt
→
report_001.txt
music - track 09.wav
→
music_track_09.wav
Dry run · conflicts flagged · undo CSV ready
Features

Built for cautious power users.

No "magic AI" guessing what you meant. Just clear rules, complete previews, and loud warnings when something looks off.

Preview-first pipeline

Stack rename steps and review the final result before anything touches the disk. If it looks wrong, nothing is applied.

Filters that make sense

Contains, starts with, ends with, extension, or regex — combined with Match ALL (AND) or Match ANY (OR), plus a case-sensitive toggle.

Safety checks

Invalid characters, duplicate targets, and "file already exists" issues are flagged before you hit Apply. Swaps, case-only renames and frame shifts are handled safely, and nothing is ever overwritten.

Fast on big folders

A scrolling preview and background scanning keep RenForge smooth with tens of thousands of files. Sort by name, date or size, and tick or untick any file.

One-click undo

Save an undo log when you apply, then press Undo… any time later to restore the original names. Files that moved or changed since are reported, not guessed at.

Deterministic by design

Same inputs produce the same outputs, every time. RenForge won't get creative when you just want consistency.

A full rename toolbox

Replace, remove, prepend, append, change extension, regex replace, case conversion (snake_case, Title Case…), clean-up, and numbering. Reorder or switch off steps, and save setups as presets.

Made for photographers

Name files from the EXIF capture date, camera, lens or ISO — {date:YYYY-MM-DD}_{n:3}. RAW + XMP + JPG companions are renamed together, all or none.

Renders & image sequences

Shift frame numbers — shot.0001.exr → shot.1001.exr — even when each file takes the name of the next. Chains are applied safely, and undo restores them.

Quick start

Up and running in under a minute.

Grab a prebuilt build from GitHub Releases, or build from source with Go. RenForge runs natively on macOS (Apple Silicon and Intel), Windows, and Linux.

# Apple Silicon (M1 or newer); use renforge-macos-intel.zip on Intel Macs
$ curl -LO https://github.com/blackarck/renforge/releases/download/latest/renforge-macos-silicon.zip
$ unzip renforge-macos-silicon.zip
$ open renforge.app
# Only if macOS says the app is from an unidentified developer:
$ xattr -dr com.apple.quarantine renforge.app
# Download and unpack the Linux (x86-64) build
$ curl -LO https://github.com/blackarck/renforge/releases/download/latest/renforge-linux-amd64.tar.xz
$ mkdir renforge && tar -xJf renforge-linux-amd64.tar.xz -C renforge
$ ./renforge/usr/local/bin/renforge
# Download the Windows (x64) build and run it
PS> Invoke-WebRequest -Uri https://github.com/blackarck/renforge/releases/download/latest/renforge-windows-amd64.exe -OutFile renforge.exe
PS> .\renforge.exe
# If SmartScreen warns: More info → Run anyway (Windows builds are not code-signed yet)
# Requires a recent Go (see go.mod) and the Fyne dependencies
$ git clone https://github.com/blackarck/renforge.git
$ cd renforge
$ go run .
# Or build a packaged app with icon: go install fyne.io/tools/cmd/fyne@latest && fyne package -os darwin

Your first rename, step by step →  ·  Build instructions →

What you get

A single, self-contained desktop app. No services running in the background, no telemetry, no account needed.

  • Cross-platform. Native builds for macOS (Apple Silicon and Intel), Windows, and Linux, with built-in help (press F1).
  • Source on GitHub. Read the code, file issues, send PRs. Free for non-commercial use; a commercial license is available.
  • Built with Go + Fyne. Lightweight, fast, and easy to build from source.
  • Offline-first. No network calls. Photo metadata is only read, never changed, and your files stay on your machine.
Screenshots

A look inside RenForge.

Click any image to see it full-size.

Preview pipeline

Chain rename steps; the changed part of every new name is highlighted.

Filters

Combine contains, starts with, extension and regex rules with AND / OR.

Safety checks

Invalid names, duplicates and taken names are counted and flagged before you apply.

Confirm & apply

A summary and a confirmation first. Dry Run is on by default, and every rename can be undone.

How it works

Six steps, zero surprises.

RenForge follows one principle: preview first, rename second.

1

Select a folder

Pick a folder, or drag one onto the window. Subfolders are only included if you tick Include subfolders — fewer accidents.

2

Add filters

Narrow the file list with contains / starts / ends / extension / regex rules. Combine with AND or OR.

3

Build a rename pipeline

Stack steps: replace, remove, regex, prepend, append, change extension or case, clean up, number files, or build names from photo dates. Reorder them, or load a preset.

4

Review conflicts

Duplicates, invalid characters, and existing-target collisions are highlighted before Apply.

5

Dry run, then apply

Stay in Dry Run while you tune the pipeline. Switch to Apply only when the preview looks right.

6

Keep an undo log

Optional, but recommended. Press Undo… later and RenForge restores the original names from the log.

Pro tip: if anything in the preview makes you pause, stay in Dry Run until the result is boringly correct. Boring is the goal. Every step above has examples in the documentation.
FAQ

Common questions.

What makes RenForge "safe"?

It's preview-first and deterministic. Before applying, RenForge runs checks for invalid names, duplicate targets, and existing files. You see the full plan, then you decide.

Does it rename files recursively?

Only if you ask it to. Tick Include subfolders to scan inside subfolders; it is off by default so a first run stays small and predictable. Numbering can restart in each folder.

Can I undo changes?

Yes. Keep Create undo log ticked when you apply, then click Undo… in RenForge and pick the log (the latest is offered automatically). Files that were moved or deleted since are skipped and reported.

Where do I download binaries?

The Download button at the top opens the latest build on GitHub Releases: renforge-macos-silicon.zip, renforge-macos-intel.zip, renforge-windows-amd64.exe and renforge-linux-amd64.tar.xz.

Is RenForge free? What's the license?

RenForge is free for non-commercial use under CC BY-NC 4.0, and the source is on GitHub. Commercial use requires a paid license — contact the author via the repository.

Can it rename photos by the date they were taken?

Yes. Use Rename from template with tokens such as {date:YYYYMMDD_HHmmss}, {camera} and {n:3}. The date comes from the photo's EXIF data (JPEG and TIFF-based RAW such as CR2, NEF, DNG, ARW); other files use their modified date. EXIF is only read, never changed.

Does it keep RAW, XMP and JPG files together?

Yes, if you tick Also rename related files. Files with the same base name (or Adobe-style IMG_001.CR2.xmp sidecars) are renamed together, and a group is renamed all or nothing.

Are the downloads signed?

macOS builds are being signed and notarized by Apple. Windows builds are not code-signed yet, so SmartScreen may warn: choose More info → Run anyway.

How do I report a bug or ask for a feature?

Open an issue on GitHub and pick the Bug report or Feature request form. See Project & support for what to include, or the documentation if you are not sure how something works.

Does it send any data anywhere?

No. RenForge is a local desktop app with no telemetry, no analytics, and no network calls. Your filenames and photos stay on your machine.

Project & support

Found a bug? Want to help?

RenForge lives on GitHub. Bug reports, ideas and pull requests are all welcome, and the more concrete your example file names are, the faster things move.

github.com/blackarck/renforge Source code, releases, issues and pull requests · Go + Fyne

Report a bug

Open an issue and tell us:

  • your operating system and which build you downloaded
  • a few example file names, your filters and rename steps
  • what you expected and what happened
  • a screenshot, or the undo log (remove private names first)
Open a bug report

Request a feature

Describe the problem you are trying to solve first (for example "number photos separately in each folder"), then your idea. Before → after file names make requests easy to act on.

Request a feature

Contribute code

  • Fork the repository and create a branch
  • Keep the change small and focused; open an issue first for big ideas
  • Add tests (the rename engine in internal/ has no UI code)
  • Run gofmt, go vet ./..., go test ./...
  • Update the docs, then open a pull request
Read the contributing guide

Build it yourself

You need Go and a C compiler (for the Fyne UI toolkit).

git clone https://github.com/blackarck/renforge.git
cd renforge
go run .          # run
go test ./...     # test
Full build instructions
Other ways to help: star the repository, share RenForge with someone who renames a lot of files, improve the documentation, or send example folders (with private names removed) that RenForge handles badly.

Ready to rename without the regret?

Download RenForge, run a dry run on a test folder, and see the preview-first workflow for yourself.

Download latest release View on GitHub