Music File Renamer

Paste exported music tags, choose a path template, then preview exactly how files would be renamed or moved without touching your filesystem.

Try:
Rename plan

About this tool

Music File Renamer turns exported audio metadata into a rename and folder-move plan. Paste rows from a tag editor, ffprobe, exiftool, or a music-library script; choose a pattern such as {artist}/{album}/{track} {title}; then review every proposed current -> new path before doing anything on disk.

The tool is preview-only. It does not read folders, upload tracks, rewrite tags, or move files. That makes it safe for planning a cleanup, sharing a proposed library layout, or generating a shell script you can inspect before running locally.

Input formats

CSV and TSV inputs need a header row. JSON inputs can be an array of objects, a single object, or a wrapper such as { "tracks": [...] } or an ffprobe-style { "format": { "filename": "...", "tags": { ... } } } object. Key/value inputs accept blank-line-separated blocks such as filename=track01.mp3 and TAG:artist=Tame Impala.

Common field names are normalized: file, filename, path, and SourceFile all identify the current path; album artist, albumartist, TPE2, and band map to {albumartist}. Unknown columns are still available as tokens after normalizing their names, so an ISRC column can be used as {isrc}.

Worked example

Input:

file,artist,album,track,title
track01.mp3,Tame Impala,Currents,1,Let It Happen
track02.mp3,Tame Impala,Currents,2,Nangs

Pattern:

{artist}/{album}/{track} {title}

Output:

2 tracks, 2 renames, 0 unchanged, 0 collisions, 0 skipped

track01.mp3  ->  Tame Impala/Currents/01 Let It Happen.mp3
track02.mp3  ->  Tame Impala/Currents/02 Nangs.mp3

Pattern tokens and safety options

Use {token} to insert a tag value and {albumartist|artist|Unknown} to try fallbacks from left to right. Slash characters in the pattern create folders. {track} is normalized and zero-padded with the track_padding setting; {year} takes the first four-digit year from date-like fields.

charset=windows is the default because it is safe across Windows, macOS, Linux, NTFS, exFAT, and most sync tools. charset=unix only removes path separators and NUL-like characters. charset=ascii also folds common accented Latin characters before sanitizing. Collisions are detected case-insitively so a plan that would create the same destination twice is flagged before you move anything.

Output formats

table is easiest to review in the browser. list is compact for notes. csv works well for spreadsheets. json is the machine-readable form for scripts. sh emits a conservative /bin/sh plan with mkdir -p and mv -n; review it before running and execute it from the folder that contains the current paths.

Limits and edge cases

FAQ

Can this rename files directly?

No. It intentionally outputs a plan only. Use the sh output if you want a script, review it, and run it yourself in a local shell.

How do I get the tag dump?

Export CSV/TSV from a tag editor, run ffprobe -show_format, run exiftool, or use a music metadata library to write JSON. The tool accepts all of those shapes as pasted text.

What is the difference between count, padding, and track numbers like 3/12?

track_padding controls how {track} is rendered. Values such as 3, 03, and 3/12 all use the first track number and can become 03 with the default two-digit padding.

Why did a file show as a collision?

Two or more records produced the same target path after token replacement, sanitizing, case handling, and extension handling. Change the pattern or include another distinguishing tag such as {disc} or {filename}.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool music-file-renamer "file,artist,album,track,title
track01.mp3,Tame Impala,Currents,1,Let It Happen
track02.mp3,Tame Impala,Currents,2,Nangs"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/music-file-renamer/?tracks=file%2Cartist%2Calbum%2Ctrack%2Ctitle%0Atrack01.mp3%2CTame%20Impala%2CCurrents%2C1%2CLet%20It%20Happen%0Atrack02.mp3%2CTame%20Impala%2CCurrents%2C2%2CNangs&input_format=auto&pattern=%7Bartist%7D%2F%7Balbum%7D%2F%7Btrack%7D%20%7Btitle%7D&base_dir=%2FMusic%2FLibrary&track_padding=2&on_missing=unknown&unknown_text=Unknown&charset=windows&replace_char=_&space_style=keep&case_style=keep&max_component=100&keep_extension=true&format=table

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.