Clean names. Clear files.
Nomen is a privacy-first batch file renamer that runs entirely in the browser. Files are never uploaded, original binaries remain untouched by default, every filename is previewed, and conflicts are detected before export.
- Add individual files, multiple files, or folders
- Composable rename-rule pipeline with reordering and enable/disable controls
- Cleanup, case conversion, regex replacement, prefix/suffix, numbering, dates, transliteration, extension control, length limits, and token patterns
- Correct compound-extension handling such as
.tar.gz,.min.js, and.d.ts - Live difference preview, filters, manual overrides, undo/redo, and conflict resolution
- ZIP, renamed copies, CSV, JSON, PowerShell, Bash, and copied command exports
- Local presets, English/Vietnamese UI, dark/light themes, responsive mobile workflow
- Installable offline PWA with no backend, account, database, or tracking
npm install
npm run devOpen the local Vite URL. For a production check:
npm run typecheck
npm test
npm run buildThe app workspace uses the #/rename route so it remains available after a browser refresh on Vercel, Netlify, Cloudflare Pages, and static GitHub Pages deployments. Selected File objects intentionally remain memory-only: after a full refresh, the workspace route is preserved but files must be selected again. This prevents Nomen from silently storing users’ file contents.
- Fixed preview rows being hidden beneath the old sticky table header.
- Reset stale preview filters whenever files are added or a batch is cleared.
- Added a real
#/renameworkspace route that survives refresh and browser navigation. - Redesigned the rules panel, preview rows, filters, checkboxes, typography, and export panel for better readability.
- Added local image thumbnails and clearer original → renamed comparisons.
- Collapsed secondary preset rules by default to reduce visual overload.
- Added route and preview-row regression coverage to Playwright tests.
The framework-independent engine lives in src/lib/engine.ts and receives plain file metadata, a rule array, compatibility target, and optional overrides. UI state is managed by Zustand. File binaries are only retained in memory for exports initiated by the user.
Nomen has no upload endpoint and no server runtime. It does not inspect file contents unless a future opt-in metadata rule requires it. The service worker caches only application assets; it never caches selected files.
- Build command:
npm run build - Output directory:
dist
vite.config.ts uses a relative base, so the generated dist folder can be deployed under a repository subpath.
Downloading renamed copies and ZIP files works broadly. Directly renaming files inside a selected folder requires the File System Access API, explicit permission, and a browser that implements it. The current interface labels that path as browser-dependent and provides safe exports instead of claiming universal support.
MIT