v1.0.0 · Open source · Local-first

Organize photos
by their original date.

Foldnize is a local-first photo organizer that renames photos by EXIF date, organizes iPhone photos and videos by metadata date, and sorts media into Year/Month folders. Preview every change with dry-run. Nothing is uploaded.

Features

Rename and sort media
from its real metadata.

Three renaming modes

Add a date prefix, fully replace with a timestamp, or use a custom name + timestamp combo. Switch modes anytime.

New

Sort into Year/Month folders

Optionally move each renamed file into a YYYY/MM/ subfolder based on its date. Existing folders are reused; missing ones are created on the fly.

Dry-run preview

See exactly what would change before a single byte moves on disk. Toggle dry-run on — it's the safe default.

Real metadata

Reads DateTimeOriginal, CreateDate, and QuickTime tags via exiftool and ffprobe. No guessing from filesystem dates.

100% local

Your files never leave your machine. No uploads, no telemetry, no accounts. Just Node and Electron talking to your disk.

Smart scanning

Walks every nested folder by default, or stays on the surface with one toggle. Scans for .jpeg, .jpg, .mov, .mp3, .mp4, and .png files. Already-formatted files and macOS junk (._*) are skipped automatically.

Docs

Use the desktop app
or run the CLI.

  1. 1

    Download the app

    Install Foldnize for macOS, Windows, or Linux from the latest GitHub release.

  2. 2

    Pick a folder

    Select the folder containing the photos, videos, or audio files you want to organize.

  3. 3

    Preview, then organize

    Choose a renaming mode, keep Dry run enabled for the first pass, review the result, and then apply it.

~/Projects · zsh
# Preview: rename photos by EXIF date
$ npx foldnize --root=./photos --mode=replace --dry-run

# Sort media into Year/Month folders
$ npx foldnize --root=./photos --mode=prefix --year-month

Install metadata readers

Foldnize uses exiftool to read photo, audio, and video metadata. Install ffmpeg as an additional fallback for MOV and MP4 creation dates.

Homebrew
$ brew install exiftool ffmpeg

Use the TypeScript library

Run npm install foldnize to organize media from a Node.js script, CI job, or another desktop app. The package ships TypeScript declarations and has zero runtime dependencies.

organize.js
import { organizeFolder, Mode } from "foldnize";

organizeFolder({
  root: "/Users/you/Pictures/2023",
  mode: Mode.CUSTOM,             // PREFIX | REPLACE | CUSTOM
  customName: "vacation",        // required when mode is "custom"
  organizeIntoYearMonth: true,   // move into <root>/YYYY/MM/
  scanSubfolders: true,          // recurse (default); false = top-level only
  dryRun: true,
  onLog: ({ message }) => console.log(message),
});
Read the full documentation