afwf_md5 — MD5 / SHA-256 / SHA-512 Alfred Workflow
An Alfred Workflow that computes MD5, SHA-256, and SHA-512 checksums of local files directly from Alfred. No terminal needed — type a path, get a hash, copy it with ⌘C.
When the query is empty, the workflow generates 10 random hashes so you can use it as a secure random string generator.
Install
Make sure you have Alfred 5+ installed with the Power Pack.
Go to Releases and download the latest .alfredworkflow file.
Double-click the file to install.
Usage
Compute MD5
Type md5 followed by an absolute file path:
md5 /path/to/file.zip
File found — returns the MD5 hex digest. Press ⌘C to copy.
Empty query — generates 10 random MD5 hashes (useful as secure random strings).
Directory — shows an error item (directories are not supported).
Path not found — shows an error item.
Compute SHA-256
Type sha256 followed by a path:
sha256 /path/to/file.zip
Compute SHA-512
Type sha512 followed by a path:
sha512 /path/to/file.zip
CLI Reference
The workflow is backed by a Python CLI (afwf-md5) with one subcommand per algorithm. Alfred’s Script Filter calls these directly.
Subcommand |
Alfred keyword |
Output |
|---|---|---|
afwf-md5 md5 --query '{query}' |
md5 |
MD5 hex digest (32 chars) |
afwf-md5 sha256 --query '{query}' |
sha256 |
SHA-256 hex digest (64 chars) |
afwf-md5 sha512 --query '{query}' |
sha512 |
SHA-512 hex digest (128 chars) |
Dev Script field (local .venv):
.venv/bin/afwf-md5 md5 --query '{query}'
Production Script field (via uvx, no virtualenv needed):
~/.local/bin/uvx --from afwf_md5==0.1.1 afwf-md5 md5 --query '{query}'
Error Log
Runtime errors are written to:
~/.alfred-afwf/afwf_md5/error.log
If a Script Filter returns an error item, pressing Enter opens the log file directly.
Development
# Install dependencies
mise run inst
# Run tests with coverage
mise run cov
The core logic lives in two files:
afwf_md5/hashes.py — pure function main(query, hash_algo) → ScriptFilter, no Alfred dependency, fully unit-testable.
afwf_md5/cli.py — Command class wired to fire.Fire; each method calls hashes.main() and sends feedback to Alfred.
Metadata
Release files for afwf_md5 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| afwf_md5-0.1.2.tar.gz | 12.6 kB | Without provenance | Details for afwf_md5-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| afwf_md5-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for afwf_md5-0.1.2-py3-none-any.whl |
Total release size: 23.4 kB
Release files / afwf_md5-0.1.2.tar.gz
| Download URL | afwf_md5-0.1.2.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2db828d6b97d0693b4d20bed1a7102266f548ce298aa8281942aebeb56d15454
|
|
BLAKE2b-256 checksum How to use checksums |
51f075c55f52fd32ad1242611faf54c4296f5ebc572949dbad19a2ce93699152
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / afwf_md5-0.1.2-py3-none-any.whl
| Download URL | afwf_md5-0.1.2-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
11437df2f7e7263d8e8acd9c0641f866c027d16f9d18d27a7109cebca143ec85
|
|
BLAKE2b-256 checksum How to use checksums |
90e54d3a7cdfb23fbd9d59d56b0491cb388c41c6d25e79fc1d00d499b54a9df0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for afwf_md5 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.