If you run a media server, you know the pain. Thousands of files with inconsistent naming. No metadata. Artwork missing or wrong. Folders nested seven levels deep because someone (you) organized by genre, year, mood, and the year the album was reissued. The Plex or Jellyfin scanner (the part of the media server that walks your filesystem and matches files to a metadata database) chokes on it and you spend your Saturday renaming files by hand.
I ran into this with a folder of about 8,000 music files that I had accumulated over fifteen years of ripping CDs, downloading from Bandcamp, and pulling from various “I have a backup of my library somewhere” hard drives. The names were a mess. The metadata was worse. I tried three of the popular media organizers (MusicBrainz Picard, beets, and a paid tool I will not name because the trial experience was insulting) before I found TinyMediaManager. It is the only one that got me to a clean library in under a day.
What TinyMediaManager actually does
TinyMediaManager is a desktop application written in Java that does three things well. It scans a folder of media files, matches them against an online metadata database, and renames the files into a clean folder structure that Plex or Jellyfin will recognize. The matching step uses The Movie Database (TMDb) for movies and TV, and TheTVDB for older shows, and MusicBrainz for music.
The interface looks like it was designed in 2014, which is the last time the project had a major UI refresh. Do not let that put you off. The functionality is solid, the scrapers (the plugins that pull metadata from online databases) are well-maintained, and the renamer is the best in the category. I have used it on three separate media libraries now and it has not lost a file. The application is also available as a Flatpak (a universal Linux package format that bundles all dependencies into a single sandboxed install) and a Snap (a similar universal package format maintained by Canonical) for the Linux users who do not want to deal with the JAR file directly.
The application runs on Windows, macOS, and Linux. The Linux version is a single JAR file (a Java archive that contains the entire application in one self-contained file) that you launch with java -jar tinymediamanager.jar. There is no installer, no daemon, no service. You open it, point it at a folder, and close it when you are done.
How I set it up
The install path I landed on is a small bash script that wraps TinyMediaManager in a way that handles the Java version and the config directory. I run it from a Linux server that hosts my Jellyfin instance (an open-source media server that streams video and music to any device on your network), and the script puts the renamed files directly into the Jellyfin library structure.
I started with a dry run. TinyMediaManager has a “rename preview” mode that shows you exactly what the new file structure will look like before you commit. I ran it on the first 200 files, eyeballed the result, and committed. Then I ran it on the full library. The matching step took about forty minutes for 8,000 files because MusicBrainz is a strict matcher. The rename step took about ten seconds.
The scrapers occasionally get the wrong album. For music, the fix is to drag the file to the right MusicBrainz release. For movies, the fix is to type the IMDb ID by hand. I had to do this for about 3% of my files. The other 97% matched on the first try.
What I gave up
The paid media organizers I tried have features that TinyMediaManager does not. Cloud sync is the obvious one. The paid tools will sync your library to a hosted backup so you can re-download the metadata if you lose the local copy. TinyMediaManager does not have this. If you care about cloud sync, this is a hard stop.
A few of the polished UI features are also gone. The paid tools have a web UI that you can open from a phone. TinyMediaManager is desktop-only. The paid tools have a Discord bot that lets you trigger a re-scan from a chat message. TinyMediaManager has nothing like that.
Voice control is also gone. The paid tools have Alexa and Google Home integration for “play the movie with Bruce Willis and the hair.” TinyMediaManager is a file organizer, not a player. The integration story is that you point your media server (Plex, Jellyfin, Emby) at the cleaned-up folder, and the media server handles playback from there.
What I would tell past me
If I could send a message back to the version of me that started renaming files by hand, I would say three things.
- Start with a dry run on 50 files, not the full library. The preview shows you exactly what the renamer will do, and you can fix the scraper settings before you commit to a 40-minute full-library scan.
- Use the MusicBrainz Picard style of matching for music. TinyMediaManager will match against MusicBrainz if you set the scraper priority correctly, and the matches are ten times more accurate than the built-in acoustic fingerprint matcher.
- Commit the rename as a single git operation. TinyMediaManager can write a shell script that does the rename instead of doing the rename directly. Run the shell script under git, and you have a rollback path if the rename goes wrong.
- Keep the original folder as a read-only backup for a month. Rename to a new folder, not in place. After a month of using the new library without issues, archive the original. This sounds paranoid until the day the scraper matches the wrong album and you cannot find the file you wanted.
Trade-offs
TinyMediaManager is not free in time. The first scan of a large library takes about forty minutes per 8,000 files. The metadata cleanup for files that did not match on the first try takes about a minute per file. Across an 8,000-file library with a 3% miss rate, that is about four hours of one-time work.
In our case, the math is simple. A paid media organizer costs $40 to $60 per year. TinyMediaManager is free, open source, and has been maintained continuously since 2012. The break-even point is one year of paid subscription, and after that the savings are real.
The migration from a hand-named library to a TinyMediaManager-renamed library took one Saturday afternoon for the full 8,000 files. The hardest part was teaching the scraper to recognize my naming convention for live recordings. The easiest part was the actual rename, which the application does in a single pass.
If you have a media library with more than a few hundred files and you are tired of the Plex scanner choking on inconsistent naming, TinyMediaManager is a clear win. If your library is already clean and your media server is happy, there is no reason to switch. If you need cloud sync or a mobile UI as a first-class feature, look at the paid tools and budget for the subscription.
Bottom line
TinyMediaManager is the best open-source media organizer I have used, and I have used all of them. The UI is dated, the cloud sync is missing, and the mobile story is nonexistent. For a one-time cleanup of a large library, none of that matters. The renamer is the best in the category, the scrapers are accurate, and the project has been maintained for over a decade. I am not going back to renaming files by hand.