- Category
- Cybersecurity
- Rank
- No. 92Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Security & Identity
- Interfaces
- CLI
- Builder
- sherlock-project
- GitHub
- 92.6k stars
- Latest release
- v0.16.2
- Date
About
A command-line tool that searches for usernames across 400+ social networks and platforms to help investigators and security researchers track down social media accounts. Useful for OSINT investigations, cybersecurity research, and digital forensics.
What it does
Sherlock sends concurrent web requests to configured profile endpoints, then classifies each username as claimed, available, invalid, blocked, or unknown. Site-specific rules can inspect status codes, redirects, or response content. Results can be printed or exported for later analysis.
Why it's ranked here
Sherlock combines broad coverage with useful operational controls: multiple usernames, site filters, proxies, timeouts, exclusions, and several export formats. Its explicit blocked and unknown states are more honest than a binary answer. Accuracy still depends on changing third-party websites and their resistance to automation.
What's good
The tool separates successful matches from unavailable, invalid, blocked, and failed checks. It runs requests concurrently with up to twenty workers, supports targeted debugging, and records response timing in verbose output. Users can restrict sites, include selected adult sites, try username punctuation variants, and export text, CSV, or spreadsheet results.
Tradeoffs
The default workflow fetches a live site manifest and a separate false-positive exclusion list, so network availability and upstream data affect behavior. Sites can redirect, require login, render content in JavaScript, block bots, or return indistinguishable pages. The project documents targets removed because its detection model could not classify them reliably. Some community packages are unsupported or reported broken.
How to use it well
Use Sherlock for a fast first pass when you already have one or more candidate usernames. Narrow important runs to relevant sites, retain exclusions, inspect blocked or unknown results, and manually verify consequential matches. It does not establish that similarly named accounts belong to one person, replace identity correlation, or collect broader investigative evidence.
Technical notes+
pyproject.toml defines a Poetry package named sherlock-project, requires Python 3.9 or newer, and maps the sherlock console script to sherlock_project.sherlock:main. sherlock_project/sherlock.py uses requests-futures through SherlockFuturesSession, caps workers at 20, interpolates usernames into configured URLs and supports status-code, response-URL, and response-content detection paths. sherlock_project/sites.py loads the default manifest from https://data.sherlockproject.xyz, optionally applies a remote false-positive exclusion list, and models NSFW filtering. sherlock_project/result.py defines CLAIMED, AVAILABLE, UNKNOWN, ILLEGAL, and WAF states, while sherlock_project/notify.py handles terminal reporting and optional browser opening. tests/test_ux.py covers NSFW filtering, wildcard expansion, and missing CLI arguments; tests/conftest.py supplies local and remote manifest fixtures.
Observed
- License
- MIT
- Primary language
- Python
- Interface
- Command-line interface installed as the sherlock command
- Packaging
- Poetry package with a poetry-core build backend; install options include pipx, pip, uv, and Docker
- Platform support
- Package metadata declares operating-system independence; community packages are listed for Debian, Ubuntu, Homebrew, Kali, and BlackArch
- Tests
- The provided repository tree includes pytest coverage under tests/test_ux.py and shared fixtures under tests/conftest.py
Read from pyproject.toml, docs/README.md, docs/removed-sites.md, docs/CODE_OF_CONDUCT.md, docs/pyproject/README.md, devel/site-list.py, sherlock_project/sites.py, sherlock_project/notify.py, sherlock_project/result.py, sherlock_project/__init__.py, sherlock_project/__main__.py, sherlock_project/sherlock.py, devel/summarize_site_validation.py, tests/test_ux.py, tests/conftest.py.
What it can do
Search for usernames across 400+ social networks
Username string → List of matching social media accounts and profiles
Generate investigation reports in multiple formats
Username search results → Formatted reports (JSON, CSV, TXT)
Perform anonymous username searches through Tor
Username and Tor configuration → Anonymized search results across social platforms
Conduct bulk username searches
List of multiple usernames → Batch search results for all provided usernames
Route searches through proxy servers
Username and proxy configuration → Search results obtained via proxy connection
Filter search results by specific social networks
Username and platform selection criteria → Targeted search results from specified platforms only
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
