# Nomina **Rename your files, not yourself.** A bulk file renaming tool for people who have better things to do than click through files one by one. Built with Rust and Tauri. Runs on Windows. Yours to keep, no strings attached. [![License: CC0](https://img.shields.io/badge/license-CC0_1.0-blue.svg)](https://creativecommons.org/publicdomain/zero/1.0/) [![Built with Tauri](https://img.shields.io/badge/built_with-Tauri_v2-24C8D8.svg)](https://tauri.app) [![Rust](https://img.shields.io/badge/rust-stable-orange.svg)](https://www.rust-lang.org) [![React](https://img.shields.io/badge/react-19-61DAFB.svg)](https://react.dev) [![Platform: Windows](https://img.shields.io/badge/platform-Windows-0078D6.svg)](#) [![No Telemetry](https://img.shields.io/badge/telemetry-none-green.svg)](#-portable-and-self-contained) [![No Account Required](https://img.shields.io/badge/account_required-no-green.svg)](#)
--- ## ðŸŠī What is this? Nomina is a desktop app that renames files in bulk. You point it at a folder, build a chain of renaming rules, see a live preview of every change, and hit rename when you're ready. That's the whole idea. No subscriptions. No cloud. No accounts. No data harvested. It sits on your computer, it does what you tell it, it belongs to you. The code is public domain - you can copy it, change it, share it, sell it, print it out and wallpaper your bathroom with it. Nobody owns it. --- ## ðŸŒŋ What can it do? Nomina has 18 different rule types that you can stack together in any order, like building blocks. Each rule transforms the filename in some way, and the changes cascade through the pipeline. ### Renaming rules | Rule | What it does | |---|---| | **Replace** | Find and replace text, with optional regex and case sensitivity | | **Regex** | Pattern matching with capture group support | | **Remove** | Strip characters, words, digits, symbols, accents, or regex matches | | **Add** | Insert text at any position - prefix, suffix, or somewhere in the middle. Supports template variables like `{name}`, `{date}`, `{index}` | | **Case** | 13 modes - upper, lower, title, sentence, camelCase, snake_case, kebab-case, and more. Smart title case knows about common exception words | | **Numbering** | Add sequential numbers in decimal, hex, octal, binary, alphabetic, or roman numerals. Per-folder counters, reverse ordering, custom formatting | | **Date** | Insert file dates (created, modified, accessed, EXIF) in various formats | | **Move parts** | Extract text by position, word count, or regex and move it somewhere else | | **Extension** | Change, remove, or normalize file extensions | | **Hash** | Add content-based MD5, SHA1, or SHA256 hashes | | **Folder name** | Pull in the parent folder name (or grandparent, etc.) | | **Transliterate** | Convert unicode to ASCII - turns "cafe" into "cafe", that sort of thing | | **Padding** | Pad numbers with leading zeros for proper sorting | | **Truncate** | Cut filenames down to a maximum length | | **Randomize** | Generate random hex, alphabetic, alphanumeric strings, or UUIDs | | **Swap** | Swap parts of a filename around a delimiter ("Last, First" becomes "First, Last") | | **Sanitize** | Strip illegal characters, normalize unicode, collapse whitespace, replace spaces | | **Text editor** | When all else fails, just type the new names yourself | ### Everything else - **Live preview** - see exactly what every file will be renamed to before anything happens - **Conflict detection** - warns you when two files would end up with the same name - **Undo** - every rename operation is reversible, with persistent history - **Presets** - save your rule pipelines, export them as files, share them with others - **Filters** - narrow down which files get renamed by name pattern, size, type - **Drag and drop** - reorder rules by dragging them around - **Context menus** - right-click files, rules, and sidebar items for quick actions - **Explorer integration** - adds "Edit in Nomina" to your Windows right-click menu, auto-fixes itself if you move the exe - **Keyboard shortcuts** - select all, deselect, the usual stuff --- ## ðŸŒą Portable and self-contained Nomina doesn't install anything. There's no installer. It's a single exe file that you put wherever you want. All data the app creates - settings, presets, undo history, webview cache - lives in a `data` folder right next to the exe. Nothing goes into your registry, AppData, or anywhere else on your system. The only exception is the optional Explorer context menu, which does write to the registry (because that's how Windows works), but there's a button to remove it and then the app has left zero trace. You can put it on a USB stick, move it between computers, delete it by deleting the folder. Your computer before and after is the same computer. --- ## 🍄 Settings Nomina is pretty configurable. Some things you can change: **Look and feel** - dark/light/system theme, accent color, zoom level, compact mode, zebra striping on the file list **Behavior** - auto-select files, confirm before rename, sort order, animations, always-on-top, preview delay **Safety** - automatic backups before renaming, configurable backup location and cleanup schedule, undo history limit **Accessibility** - high contrast mode, reduced motion (auto-detected from your OS), font scaling, enhanced focus indicators, screen reader support, color blind modes (deuteranopia, protanopia, tritanopia), larger touch targets, keyboard-only navigation. Nomina tries to read your OS accessibility preferences on first launch and configure itself accordingly. **Notifications** - toast popups, taskbar flashing, and a little sound effect when a rename finishes --- ## 🔧 For developers If you want to build it yourself or poke around the code. ### Prerequisites - Rust (stable) - Node.js (LTS) - Visual Studio Build Tools (Windows) ### Building ```bash # install frontend dependencies cd ui && npm install # run in development mode cargo tauri dev # run the core library tests cargo test -p nomina-core # build a release binary cargo tauri build --no-bundle ``` The release binary ends up at `target/release/nomina.exe`. ### Project layout ``` nomina/ crates/ nomina-core/ # the rename engine - pure Rust library, no UI dependency nomina/ # Tauri v2 desktop shell, commands, system integration ui/ # React + TypeScript frontend ``` The core library (`nomina-core`) handles all the actual renaming logic - rules, pipeline execution, filters, undo tracking, presets. It doesn't know or care about the UI. The app crate (`nomina`) wraps it in a Tauri window and exposes it as commands. The frontend (`ui`) talks to those commands and renders everything. --- ## ðŸŒŧ License [CC0 1.0 - Public Domain Dedication](https://creativecommons.org/publicdomain/zero/1.0/) No rights reserved. This work is dedicated to the commons. Do whatever you want with it. You don't need permission, and you don't owe anyone anything. The tools we use every day should belong to the people who use them.