Extract MPO images
Recover every indexed JPEG view from a local MPO, preserving compressed originals, EXIF and full offset/SHA evidence.
- 1Add input
- 2Review and run
- 3Get your result
Tool input and files are processed in this browser without being uploaded.
Before you start
Select one MPO or JPEG carrying an MP index. Recover every stored view in index order, without pixel reencoding. Download one ZIP with the exact original, standalone JPEGs, original streams and complete inventory.
How to use this tool
- Select one original MPO or MP-indexed JPEG and keep a separate copy.
- Run and inspect the view count, dimensions, order and unindexed byte count.
- Download mpo-views.zip; open every standalone JPEG you need.
- Use the complete inventory and original streams to audit offsets, metadata and SHA256.
Supported inputs and limits
One file up to 50 MiB and a filename up to 512 UTF-16 units. JPEG MP version 0100, II/MM TIFF, 2–1000 in-bounds nonoverlapping indexed views; physical order may differ from index order.
8-bit baseline/progressive JPEG with one or three components. SOF, SOS, selectors, sampling, DQT, Huffman shape, lengths and EOI are checked. Compressed entropy is preserved without decoding or full validity assurance; broken JPEG repair is outside scope.
All TIFF types 1–12 and bounded next-IFD chains are reported as typed raw values. Sorted unique tags and bounded exact/partial value aliases are supported; directory/header storage overlaps are refused. This does not interpret every camera attribute or certify full CIPA compliance.
At most 1024 tags per IFD, 20000 total MPF tags, 2048 total IFDs, 64 chain levels and 20000 indexed JPEG structural segments. Complete compact JSON plus CSV must fit 8 MiB. Every budget applies simultaneously; an excess or malformed file creates no archive.
The ZIP contains original.mpo, every view-NNNN-original-stream.bin, every view-NNNN.jpg, mpo-inventory.json and mpo-tags.csv. A 1000-view file has 2003 controlled members. The 170 MiB ZIP ceiling is a dominated allocation guard, not an independently reachable output promise.
Standalone JPEGs remove only MPF APP2 segments to eliminate stale cross-file index pointers. Compressed pixels, EXIF/GPS and other permitted metadata remain. The original container and indexed streams are byte exact. Gaps/trailing bytes remain in the original and receive offset, length and SHA records.
All view rows appear in the table. Complete offsets, dependency references, raw TIFF fields, removed spans and hashes are in downloads. Eye assignment and depth are not inferred; no stereo alignment or GIF assembly is performed.
Browser-local byte processing. No URL fetch, metadata execution, upload, camera/filesystem scan or cloud service. This is view recovery, not anonymization; sharing the output can retain GPS and other camera metadata.
Worked example
Example input
One 120198-byte Nintendo3DS camera MPO, named camera.mpo.
Example options
No parameters.
Example output
2 standalone JPEGs, 2 exact indexed streams and the original, plus complete JSON/CSV: 7 ZIP members; the legitimate 1-byte view gap is preserved.
When something does not work
A malformed structure, unsupported profile or budget breach creates no download. Correct the source or choose a supported bounded original and rerun. Cancellation discards partial results; rerun the same selected file in a fresh Worker.
Frequently asked questions
Does the tool label left and right eyes?
No. It preserves MP-entry order and raw attributes/dependencies, without inferring eye or depth semantics. Review the exported views before stereo alignment or GIF assembly.
Are camera metadata and pixels removed or reencoded?
Only the MPF APP2 container references are removed from standalone copies. Compressed image bytes and EXIF/GPS remain; the original MPO and indexed source streams are also exported exactly. No image entropy decoding or anonymization is claimed.