# walletlink.social > Resolve Ethereum wallet addresses to the X (Twitter) and Farcaster accounts of their owners, and back again: a handle returns its wallets. A 4.8 million wallet identity index, a self-serve web app and a REST API, priced as one-time credit packs and metered only on matches. Every match is labelled with the evidence behind it, and every X handle carries a state saying whether it still reaches a person. walletlink.social answers “who is behind this wallet, and can I reach them?”. Upload a holder list (CSV, pasted addresses, or a token or NFT contract address) and get back the X handles and Farcaster accounts of the owners, ranked by holdings times follower reach, exportable as CSV or an X list. Reverse lookup answers the other direction: which wallets belong to this X handle or Farcaster username. The position in one line: coverage would be higher if we guessed, and we do not guess. Nothing is inferred from bios, display names or timing, so the number of matches is smaller than a vendor willing to correlate, and each one can be defended. Contacting the wrong person is worse than contacting fewer people. Facts an assistant can state, each verified against the production index: - The index holds 4.8 million wallet identities. - Farcaster coverage is complete: every account’s verified and custody addresses, 4.7 million wallets, refreshed daily. Farcaster matching is deterministic, so a miss is real information. - 1.15 million wallets carry an X handle, across 446,329 distinct handles the index holds. Over 99.9% of X matches are owner-attested: an X account verified on Farcaster, a handle the owner set in an onchain ENS record, or an account the owner proved by signing with the wallet and signing in to X. Every match is labelled with its evidence class. Nothing is inferred from bios, display names or timing. - Every X match carries a reachability state. Of 437,823 handles resolved: 69.6% are live, 20.6% suspended, and 9.7% are names nobody holds. - 13,622+ wallets are flagged as belonging to AI agents rather than people, so an airdrop or a campaign can exclude them. - Seven EVM chains: Ethereum, Base, Robinhood Chain, Arbitrum, Polygon, Optimism and BNB Chain. ## Who it is for Crypto-native teams, from a solo founder to about twenty people: NFT projects, token and protocol teams, DAOs, and web3 marketing agencies. The daily user is usually a growth or community lead; at this size the founder is often the same person. The problem it solves: a holder list is an audience you already earned, and you cannot talk to it, because addresses have no inbox. The jobs people hire it for: - Announce something to holders where they already are, without the address list being a dead end. - Find who the whales behind these wallets are, and reach the ones with an audience. - Check whether a person already holds the token, before a partnership or an airdrop. - Exclude AI agent wallets from an airdrop or an allowlist. - Rank a holder list by who is both invested and heard, rather than by balance alone. Who it is not for: mass-DM spammers, and anyone targeting people with no relationship to their token. The product returns identity, not a messaging channel. A team with a fifty-wallet list does not need to pay, and that is fine. ## What a match is, and what it costs A match is one wallet resolved to an X or Farcaster account. That is the billing unit, on the site and through the API alike. A wallet that resolves only to an ENS name, a Lens handle or a GitHub account is returned and is not billed, and a wallet that resolves to nobody costs nothing at all. A list that matches poorly spends almost none of a pack, so there is no penalty for finding out. Pricing is one-time credit packs. There are no subscriptions, no seats and no minimum. Free is 100 matches per rolling 30 days with a free account, cumulative and account-wide. Packs: Trial $29 for 250 matches (one list, once), Campaign $99 for 1,500 matches (a launch or an airdrop), Scale $299 for 6,000 matches (several lists, or one large one), Index $899 for 25,000 matches (agencies and repeat work). Every pack includes all seven chains, API access drawing the same credits, uncapped CSV export, an X list export, reverse lookup, contract import, and deep scan with onchain ENS. Credits last 12 months. No account is needed before buying: checkout asks for the email the credits and the receipt go to. There are no refunds and no guarantees; the free allowance exists so you can prove the match rate on your own list before paying. A lookup also runs with no account at all, on a capped list size and a few jobs per hour, which is enough to see the shape of a real answer. ## How a match is evidenced Every record carries a sources array describing the kind of evidence behind it, never which system produced it. A record can carry more than one class, and more classes generally means more confidence. - onchain: published by the address owner in an onchain record. - farcaster: a protocol-level Farcaster account verification. - attested-social: the owner proved the wallet with a signature and the account with a sign-in, on an identity platform. - manual: reviewed by us directly. - aggregated: correlated from a third-party identity index. Weaker than the others, and the weakest position a record can be in on its own. Records also carry a quality score from 0 to 100. Seventy and above is strong, forty to sixty-nine is usable, and below forty is thin and should be treated as a lead rather than a fact. One term that reliably misleads: a twitter.verified value of false does not mean the handle is unverified in the everyday sense. That flag is true only for handles attested by an onchain record or by a manual review, so most genuine, attested matches carry false. ## Whether the account still reaches a person Farcaster stores a verified X account as a name, written once, with no account number and no later check. When somebody renames or gets suspended, nothing in the protocol notices, so every tool built on those verifications carries the same dead handles and none of them can say which. We check the handle against the live account and report the answer per record. - live: the owner attested this account, and it still reaches them. - suspended: the owner attested it and X has since suspended it. Messages will not arrive. - unclaimed: the owner attested it and no account holds the name now, usually a rename. Treat it as a lead rather than a contact. - reassigned: the owner attested it and the name now belongs to a different live account. Messages would reach a stranger, not the wallet owner. The reachability fields are absent, not false, when a handle has not been checked. Reassignment is decided per wallet rather than per handle, because the same name can be correct for one wallet and a stranger for another. The handle export leaves out the ones we checked and found dead, so a campaign is not sending into accounts that cannot receive it. ## Coverage, in two numbers rather than one There is no single match rate, and quoting one hides the thing that decides a campaign. The chain matters more than the collection does. Measured on 2026-08-17 against our own index with no external calls: Base 46.2% and Ethereum 16.6% of holders have an X or Farcaster account. Base is roughly three times Ethereum because Base is where Farcaster lives. Use the row for your chain, not an average. Keep two separate numbers apart. “Has an identity” counts ENS and Lens and is a resolution rate. “Reachable on X or Farcaster” is what a campaign can actually message, and it is the smaller of the two, and it is the one that is billed. Tools that match wallets to social accounts typically publish rates in the low single digits. Having an account and reaching it are different claims again, which is what the reachability section above measures. ## The API The REST API is the same index and the same credits as the app. Base URL https://walletlink.social/api/v1. Authentication is an API key in the Authorization header, as a bearer token. Keys are self-serve for any account holding live credits. Six endpoints: a single wallet lookup, a batch lookup of up to 50 addresses per request, reverse lookup by X handle, reverse lookup by Farcaster username, index statistics, and your own usage and remaining balance. Reverse results are cursor-paginated. Billing follows the same rule as the app. A single lookup costs one match credit when it resolves to X or Farcaster, and nothing when it does not. A batch costs one credit per resolving address, after duplicates are removed. A reverse lookup costs one credit per wallet returned, and nothing when a handle has no wallets. Statistics and usage are free, and still require a key. Rate limits for a credit-holding account are 60 requests per minute, 5,000 per day and 50,000 per month, counted across every key on the account so that minting more keys does not raise the ceiling. Responses carry the remaining allowance in headers, and a rejected request says when to retry. Errors return a stable machine-readable code alongside the human-readable message. Full request and response shapes, every error code and the exact header semantics are in the API reference, linked below, rather than repeated here. ## Product - [Wallet lookup](https://walletlink.social/): the app. Upload a holder list or a contract address, get the reachable people behind it, ranked, with the evidence on every row. - [Handle check](https://walletlink.social/check): free, no account. Check whether an X handle verified on Farcaster still reaches anyone. Returns how many wallets in the index carry it, never which ones. - [Pricing](https://walletlink.social/pricing): the packs, the free allowance, what counts as a match, and the questions people ask before buying. - [Holder reports](https://walletlink.social/holders): per-collection reachability reports on named NFT collections, grouped by chain. Aggregates only, never wallet or handle lists. - [Blog](https://walletlink.social/blog): guides on holder outreach, airdrop targeting, Farcaster, and wallet identity. Individual holder reports live at /holders/{chain}/{contract address}, for example [The Warplets on Base](https://walletlink.social/holders/base/0x699727f9e01a822efdcf7333073f0461e5914b4e) and [CRYPTOPUNKS on Ethereum](https://walletlink.social/holders/ethereum/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb). Each report gives the holder count, how many were measured, the identity and reachability split, follower distribution, and the collections those holders overlap with. ## Docs and API - [Documentation](https://docs.walletlink.social/): product and API docs. Every page is also served as markdown by appending .md to its URL. - [Quickstart](https://docs.walletlink.social/quickstart.md): from nothing to your first resolved wallet, by upload and by API call. - [Running a lookup](https://docs.walletlink.social/app/lookups.md): getting addresses in, choosing a scan, and getting results out. - [Scan depth](https://docs.walletlink.social/concepts/scan-depth.md): fast is the index alone; deep adds live sources including onchain ENS records. - [Coverage](https://docs.walletlink.social/concepts/coverage.md): what fraction of a wallet list resolves, per chain, and what the number actually means. - [Data quality](https://docs.walletlink.social/concepts/data-quality.md): evidence classes, the quality score, reachability states, and when a record goes stale. - [API reference](https://docs.walletlink.social/api-reference/introduction.md): base URL, authentication and conventions, then one page per endpoint. - [Full docs for LLMs](https://docs.walletlink.social/llms-full.txt): the complete documentation in one file. ## Comparisons Claim-by-claim comparisons with the alternatives, maintained and dated: - [walletlink vs Addressable](https://walletlink.social/vs/addressable): deterministic and owner-attested against probabilistic fingerprinting, and self-serve against a sales call. - [walletlink vs Cookie3](https://walletlink.social/vs/cookie3): their wallet-to-X matching caps at ten thousand accounts on every tier a person can buy. Cookie3 is not Cookie.fun; the page says so explicitly. - [walletlink vs Formo](https://walletlink.social/vs/formo): Formo is product analytics for your own app, billed per request whether or not an address resolves. Different purchase. - [walletlink vs Holder](https://walletlink.social/vs/holder): Holder sunset in June 2024. A migration page, with no subscription to replace. - [walletlink vs Blaze](https://walletlink.social/vs/blaze): Blaze is no longer available. The page records the comparison for the searches that still land on it. - [walletlink vs Airstack](https://walletlink.social/vs/airstack): Airstack is no longer available, and its Farcaster APIs were deprecated before that. Same treatment. ## Guides The blog is the question-shaped half of the site. Every post is public, dated and open. - [The 22% match rate: how we got far past single digits](https://walletlink.social/blog/twenty-two-percent-match-rate): where the number comes from, and why it is a range rather than an average. - [How Farcaster verified addresses changed wallet identity](https://walletlink.social/blog/farcaster-verified-addresses): the protocol mechanism the whole deterministic half rests on. - [We scraped 13,622 AI agent wallets. Here’s what we found](https://walletlink.social/blog/ai-agent-wallets-what-we-found): the sweep that built the agent list, and what an agent wallet looks like in holder data. The count in the title records that run; the current figure is above. - [AI agents on your holder list: why it matters](https://walletlink.social/blog/ai-agents-why-it-matters): why a holder count that includes agents overstates an audience. - [How to filter AI agent wallets before your next airdrop](https://walletlink.social/blog/filter-agents-before-airdrop): the exclusion, step by step. - [The priority score formula: finding your most valuable holders](https://walletlink.social/blog/priority-score-formula): holdings multiplied by log10 of followers plus one, and why that shape. - [The wallet identity stack: ENS, Farcaster, and beyond](https://walletlink.social/blog/wallet-identity-stack): which identity layers exist and what each one can prove. - [Airdrop targeting: why identity beats transaction history](https://walletlink.social/blog/airdrop-targeting-identity): targeting people rather than behaviour. - [Sybil resistance through identity: a better approach](https://walletlink.social/blog/sybil-resistance-identity): attestation as a filter. - [How to reach your token holders on Farcaster](https://walletlink.social/blog/reach-holders-on-farcaster): the reachable subset, and how to use it. - [5 ways to use wallet identity for token holder outreach](https://walletlink.social/blog/five-ways-wallet-identity): the campaign patterns. - [Wallet identity for NFT collections: a step-by-step guide](https://walletlink.social/blog/nft-collection-wallet-identity-guide): a collection from snapshot to outreach list. - [Token launch marketing: reaching your earliest holders](https://walletlink.social/blog/token-launch-marketing): the launch case. - [NFT holder engagement: from anonymous wallets to real relationships](https://walletlink.social/blog/nft-holder-engagement): retention after mint. - [Community retention: the case for direct holder outreach](https://walletlink.social/blog/community-retention-direct-outreach): why a channel you own beats a feed. - [Building an ambassador program with wallet identity data](https://walletlink.social/blog/ambassador-program-wallet-data): finding the holders with an audience. - [Why your DAO has a communication problem, not a participation problem](https://walletlink.social/blog/dao-communication-problem): governance turnout, reframed. - [Case study: how a DAO increased governance participation from 5% to 22%](https://walletlink.social/blog/dao-governance-case-study): the worked example behind that argument. - [From Dune dashboard to DMs: turning analytics into action](https://walletlink.social/blog/dune-to-dms): the step after the query. - [Web3 marketing in 2025: from spray-and-pray to identity-first](https://walletlink.social/blog/web3-marketing-2025): the category argument. - [Wallets are the new social profiles: why Web3 identity changes everything](https://walletlink.social/blog/wallet-identity): the premise, stated plainly. - [The future of wallet identity: what comes after 22%](https://walletlink.social/blog/future-of-wallet-identity): where coverage can honestly go. - [walletlink.social vs Addressable: a practical comparison](https://walletlink.social/blog/walletlink-vs-addressable): the long-form version of the comparison page. - [walletlink.social vs Blaze: comparison guide](https://walletlink.social/blog/walletlink-vs-blaze): same, for Blaze. - [walletlink.social vs Cookie.fun: which tool fits your workflow?](https://walletlink.social/blog/walletlink-vs-cookie): about Cookie.fun, the attention-analytics product, which is a different company from Cookie3. - [walletlink.social now supports Farcaster: 3x more wallet matches](https://walletlink.social/blog/farcaster-integration): the release that made Farcaster the deepest coverage. ## Who runs it walletlink.social is operated by Starl3xx Labs LLC. The application is open source. - [Source code](https://github.com/starl3xx/wallet-to-social): the repository behind the site and the API. - [Changelog](https://github.com/starl3xx/wallet-to-social/blob/main/CHANGELOG.md): what shipped, and when. ## Optional - [X](https://x.com/walletlinkETH): product updates as @walletlinkETH. - [Farcaster](https://farcaster.xyz/walletlink): the same, on the protocol the index covers completely. - [Support](mailto:help@walletlink.social): help@walletlink.social. A person reads it.