Checking Your Own Public Footprint Part 3: What a Username Reveals, and How to Check It Safely
A domain record exposes you if you own domains. A username exposes you everywhere you’ve reused it, which for most people is a much longer list. This part covers Maigret, a username-search tool that ships on Kali and installs cleanly with pip anywhere else, and I’m demonstrating it the only way that’s appropriate for a post like this: against a decoy identity, invented specifically for this post, that I’ve never used to register anything, anywhere.
Building a decoy, not borrowing one
The identity used below is the string GraniteFalcon9273Test, generated for this post and this post only. It is not, and has never been, a handle I’ve used on any real service. That distinction matters for what the result below actually demonstrates: any hit this string returns cannot be a genuine account, because nobody has ever created one under it. Which makes it a useful way to show exactly how much a raw “match” is worth on its own.
Running it
$ maigret GraniteFalcon9273Test --top-sites 200 --timeout 8
Maigret works by checking a username against a maintained, regularly updated database of site URL patterns, currently over 3,000 of them, and reporting back which ones return a profile-shaped response. No API keys, no accounts, no rate-limit negotiation. --top-sites 200 scopes the run to the 200 most-relevant sites in its database rather than the full catalogue, which is the right call for a quick check; the full -a run is thorough but takes a lot longer.
The real run against the decoy above checked 210 sites and came back with:
Search by username GraniteFalcon9273Test returned 1 accounts.
[+] ChaturBate: https://chaturbate.com/GraniteFalcon9273Test/
One match. Against a username that was typed into a terminal for the first time thirty seconds before the scan ran. That is not a real account existing. It’s a false positive, and the mechanism is usually the same one that trips up every tool in this category: a site returns HTTP 200 for a profile URL regardless of whether the profile exists, sometimes serving a generic “create this page” or search-results page at a URL shape that looks, to an automated checker, exactly like a hit.
I’ve run into this before, from the other direction. My Kali 2026.2 tools review tested tookie-osint, a similar Sherlock-style checker, against a different invented username and found its own advertised accuracy claim didn’t hold up under a live run. Two different tools in the same category, tested the same way, months apart: both produced at least one result that couldn’t possibly be real. That’s not a knock on either specific tool. It’s the category. Anything that checks hundreds or thousands of URL patterns automatically is going to have a false-positive rate, and the only way to know if a hit is real is to open the link and look.
Maigret’s own run output is honest about this in a different way. It logged its own error classes alongside the result:
[!] Too many errors of type "Bot protection" (4.76%). Try to switch to another ip address
[!] Too many errors of type "Access denied" (3.81%). It's recommended to use --cloudflare-bypass or a proxy
Roughly one site in twelve returned an ambiguous result, neither a clean hit nor a clean miss, because the site itself blocked the automated request. Those don’t show up in the “1 accounts” summary line at all. A quick scan’s headline number is a floor, not a complete picture, in both directions: it can overcount (the ChaturBate result) and it can undercount (anything hidden behind the errors above).
Reading a real run against your own handle
Run it against a username you’ve actually used, ideally one you’ve reused across more than one service, and treat every result as a lead rather than a fact:
- Open every link it reports. A dead or generic landing page at that URL is not confirmation.
- Check the profile content, not just the URL. Does it show information that’s actually yours: a bio, a post history, a profile photo you recognise?
- Note which services you’d forgotten you ever signed up for. This is usually the most useful part of the exercise, independent of anything Maigret gets wrong.
- For anything genuinely stale or abandoned, that’s a deletion candidate, covered in Part 6.
Maigret also supports --site SITE_NAME to check one platform at a time and --print-errors to see exactly which sites it couldn’t reach, both worth using once the broad scan has narrowed down what’s worth a closer look.
Part 4 moves from accounts to code: what a secret scanner finds when it’s pointed at your own public repositories, and what’s quietly sitting in a file’s metadata.