How to organise a family photo library that outlives every app
Folders by year and month, filenames that sort anywhere, and metadata stored inside the file using standards every serious tool already reads.
The folder layout
Use time, and only time, for folders. A photo can sit in just one folder, but it can carry many tags. So the folder answers "when", and metadata answers "who", "where" and "what".
Photos/
2026/
2026-11/
2026-11-04_Family-weekend-Ardennes/ (optional event folder)
20261104_143012_IMG_0412.heic
20261104_143012_IMG_0412.heic.xmp (only if the format can't embed)
_Inbox/ (unsorted imports)
_Unknown-date/ (no usable date)- Year / Year-Month. Months keep folders at roughly 100-500 files, which every file browser, NAS and TV handles well.
- Event folders only for real events (trip, wedding). Never nest by person or place.
- Filename:
YYYYMMDD_HHMMSS_original-name.ext. It sorts chronologically on every OS and keeps the camera's name for traceability. - Portable names: no
: / \ ? * ", no names that differ only by case, NFC-normalised accents, paths under 255 characters,-instead of spaces. - Never edit originals. Duplicates are found by content hash (SHA-256), not by filename.
Metadata: the standards already exist
Three layers work together. EXIF holds camera facts (time, GPS). XMP is the extensible container that can live inside the file or beside it. IPTC Photo Metadata defines the descriptive fields, stored as XMP. The Metadata Working Group guidelines make apps agree on where each value goes, so Lightroom, digiKam, Synology, Immich and PhotoPrism round-trip them.
| Need | Field |
|---|---|
| Capture date | EXIF:DateTimeOriginal + OffsetTimeOriginal (store the timezone) |
| GPS | EXIF:GPSLatitude / GPSLongitude |
| Place names | Iptc4xmpExt:LocationShown (sublocation, city, region, country) |
| Description | dc:description (and IPTC:Caption-Abstract) |
| Title, keywords | dc:title, dc:subject |
| People shown | Iptc4xmpExt:PersonInImage |
| People with face position | MWG Regions: mwg-rs:RegionList |
| Favourite / rating | xmp:Rating (-1 rejected, 0-5) |
ExifTool is the cross-platform tool that reads and writes all of the above, in bulk.
Embedded or sidecar?
| Embedded in the file | Sidecar photo.jpg.xmp | |
|---|---|---|
| Travels with the photo | Always | Only if you move both files |
| Original stays untouched | No, the file is rewritten | Yes |
| Needs write access to photos | Yes | Only to the folder |
| Works for RAW and video | Mostly no | Yes |
| Read-only archive or cloud access | Not possible | Possible |
Neither is wrong. Embedding is the most durable, sidecars are the safest. familyTV works with sidecars.
Name sidecars with the full filename plus .xmp (IMG_1.jpg.xmp). Then a RAW+JPEG pair never shares one sidecar by accident, and it is what familyTV already does.
Pitfalls worth knowing
- Apple Photos and Google Photos keep face names in their own database and do not write them back to your files.
- Always store the UTC offset with the time. Phones that travel otherwise sort photos in the wrong order.
- Keep a rebuildable search index (SQLite or similar). Files stay the source of truth.