A terminal-based metadata scrubber for images, PDFs, and DOCX files. Fresh removes hidden metadata from files through an interactive TUI built with Textual.
- Interactive file browser with keyboard controls.
- Atomic file writes to avoid corruption.
- Scrubs images, PDFs, and Word documents.
- Confirmation before overwriting files.
- Minimal dependencies.
See the latest updates and release notes in the Changelog
| Type | Extensions |
|---|---|
| Image | .jpg, .jpeg, .png, .tiff, .tif, .bmp, .gif |
.pdf |
|
| Word | .docx |
pip3 install textual pillow pypdf python-docxThe script runs on Linux and macOS with Python 3.9 or newer.
Note:
pillow,pypdf, andpython-docxare optional. If a required package is missing, supported files are listed but will fail with a message naming the missing package.
python metadata.pyTo start in a specific directory:
python metadata.py /path/to/files| Key | Action |
|---|---|
UP / DOWN |
Navigate the file list |
SPACE |
Toggle file selection |
a |
Select all files |
d |
Deselect all files |
ENTER |
Scrub selected files (asks for confirmation) |
c |
Change working directory |
h |
Show help |
q |
Quit |
Opens the image, discards all metadata, and re-encodes using only the raw pixel data. This strips EXIF, IPTC, XMP, and any other embedded tags. Animated GIFs are scrubbed frame by frame, preserving frame order, duration, and loop count.
Copies all pages to a new PDF and clears the document information dictionary using pypdf.
Clears core properties (author, title, dates, etc.) via python-docx, then rewrites the ZIP archive with empty docProps/app.xml and docProps/custom.xml entries to remove extended and custom properties.
All writes use an atomic save strategy:
- Content is written to a temporary file in the same directory, then given the original file's permissions.
- On success, the temporary file replaces the original in a single move.
- On failure, the temporary file is removed and the original is left untouched.
Scrubbing is destructive and irreversible, so the app asks for confirmation before overwriting any selected files.
- Python 3.9+
- A modern terminal emulator (Windows Terminal, iTerm2, GNOME Terminal, etc.)