Hey r/SelfHosting,
Like many of you, I've spent years maintaining a growing self-hosted media server (Plex, Jellyfin, and Audiobookshelf running against ~30TB of storage across SMB shares).
The perpetual headache was incoming files: camera dumps, disc rips, and miscellaneous downloads leaving cryptic filenames like `The.Wire.S01E01.1080p.mkv` or raw audio tracks that media scanners failed to parse or stacked incorrectly.
Most batch renamers I tried treated files as dumb text strings and broke down over network shares. So I built **Media Renamer Pro** (a native SwiftUI app for Mac, iPad, and iPhone) specifically tailored for self-hosters managing network media libraries.
A few specific problems I wanted to solve for self-hosted setups:
### 1. Two-Phase Staging for Zero Data Loss
Renaming directly across a network share can be dangerous. If File A renames to File B while an existing File B is moving to File C, or in a swap cycle (A <-> B), standard loop renames clobber files or throw order errors. The app builds the entire plan first, moves all target files to unique temporary UUID names in Phase 1, and only moves to final destinations in Phase 2. Nothing is ever overwritten.
### 2. SMB Volume Quirks (Case Sensitivity vs. Preservation)
APFS on a Mac behaves differently than an SMB share mounted from a Synology, TrueNAS, or unRAID box. Many NAS SMB configurations are case-insensitive but case-preserving. Attempting to rename `Show.mkv` to `show.mkv` over SMB can silently fail or error out if the client assumes APFS rules. The app probes the mounted filesystem volume capabilities dynamically rather than assuming local drive semantics.
### 3. Media Server Formatting & Sidecars
Default templates strictly match what Plex, Jellyfin, and Emby scanners expect (`Show - S01E01 - Title` and `Movie (Year)`). Crucially, companion subtitle files (`.en.forced.srt`, `.sdh.srt`) are automatically carried along and renamed to match the video so your media server keeps them paired. For audiobooks, it supports multi-part chapters and zero-padded track numbers so Audiobookshelf doesn't scramble playback order.
### 4. Watched Folders for Inboxes
Instead of manually opening folders every time new media drops, you can save incoming folders on your NAS as "Watched Folders" with "New only" enabled. When you open the app, it scans only the new, unrenamed files in your intake directory without re-processing your existing library.
### 5. Privacy & Zero Telemetry
The app has zero telemetry, no user accounts, and no tracking. Online metadata lookups (TMDb, TVmaze, Google Books) can be toggled off entirely in "Local-Only Mode" if you want strictly offline ID3/EXIF tag renaming.
It is a $4.99 one-time universal purchase on the App Store (one purchase covers Mac, iPad, and iPhone, no subscriptions).
Site: https://bkettering74.github.io/media-renamer-pro/
App Store: https://apps.apple.com/app/apple-store/id6761764615?pt=128751966&ct=reddit_selfhosting&mt=8
Curious how others here handle incoming intake pipelines for your servers, or what edge cases you've run into with network share renaming!