Free · Open source · MIT
Guess the email, not the password.
Stop typing first.last, then flast, then giving up. EmailGuesser turns a name, username, birth year, date of birth, location and domain into a ranked list of the addresses a person most likely uses. Run it offline in Python, or right here in your browser. It does the guessing so you only have to check the few that matter.
Install
pip install emailguesser- MIT licensed · free forever
- Offline · zero dependencies
- Python 3.9+ · CLI and library
Example output
Try it
Try it now. No install, nothing uploaded.
This runs the real emailguesser Python package in your browser through Pyodide. The first run downloads the runtime once. After that, generating addresses stays on your device — the names you type are never sent anywhere. The one optional step that reaches the network is the Gravatar check, and only when you click it.
Your ranked candidates will appear here.
Generation runs entirely in your browser.
EmailGuesser only generates guesses; it does not check that an address exists or who it belongs to. For OSINT research, authorised security testing and lawful outreach only.
Why EmailGuesser
People pick email addresses from a small set of habits.
EmailGuesser encodes those habits as a scored pattern table, applies them to the details you supply, and ranks the most probable addresses first.
Ranked, not a dump
Every candidate gets a score from 0 to 1, so you check the top handful instead of 200 combinations. That matters when your verification step is rate-limited.
Private by design
No accounts, no API keys, no network calls. The name you type never leaves your machine.
Real naming habits
Modelled on how people actually pick addresses: first.last at work, a name plus a year on free-mail. It starts from every login pattern in NAMINT by The SEINT, and a test checks they're all still covered.
Names handled properly
Middle names, initials, hyphenated and multi-word names, apostrophes, accents and surname particles (van der Berg) all resolve to the forms people really use.
Nickname, DOB and username aware
Robert also tries bob, rob and bobby; birth years and dates become suffixes; usernames add separator variants.
Learns a company format
Know one colleague's address? Pass it and that company's pattern is ranked to the top, so the right format is checked first.
Install
Run it offline in under a minute.
Pure Python, zero dependencies. The command-line tool and the library make no network calls at all.
pip (recommended)
Installs the emailguesser command and the Python library.
pip (recommended)
pip install emailguesser
emailguesser --first John --last Doe --domain acme.com --limit 5 --prettypipx (isolated CLI)
Keeps the emailguesser command on your PATH in its own environment.
pipx (isolated CLI)
pipx install emailguesser
emailguesser --first John --last Doe --year 1990 --format txtWith transliteration
Adds Cyrillic, Greek, Arabic and CJK transliteration for non-Latin names.
With transliteration
pip install "emailguesser[translit]"For AI agents (MCP)
Runs a Model Context Protocol server so an agent can call EmailGuesser as a tool. Needs Python 3.10+.
For AI agents (MCP)
pip install "emailguesser[mcp]"
emailguesser-mcpFrom source
For development on EmailGuesser itself.
From source
git clone https://github.com/OSINTVerseHQ/EmailGuesser.git
cd EmailGuesser
pip install -e ".[dev]"What you can give it
You need at least a first and last name, or a username. Everything else sharpens the ranking.
- First namewith last name, or a username
- Middle nameenables middle-initial patterns
- Last namehyphenated and multi-word names work
- Usernamerepeatable; separator variants
- Alias / nicknameextra first-name forms
- Known emaillearns that domain's format
- Year4 digits, 1900 to 2100
- Date of birthISO or dmy / mdy / ymd
- Locationcity, country; adds regional providers
- Domainor popular free-mail providers
Usage
From the terminal, a script, or a batch file.
The CLI and the Python library share one input model and emit JSON, JSONL, CSV or a plain list of addresses.
Command line
Command line
# Everything you know about one person
emailguesser --first John --middle Michael --last Doe --username jdoe \
--year 1990 --dob 1990-05-14 --location "Mumbai, India" \
--domain acme.com --domain gmail.com --pretty
# Learn a company's format from one known address
emailguesser --first Jane --last Smith \
--known-email "Bob Jones <bjones@acme.com>" --format txt
# Run a whole file of people at once
emailguesser --batch people.csv --format csv -o candidates.csvPython library
Python library
from emailguesser import generate
result = generate(
first_name="John",
last_name="Doe",
year="1990",
domains=["acme.com", "gmail.com"],
limit=20,
)
for item in result["emails"]:
print(item["score"], item["email"])Responsible use
EmailGuesser only generates guesses. It doesn't check that an address exists or who it belongs to. Use it for OSINT research, authorised security testing, lawful outreach and personal use, and never for harassment, stalking or spam. You're responsible for following the privacy, anti-spam and data-protection laws that apply to you, such as GDPR and CAN-SPAM.
Generate here, verify there
EmailGuesser gives you the shortlist. It never tells you which address is real. When you need that answer, run the top candidates through a breach lookup, account discovery or email check you're authorised to use. SearchIn does all three from one search box, priced per lookup.
See SearchInEmailGuesser's login patterns build on NAMINT by The SEINT (MIT licence). If you want search links for a name rather than email candidates, use NAMINT directly at seintpl.github.io/NAMINT.
FAQ
EmailGuesser, answered
Is EmailGuesser free?
Yes. EmailGuesser is free and open source under the MIT license. It needs no OSINTverse account and is never billed to a wallet. The source is on GitHub and the package is on PyPI.
Does it check whether an email address exists?
No. EmailGuesser is offline and generation-only. It ranks the addresses a person is most likely to use, but it never contacts a mail server, so it cannot confirm that an address exists or who owns it. Verify candidates with a separate tool you are authorised to run.
Does my data leave my device?
Generating addresses does not. The command-line tool and the Python library make no network calls at all. The in-browser version downloads the Python runtime once from a CDN, then runs the same package on your device — the names you type are never sent to a server. The one exception is the optional Gravatar lookup in the results: when you run it, a SHA-256 hash of each address is sent to gravatar.com to check for an account. Nothing contacts Gravatar until you ask it to.
What can I give it, and what comes back?
Give it any of a first and last name, middle name, username, alias, birth year, date of birth, location, domain, and a known address. You need at least a first and last name, or a username. It returns ranked candidates, each with an email, a pattern id, a category and a score, as JSON, JSONL, CSV or a plain list.
How does it relate to NAMINT?
EmailGuesser started from NAMINT's login patterns, so it owes that project a lot. NAMINT, by The SEINT, is a free browser tool that turns a name into login search patterns with ready-made search links, and it's the better choice when you want to search the web for a name. EmailGuesser is a Python command-line tool and library focused only on email addresses. It covers every NAMINT login pattern and adds ranking, nicknames, usernames, date of birth, location, known-format inference, de-duplication and JSON, CSV and TXT output.
Can an AI agent use it?
Yes. EmailGuesser ships a Model Context Protocol server. Install it with pip install "emailguesser[mcp]", run emailguesser-mcp, and point your agent's MCP client at the command. The agent gets a guess_emails tool and the output's JSON Schema as a resource. The same rule holds as everywhere else: it returns ranked guesses, not confirmed addresses.
Can I run it on many people at once?
Yes. Pass a JSON, JSONL or CSV file of people with --batch and it generates candidates for each in one call. A CSV just needs headers that match the input fields, for example first, last, domain.
OSINTverse means OSINT
Everything else on OSINTverse
One account covers search, the case map, the API, and MCP. The free tools, the resources, and the community need no account at all.
- SearchSearchInType one email, username, phone, or domain. See everything connected to it.17 sources behind one search box
- MapGraphInBrowser link analysis your whole team shares, priced per team.$100 once per team, not per seat
- AutomateOSINTOne APIThe same 17 sources in your own tools. One key, one schema.17 sources, one key, one schema
- ConnectOSINTverse MCPLet Claude run the same 17 sources and file results into Cases. You set the daily cap.24 tools for Claude, ChatGPT, and Cursor
- LearnResourcesCourses, books, ebooks, newsletters, and communities, judged before you pay for one.68 resources and 86 comparisons
- CommunityOSINT CollectiveA free monthly room where people who do OSINT teach what they know. OSINTCon recordings stay open.500 seats a month, 10,000+ OSINTCon attendees
Guess the email, then verify it with the right source.
EmailGuesser is free and open source on GitHub and PyPI. When a guess needs confirming, SearchIn runs breach, people and account sources from one search box, priced per lookup.
Quick install
Install
pip install emailguesserMIT licensed · contributions welcome