About TidyBatch
A command-line tool that renames files in bulk, shows you the result first, and can undo it. You are letting it touch your files, so here are the facts, and a way to check them yourself.
The facts
- What it is: a command-line tool for bulk renaming. It has no graphical interface.
- Current version: 1.1.4 (
tidybatch --versionprintstidybatch 1.1.4). - License: MIT. The free version (TidyBatch Core) is open source on GitHub.
- Who makes it: the project is published under the name "TidyBatch". Most of the code was written with an AI coding agent. What protects your files (two-phase moves, collision checks, undo) is covered by a test suite that, according to the README, runs on Linux, macOS and Windows on every push.
- Dependencies: none. It is one Python file and imports only modules from Python's standard library (
argparse,json,os,re,shutil,struct,sys,unicodedata,dataclasses,datetime,pathlib,typing). It needs Python 3.9 or newer. - Runs locally, no account: you don't sign in to use the free version. The file imports no networking module, so you can read it and confirm that for yourself.
- There is a paid version: TidyBatch Pro (9 €, one-time) adds
organizeanddedupe. Renaming and undo are in the free version. The comparison table in the README lists what each version does.
What it can touch
- It changes nothing until you add
--apply. Without it you get a preview. - It works in the folder you give it. Files are renamed in place. The project's security policy treats "a move outside the folder you gave it" as a security bug.
- It writes a journal inside that folder (
.tidybatch/journal-*.json), written before any file moves. That journal is whattidybatch undo <folder>reads.
Check it yourself in one minute
Use a throwaway folder, not your photos. These are the commands, run for this page, with their real output.
Version:
$ python3 tidybatch.py --version
tidybatch 1.1.4
Help. The last lines state what is in the paid version:
$ python3 tidybatch.py --help
usage: tidybatch [-h] [--version] {rename,undo,organize,dedupe} ...
Bulk rename files safely. Dry run by default; every change can be undone.
positional arguments:
{rename,undo,organize,dedupe}
rename rename files from a template
undo revert the last applied run in a folder
organize [Pro] sort files into folders
dedupe [Pro] move exact duplicates aside
options:
-h, --help show this help message and exit
--version show program's version number and exit
Need to sort folders or remove duplicates? TidyBatch Pro adds `organize` and `dedupe`:
https://whop.com/tidybatch/bulk-file-renamer/?utm_source=cli&utm_campaign=tidybatch
A preview on an empty temporary folder (nothing to rename, nothing changed):
$ mktemp -d
/tmp/tmp.OuAd9WRlGS
$ python3 tidybatch.py rename /tmp/tmp.OuAd9WRlGS --slug --lower
Nothing to do: every file already matches.
To see a real preview, put a few copies of unimportant files in a temporary folder and run the same rename command on it. Then read how undo works or how to bulk rename files safely.
Reporting problems
Bugs: GitHub issues, with a folder layout that reproduces it. Anything that could lose or overwrite a file: report it privately, as described in SECURITY.md.