A minimal, privacy-friendly hash identifier that runs entirely in your browser.
Paste a hash, get the possible types in milliseconds — nothing is ever uploaded.
Repository · Run Locally · How It Works
- Identifies 220+ hash types (MD5, SHA variants, bcrypt, NTLM, JWT, …) via the hashid library
- 100% client-side — no server, no API calls, no tracking; your hashes never leave your machine
- Fast by design: no webfonts or UI frameworks, PyScript runtime cached by a service worker, and a minimal CSS layer
- Installable PWA with offline support
- Auto light/dark mode that follows your system preference
- Responsive, works on mobile
The UI is plain HTML + CSS. Identification happens in Python running in your browser:
- PyScript (v2026.7.3) boots a Pyodide/WebAssembly Python runtime on the page
- It installs the pure-Python
hashidpackage (declared inscripts/pyscript.json) - On submit,
scripts/main.pyrunshashidagainst your input and renders the matches as chips
The first load takes a few seconds (the Python runtime is ~10 MB and cached afterwards); subsequent visits are near-instant thanks to the service worker cache.
| Layer | Tech |
|---|---|
| Client | HTML, CSS, PyScript (Pyodide / WASM) |
| Backend | None — everything runs in the browser |
Clone and serve the folder (a web server is required so PyScript can fetch its files):
git clone https://github.com/spaulll/HashLens.git
cd HashLens
python3 -m http.server 8000Then open http://localhost:8000.
Any static file server works, e.g.
npx serveorphp -S localhost:8000.
HashLens/
├── index.htm # UI markup
├── style.css # Minimal modern styling (auto light/dark)
├── scripts/
│ ├── main.py # PyScript app: hashid + DOM rendering
│ ├── pyscript.json # PyScript config (packages: hashid)
│ └── script.js # Loader / readiness handling
├── manifest.json # PWA manifest
└── service-worker.js # Offline caching
Why is the first load slow? PyScript downloads the Pyodide (Python/WebAssembly) runtime on first visit. After that, both the runtime and the app assets are cached by the service worker, so repeat visits load quickly.
Is my hash sent anywhere? No. Everything runs locally in your browser's sandbox — no network request carries your input.