MetaScan is a cross-platform command-line tool that recursively scans files in a directory, extracts metadata (including EXIF for images), computes cryptographic hashes (MD5, SHA1, SHA256), and exports everything to CSV or JSON. If files contain GPS coordinates, it automatically generates a Google Maps link.
β
Recursive or non-recursive directory scanning
β
Metadata extraction (EXIF: camera info, date, dimensions, etc.)
β
Cryptographic hashes: MD5, SHA1, SHA256
β
Automatic Google Maps link if GPS data exists
β
Output to CSV or JSON
β
Generates a manifest with output file hashes and process summary
β
Pre-built binaries for Windows, Linux, and macOS
Download the appropriate binary from dist/:
| Platform | Path |
|---|---|
| Windows | dist/windows/metascan.exe |
| Linux | dist/linux/metascan |
| macOS | dist/macos/metascan |
- Give execution permission:
chmod +x metascan- Run directly:
./metascan --helpor move to /usr/local/bin for global access:
sudo mv metascan /usr/local/bin/Now you can run:
metascan --help- Run from the directory:
metascan.exe --helpor add the dist\windows\ folder to the System PATH:
- Open: Control Panel β System β Advanced system settings β Environment Variables.
- Edit the PATH variable β Add full path to
dist\windows\.
Then you can run from any terminal:
metascan --helpmetascan --dir <directory> [options]| Option | Description | Default |
|---|---|---|
--dir |
Path to directory to process | . (current directory) |
--output |
Base name for output file (without extension) | file_metadata_report |
--r |
Recursively process subdirectories | false |
--ext |
Filter files by extension (e.g., .jpg) |
(no filter) |
--format |
Output format: csv or json |
csv |
metascan --dir ./photos --output metadata_photosOutput:
metadata_photos.csvmetadata_photos-manifest.csv
metascan --dir ./images --r --ext=".jpg" --output images_report --format jsonOutput:
images_report.jsonimages_report-manifest.json
- Report with metadata, hashes, and optional Google Maps link.
- Manifest with:
- Output file name and format
- Process summary (attempted, processed, errors)
- Cryptographic hashes of the output file
- Timestamp of generation
β
Digital Forensics
Analyze file integrity, verify authenticity, and track metadata for investigations, audits, or security assessments.
β
Compliance & Auditing
Ensure files meet regulatory and legal standards by verifying hashes, metadata, and provenance for audits or compliance reports.
β
Media Management
Organize and catalog large collections of images, documents, or videos by automatically extracting metadata and generating structured reports.
β
Backup & Deduplication
Identify duplicate files using cryptographic hashes, optimize storage, and maintain consistent backups across systems.
β
Geolocation Analysis
Automatically extract GPS data from files (e.g., photos) and generate direct Google Maps links to visualize spatial information.
β
Data Pipelines
Integrate as a preprocessing step to enrich datasets with metadata, validate file integrity, and prepare structured outputs for downstream processing.
β
Chain of Custody Documentation
Provide verifiable cryptographic fingerprints (MD5, SHA1, SHA256) for each file to maintain a robust chain of custody in legal or compliance scenarios.
β
Archival & Digital Preservation
Document metadata and generate integrity hashes to support long-term digital preservation and ensure future accessibility.
β
Content Verification in Media Workflows
Validate that digital assets (e.g., photos, videos) are unaltered by comparing cryptographic hashes at each stage of content production and distribution.
β
Automated Reporting for IT Asset Management
Generate detailed CSV/JSON reports of file inventories across systems for IT audits, asset management, and security compliance.
β
Research Data Integrity
Facilitate reproducible research by cataloging datasets with metadata and cryptographic hashes, ensuring consistency and integrity.
β
Quality Assurance in File Transfers
Verify the completeness and integrity of files after transfer or synchronization between systems, storage media, or cloud platforms.
All three are computed for each file:
- MD5
- SHA1
- SHA256
If a file contains GPS data, MetaScan automatically includes a Google Maps link:
https://www.google.com/maps?q=<lat>,<long>
The binaries are pre-built, so no need to install dependencies.
For developers compiling from source:
- Requires Go 1.16+
- Uses: goexif
Install dependencies:
go mod tidyMIT License
Pull requests are welcome!
Feel free to open issues for bugs or feature requests.
{
"output_file": "file_metadata_report.json",
"output_format": "json",
"total_attempted": 10,
"total_processed": 9,
"total_with_errors": 1,
"output_file_hashes": {
"md5": "abc123...",
"sha1": "def456...",
"sha256": "ghi789..."
},
"generated_at": "2025-05-28T12:34:56Z"
}https://www.google.com/maps?q=37.774929,-122.419416
The command name depends on the binary file name.
| File name | How to run |
|---|---|
metascan.exe |
metascan or metascan.exe |
metascan (Linux/macOS) |
./metascan or metascan (if in PATH) |
If you rename the file to scanner, then the command will be scanner.