Skip to main content

FolderTrace

FolderTrace is a local-first application for scanning folders and building a structured, persistent inventory of their contents.

It helps answer practical questions about large file collections:

  • What files are in this folder?
  • Which files are exact duplicates?
  • What is stored inside my archives?
  • What has changed since a previous scan?
  • Can I recreate or verify this collection later?

FolderTrace is designed for general-purpose collections such as downloads, project archives, photo backups, and datasets. Mod folders are a useful example, but not the product's primary focus.

Install

FolderTrace requires Python 3.11 or later.

Latest development version

Install the latest version directly from GitHub:

pipx install git+https://github.com/LucasPullinger/FolderTrace.git

After installation:

foldertrace --help
foldertrace scan ~/Downloads
foldertrace summary

Run from source

To run FolderTrace from a local clone:

git clone https://github.com/LucasPullinger/FolderTrace.git
cd FolderTrace
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[test]"
pytest

How it works

FolderTrace recursively scans a selected directory, collects metadata for every file, calculates SHA-256 hashes, optionally inspects supported archives, and stores the resulting manifest locally. It then analyses that manifest to surface duplicates and changes over time.

Select folder
    ↓
Scan files and collect metadata
    ↓
Calculate SHA-256 hashes
    ↓
Inspect supported archives
    ↓
Store manifest locally
    ↓
Analyse duplicates and changes

A file record may contain information like this:

{
  "path": "/Users/lucas/Downloads/project-final.zip",
  "name": "project-final.zip",
  "size": 34829102,
  "sha256": "a893...",
  "modified_at": "2026-09-03T10:24:00+01:00",
  "archive": {
    "type": "zip",
    "file_count": 142
  }
}

Features

The first release provides a small, reliable auditing workflow:

  1. Recursively scan a folder and record each file's path, name, extension, size, and modification date.
  2. Calculate SHA-256 hashes.
  3. Detect and report exact duplicate files.
  4. Recognise and inspect .zip, .tar, and .tar.gz archives without extracting them.
  5. Persist scan manifests locally in SQLite.
  6. Compare a new scan with an earlier one to report added, removed, changed, and unchanged files.
  7. Identify possible filename-based version groups.
  8. Export saved scans as JSON or CSV.
  9. Reuse hashes from unchanged files to speed up repeated scans.
  10. Exclude unwanted files with glob patterns or a .foldertraceignore file.

Archive records can include the number of contained files, total uncompressed size, and contained extensions.

Exact duplicates vs. possible versions

FolderTrace keeps these concepts deliberately separate.

Finding Meaning Confidence
Exact duplicate Files have the same SHA-256 hash. Definitive
Possible version group Filenames suggest related releases, such astool-v1.0.zip and tool-v2.0.zip. Interpretive

Version grouping is intentionally conservative: a group is only shown when at least one filename contains a version number or date marker. It must never be presented as equivalent to hash-based duplicate detection.

Command-line interface

The application is a CLI:

foldertrace scan ~/Downloads
foldertrace summary
foldertrace scans
foldertrace duplicates
foldertrace archives
foldertrace versions
foldertrace changes --from 1 --to 2
foldertrace export manifest.json

Each scan is stored in SQLite at ~/.local/share/foldertrace/foldertrace.db by default. Use foldertrace --help for the complete command reference.

Exclude paths from a scan with repeated glob patterns:

foldertrace scan ~/Downloads --exclude "*.tmp" --exclude ".DS_Store"

You can also create a .foldertraceignore file in the scanned folder:

*.tmp
.DS_Store
.venv/*
node_modules/*

Repeated scans reuse SHA-256 hashes for files whose path, size, and modification time are unchanged. FolderTrace displays progress and reports reused versus newly calculated hashes.

An example comparison:

Scan changes: 1 → 2

Added:       12
Removed:      4
Changed:      7
Unchanged:  261

Proposed architecture

Python
│
├── Scanner             Finds files
├── Hasher              Calculates SHA-256
├── Archive Inspector   Reads archive contents
├── Database            Stores manifests
├── Analysis            Finds duplicates and changes
└── CLI                 Provides user commands

Technology

  • Python 3.11+ — application language and standard-library support for filesystem scanning.
  • Typer — command-line interface and argument validation.
  • Rich — readable terminal tables and scan summaries.
  • SQLite — local, serverless storage for persistent scan manifests.
  • SQLAlchemy — Python database models and schema creation for the scans and files tables.
  • pytest — automated scanner, CLI, hashing, and database tests.

hashlib provides SHA-256 hashing, while zipfile and tarfile inspect supported archives. FolderTrace runs entirely locally and does not require cloud services.

Roadmap

  1. Add optional GUI support.
  2. Add specialised plugins, such as a Nexus Mods integration.
  3. Expand archive-format support, including .7z and .rar.
  4. Improve scan filtering and reporting.

Non-goals

FolderTrace is not a file manager, backup program, antivirus product, cloud storage system, archive replacement, or mod manager. It analyses and records a collection so that it can be understood, verified, and compared over time.

Point FolderTrace at a directory. It creates a persistent inventory of the files, detects exact duplicates, and tells you what changed between scans.

License

FolderTrace is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later). See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

foldertrace-0.1.0.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

foldertrace-0.1.0-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file foldertrace-0.1.0.tar.gz.

File metadata

  • Download URL: foldertrace-0.1.0.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for foldertrace-0.1.0.tar.gz
Algorithm Hash digest
SHA256 06f470f346daeb1785a072db0ac36d4dc2f768f1322c9986b6e1224ec5c8e73a
MD5 6647750951c199fe6ea19b165796916f
BLAKE2b-256 81e7e2e6862eb3e94ebe09285b10416b0ec05ce43937040a52205941e3beac24

See more details on using hashes here.

Provenance

The following attestation bundles were made for foldertrace-0.1.0.tar.gz:

Publisher: release.yml on LucasPullinger/FolderTrace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file foldertrace-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: foldertrace-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for foldertrace-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d2e28b01be5a8d83ff0fbdb13f53fbfa295afca3ff829476d9cfa6cc919857a
MD5 ca7e915abd4e0147442f1fb0abb31518
BLAKE2b-256 b0b1e399f28b9b8d741297295f19f7bdcc3b54ab1f8300adcaf62632596af783

See more details on using hashes here.

Provenance

The following attestation bundles were made for foldertrace-0.1.0-py3-none-any.whl:

Publisher: release.yml on LucasPullinger/FolderTrace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page