PhotoVideoBackup: SSD Transfer

PhotoVideoBackup: SSD Transfer

Incremental backup / checksum

0 ratings
Free
In-App Purchases

Rating summary

Details

Released
April 13, 2026
Updated
September 22, 2026

Features

PhotoVideoBackup: SSD Transfer screenshot #1 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #2 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #3 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #4 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #5 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #6 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #7 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #8 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #9 for iPhone
PhotoVideoBackup: SSD Transfer screenshot #10 for iPhone
🖼️Get Icon
Icons↘︎

About

PhotoVideoBackup transfers your photos and videos from your iPhone directly to an external SSD over USB-C fast, private, and offline. No cloud. No subscription. No middleman. WHY PHOTOVIDEOBACKUP? Most backup solutions send your files to a cloud server you don't control. PhotoVideoBackup sends them straight to your drive. Your memories stay yours. HOW IT WORKS 1. Plug in your USB-C SSD 2. Select the destination folder once 3. Tap Backup — done Access is preserved across launches via secure bookmarks. You never have to pick the folder again. FREE FEATURES - Back up your iPhone Photos Library (photos & videos) - Single SSD destination - Real-time progress with file-by-file status - Full backup report: copied, skipped, failed, duration - History of all past backup sessions PRO FEATURES — one-time $4.99 - Add external sources: SD cards, USB drives, Insta360, DJI, Blackmagic cameras, and more - Mirror backup to a second SSD simultaneously - Perfect for photographers and videographers who shoot on multiple devices No subscription. Pay once. Use forever. PRIVACY PhotoVideoBackup does not collect, transmit, or store any of your data. Everything stays on your device and your drive.
Show more

What's New in PhotoVideoBackup

2.5.1

September 22, 2026

| Version | Build | Date | Type | Description | |---------|-------|------------|---------|-------------| | 2.5.1 | 47 | 2026-09-19 | Bug fix | **Three fixes around the "Max files per session" limit — the engine limit logic itself was never wrong.** **(1) The Settings field could not be validated.** *Max files per session* used a number-pad field with no way to dismiss the keyboard, so a typed value was never committed. A keyboard **Done** button now confirms it; an empty field means **Unlimited**. **(2) "Unlimited" could turn into a stray number after changing the phone's language.** The field was a locale-formatted number bound straight to storage; because the app's language override drives the on-screen locale, a system-language change could re-parse the field into a wrong value (a limit of "Unlimited" was seen becoming `6`), and a stored `0` never showed the "Unlimited" placeholder. The field is now a plain text buffer committed through a locale-independent parser — empty/zero/non-numeric all mean Unlimited — so language changes can't corrupt it. **(3) A partial backup was always reported as "file limit reached", even when it wasn't.** A backup stops early for three different reasons — the file limit, a destination that disconnected mid-run, or the user tapping Stop — but the completion **notification** and the **Report** hard-coded the "file limit reached" wording for all three. So a run that stopped because the SSD/NAS disconnected (e.g. at file 149, with the limit set to Unlimited) was mislabelled as a limit. Each cause now shows its own message: a disconnection reads **"destination disconnected — reconnect and run again"**, a user stop reads **"stopped — run again to continue"**, and only a real limit says "file limit reached". Implemented with a persisted `PartialReason` on `BackupSession` (lightweight migration; old sessions read as before), classified by a pure `DashboardViewModel.partialReason(...)`. Non-regression tests: `FileLimitFieldTests` (locale-independent parsing — grouping separators like `1,000`/`1 000`/`1.000` all parse to `1000`), `PartialReasonTests` (a disconnection/cancel is never classified as a file limit), and `BackupFromSDCardTests.test_fileLimit_skippedFilesDoNotCountAgainstLimit` (already-present files don't consume the limit budget). See also the new CLAUDE.md note on never binding a locale-formatted `TextField` directly to `@AppStorage`. |

More
1

Subscriptions & In-App Purchases

$1.99

PhotoVideoBackup Pro

External sources + 2nd SSD mirror. One-time purchase.

Developer apps