Hunt social media accounts by username — Rust Edition
A complete Rust rewrite of Sherlock with a modern dark web UI — single .exe, zero installation.
Sherlock-RS scans 478+ social platforms in parallel to check whether a username exists. Just run the exe: a local server starts, your browser opens automatically, and results stream in real time.
New: Simultaneous multi-username search with tabs, automatic rotation of 25 real User-Agents, and smart retry logic on network errors.
| Feature | Details |
|---|---|
| 🔍 478+ sites scanned | Official Sherlock database, one-click update from the UI |
| 👥 Multi-username | Enter multiple names at once (comma or newline), results per tab |
| ⚡ Parallel scanning | 20 concurrent requests via Tokio async — full scan in minutes |
| 🔄 User-Agent rotation | 25 real browsers (Chrome, Firefox, Edge, Safari, Opera…) rotated randomly per request |
| 🔁 Smart retry | 3 attempts with exponential backoff (500 ms / 1 000 ms) on network errors only |
| 🎨 Modern UI | Dark-themed web interface with real-time results (Server-Sent Events) |
| 🛡️ WAF detection | Cloudflare, PerimeterX, AWS CloudFront detected and flagged |
| 🧅 Proxy / Tor | Native SOCKS5 support (socks5://127.0.0.1:9050 for Tor) |
| 📥 Export | Download results as CSV (spreadsheet) or TXT |
| 🔎 Filter & sort | Sort by name, status or response time — live text filter |
| 📦 Zero install | Single self-contained 5 MB .exe, no dependencies required |
- Download the latest release from the Releases page
- Double-click
sherlock-rs.exe - Your browser opens automatically — that's it
Requirements:
- Rust (install via
rustup) - Visual Studio Build Tools 2022 with the Desktop development with C++ workload
git clone https://github.com/Oli97430/sherlock-rs.git
cd sherlock-rs
cargo build --releaseThe binary will be located at target/release/sherlock-rs.exe.
sherlock-rs.exeThe program starts a local server on a random port and opens your default browser. No extra commands needed.
- Enter one or more usernames to search (separated by comma or newline)
- Adjust options if needed (timeout, proxy, NSFW)
- Click Hunt or press
Enter - Results appear in real time, site by site
- Export results as CSV or TXT via the dedicated buttons
The input field accepts multiple names at once:
johndoe
janedoe, alice
Each username gets its own tab with a live counter of accounts found. The tab being scanned pulses in blue.
| Option | Description |
|---|---|
| Timeout | Maximum wait time per request (default: 30 s, min: 5 s) |
| NSFW | Include adult content platforms in the search |
| Proxy | SOCKS5 or HTTP proxy URL, e.g. socks5://127.0.0.1:9050 for Tor |
| Update DB | Downloads the latest site database from GitHub |
| Key | Action |
|---|---|
Enter |
Start search (from the username field) |
Shift + Enter |
Add a new line (multi-username input) |
Escape |
Stop the current search |
Sherlock-RS faithfully implements the 3 detection methods from the original project:
| Type | Logic |
|---|---|
status_code |
HTTP 404 (or custom code) → not found; 200-299 → found |
message |
Specific error text found in response body → not found |
response_url |
Redirects disabled; 200-299 → found, otherwise not found |
WAF detection (Cloudflare, PerimeterX…) is applied first, before any other logic, to avoid false positives. Blocked results are reported separately with the Blocked status.
Each individual request randomly picks a User-Agent from 25 real modern browsers:
- Chrome 128–131 (Windows, macOS, Linux, Android)
- Firefox 130–133 (Windows, macOS, Linux)
- Edge 130–131 (Windows, macOS)
- Safari 17 (macOS, iOS)
- Opera 116, Brave
This significantly reduces bot-detection-based blocking.
On network errors (timeout, connection refused, DNS failure):
Attempt 1 → fails → wait 500 ms
Attempt 2 → fails → wait 1 000 ms
Attempt 3 → final result (success or error displayed)
Valid HTTP responses (even 403 or 404) do not trigger a retry.
| Status | Meaning | Tip |
|---|---|---|
| ✅ Found | Account detected on the platform | Click the URL to open the profile |
| ❌ Not found | No account under this name | — |
| Blocked by a WAF (Cloudflare…) | Retry with a proxy or Tor | |
| 🔴 Error | Network error or timeout after 3 attempts | Increase the timeout |
| ⬜ Invalid | Username format doesn't match the site's rules | Normal for some sites |
sherlock-rs/
├── Cargo.toml # Dependencies and project metadata
├── src/
│ ├── main.rs # Entry point, console banner, server startup
│ ├── server.rs # Axum server: REST routes + SSE streaming
│ ├── checker.rs # Async scan engine: UA rotation, retry, detection
│ ├── sites.rs # Load and parse data.json (local cache + GitHub)
│ ├── result.rs # Types: QueryStatus (enum), QueryResult (struct)
│ └── export.rs # CSV and TXT export grouped by username
└── frontend/
└── index.html # Full UI embedded in the binary (HTML/CSS/JS)
| Role | Crate |
|---|---|
| Async runtime | tokio 1 |
| Web server + SSE | axum 0.7 |
| HTTP client | reqwest 0.12 |
| JSON serialization | serde + serde_json |
| Regular expressions | regex |
| Randomness (UA rotation) | rand 0.8 |
| CSV export | csv |
| Browser launcher | open |
| System directories | dirs |
| Error handling | anyhow |
- Author: Olivier Hoarau — tarraw974@gmail.com
- Original project: Sherlock Project by @sdushantha and the community (MIT license)
- Database:
data.jsonmaintained by the Sherlock Project community
MIT — see the LICENSE file