CardRecovery
Carves photos out of a card image whose filesystem is already gone.
Free right now — no account, no card
Preview
1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.
Free while we’re in preview
Get CardRecovery
Carves photos out of a card image whose filesystem is already gone.
The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.
One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.
Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.
- One file — no installer
- Runs on your machine, offline
- Source code published below
Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. At launch, CardRecovery is included in every plan along with the rest of the range.
When there’s no directory left to read
This isn’t an undelete tool. It never reads a FAT, an inode or a directory entry, because on a card that’s been reformatted or corrupted there may not be any left to read. It scans raw bytes for file signatures and then walks each format’s internal structure to find where the file genuinely ends.
For JPEG that means walking marker segments from SOI, handling 0xFF00 byte stuffing and restart markers through the entropy-coded data, to the EOI. For PNG it walks the chunk chain to IEND and recomputes every CRC32. ZIP, GIF and PDF each get their own walk.
A JPEG normally contains a second complete JPEG in its EXIF thumbnail. Any signature landing inside an already-carved extent is reported as nested and not carved separately, so you get the photo, not 400 thumbnails.
Then check whether it worked
cardrecovery verify ./rescued fully decodes every recovered JPEG, PNG and GIF and tells you which ones actually survived, at what dimensions. That’s how you find out a file was fragmented.
What you don’t get back
Filenames and timestamps. They lived in the directory structure. Carved files come out as 000001.jpg. Fragmented files come out wrong.
Reading on the job itself
- How to recover photos from a memory card Take the card out and make a byte-for-byte image of it. Everything after that happens on the image file, so...
- Why won't this video play? Read the container structure before you try to repair anything. An MP4 is a tree of boxes with declared siz...
Advanced & technical details Command-line builds, source code, checksums and a recorded session — for developers and IT teams
A working command-line build of the carving engine: signature-based recovery for JPEG, PNG, GIF, ZIP and PDF, with chunk-boundary-safe scanning, nested-signature suppression and post-carve validation of what it recovered. The card image is opened read-only and nothing is written without --apply. Reading a physical card directly and rebuilding a damaged filesystem are on the roadmap.
Recorded session
Naming status
Working name only — brand verdict **AVOID** (Very High). Collision: CardRecovery. Rename completely.
What it draws on
Existing paid software whose best ideas shaped this program: Wondershare Recoverit, Wondershare Repairit, Stellar Repair for Video, Stellar Photo Recovery.
Command line
There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.
cardrecovery - read-only file carver for memory card images
Recovers files from a raw card image whose filesystem is gone by scanning the
raw bytes for file signatures. It never reads a directory structure and never
writes to the image it scans.
USAGE
cardrecovery scan <image> [--json] [--max-carve <size>]
cardrecovery recover <image> --out <dir> [--types <list>] [--min-size <size>]
[--max-carve <size>] [--apply] [--json]
cardrecovery verify <dir> [--json]
COMMANDS
scan Scan the raw image for known signatures and report every file that
could be recovered: type, byte offset, length and confidence.
recover Carve the found files out into --out with sequential names.
Dry run by default; pass --apply to actually write.
verify Fully decode each recovered JPEG/PNG/GIF in a directory and report
which ones genuinely survived.
help Show this message.
OPTIONS
--json Emit machine-readable JSON instead of text.
--out <dir> Destination directory for recover (required).
--types <list> Comma-separated types to carve: jpeg,png,gif,pdf,zip.
--min-size <size> Skip carves smaller than this (e.g. 4096, 8K, 1M).
--max-carve <size> Cap for a header with no reachable footer (default 16M).
--apply Actually write the carved files (recover only).
-h, --help Show this message.
FORMATS
jpeg FFD8FF .. FFD9 walked marker by marker, so an embedded EXIF thumbnail
does not end the outer file early
png 89504E47.. IEND every chunk CRC32 is verified
gif GIF87a/89a .. 3B walked block by block to the trailer
pdf %PDF- .. %%EOF last %%EOF before the next %PDF- header
zip PK\x03\x04 .. end-of-central-directory, validated against the
central directory offset it declares
EXIT STATUS
...
Recorded from the shipped binary, not written by hand.
Source
Every file the program is built from:
console.go · console_test.go · guided.go · main.go
SHA-256 checksums · build instructions & scope notes · full build plan