How to see what is in your photos.

Before you remove anything, read the list. The dry run touches nothing and tells you exactly what a scrub would take out of each file, and why.

~1 minute macOS · Linux ScrubPony
// at a glance
  1. Run scrubpony -n on one photo
  2. Read the keep/drop list
  3. Check the EXIF summary line
  4. Point -n at the whole folder
Prerequisites
  • ScrubPony installed — see the install page
  • A photo straight off a phone, ideally one taken outdoors
// step 01

Point the dry run at one file

Run scrubpony -n photo.jpg. Nothing is written and nothing is modified — -n is a read-only mode. What comes back is one line per interesting segment: the action, the marker, the payload size, and what the segment contains.

$ scrubpony -n kitchen_sink.jpg
kitchen_sink.jpg: 10059 bytes
  action  marker   payload  contents
  drop    APP12          9  Ducky  (camera and editor junk)
  keep    APP0          14  JFIF
  drop    APP1        1958  EXIF  (GPS, timestamps, device serial, thumbnail)
  drop    APP13         58  Photoshop/IPTC  (captions, credits, location names)
  drop    APP1        2879  XMP  (editing history, creator, sometimes GPS again)
  keep    APP2         602  ICC profile
  drop    COM           20  comment  (free text)
// step 02

Read the two APP1 lines

Notice that two segments share the marker APP1 and carry different things: one is EXIF, one is XMP. The marker number did not decide their fate — the identifier string at the front of each payload did. The same is true of APP2, where an ICC profile is kept and an MPF block would be dropped.

// step 03

Read the EXIF summary

Below the segment list, the dry run reports what it found inside the EXIF block: the byte order, how many entries are in IFD0, whether GPS is present, whether a thumbnail is present, and the orientation value. GPS present is the line most people are looking for.

  EXIF: big-endian byte order, 8 entries in IFD0, GPS present, thumbnail present, orientation 8 (rotated 270 CW)
  would remove 5 segments, 4944 bytes (49.2% of file)
  orientation would be preserved in a 36-byte EXIF block
// step 04

Point it at the whole folder

Add -r and a directory to see the same thing for a tree. Directory entries are sorted before use, so the output is diffable between runs — useful for spotting what changed after an import. Add -v if you want the structural segments as well.

$ scrubpony -n -r ~/Pictures/to-upload

Verify it worked.

  • Nothing was written: no .scrubbed.jpg files appeared beside your originals.
  • The originals still have their original modification times.
  • Each dropped line has a reason in parentheses explaining what that segment carries.

Common questions.

What is the difference between -n and -l?

-n applies the policy and tells you what would be removed and why. -l reports the container's structure — offsets, markers, payload lengths, identifiers — with no opinion attached. -l is the mode the golden tests compare against exiftool, so it is the one to quote in a bug report.

Why are some segments not listed?

Structural segments — the quantisation and Huffman tables, the frame header, the scan — are every file's uninteresting majority, and the dry run is a question about what changes. Add -v to see them.

Does -n need write access?

No. It opens files for reading only.

Next steps.

Get ScrubPony

Strips identifying metadata out of JPEGs without touching a pixel. C99, no dependencies beyond libc, macOS and Linux, MIT-licensed.