Skip to main content

Winner Picker

Winner Picker

Winner Picker picks giveaway winners from a post on X in a way anyone can check afterwards. Paste a post, collect everyone who reposted, quoted or replied, filter them with your rules, and draw winners with public randomness from drand. It is a web tool at xcrop.io/winner-picker, not an API endpoint, and it uses the same credit balance as the API.

⚠
Likes cannot be used. X stopped showing who liked a post in 2024, so no tool can list likers reliably. Winner Picker counts reposts, quotes and replies.

Step by Step

  1. 1

    Paste the post. Paste the link of your giveaway post on X. We load the post and its repost, quote and reply counts.

  2. 2

    Check the cost. You see a free estimate before anything is collected. The estimate is what the whole list costs: there is no option to collect only part of it.

  3. 3

    Collect entrants. We list everyone who reposted, quoted or replied, merged into one row per person with the actions they took. Credits are charged here, only for the people actually returned.

  4. 4

    Set the rules. Pick the conditions entrants must meet. The eligible count and the reason each person was excluded update as you change them.

  5. 5

    Draw. The eligible list is sorted, fingerprinted and committed together with your rules and a drand round a few seconds in the future. When that round is published, its random value picks the winners.

  6. 6

    Reveal. The winners are revealed one by one. If a follow rule is on, only the picked entrants are checked, in draw order.

  7. 7

    Publish and share. Publish a public result page, copy its link or post the result on X with a prefilled message. You can re-roll a winner who never claims; the page keeps the history.

  8. 8

    Verify. Anyone can press Verify on the result page, or run the standalone script on the proof file and the eligible list.

✦
The Sample data button runs the whole flow on 350 made-up entrants without an account. The entrants are generated and do not exist on X, while the rules, the drand round and the proof work exactly as they do on a real post. Nothing is charged or saved.

Login and Pricing

A real post needs a signed-in XCROP account (email code, Google or GitHub). Credits come from your plan allowance first, then from top-up credits.

Collecting entrants
10 credits per collected entrant, minimum 10 credits per collection
Cost estimate
Free
Rules, draw, re-rolls, publishing
Free
Follow checks on winners
Free
When you pay
Once, when the collection finishes. A canceled or failed collection costs nothing.
Errors
Nothing is charged when the collection fails. If nobody can be listed, the charge is 0.
Opening the same post again
Free for 24 hours after your paid collection: the page offers to reopen the same list. Collect fresh data to pay for a new one.
Refunds
None. Credits spent on a collection are not returned.

The estimate is an upper bound: the sum of the repost, quote and reply counts shown on the post. The real charge covers only the people we actually collected, which is usually fewer, because someone who reposted and replied counts once and deleted or protected accounts drop out. For example, 300 collected entrants cost 3,000 credits, and the free Starter allowance of 5,000 credits a month covers about 500 entrants.

X does not return every account behind its counters. It holds back replies and quotes from accounts it flags as spam or low quality, and it also counts replies deeper inside threads and deleted posts. None of those can be collected, by us or by any other tool: we tested with ordinary accounts and with a Premium+ account and got the same lists. So the reply and quote lists are often shorter than the counters. In one test X showed 114 replies and 35 repliers could be read. You only pay for the people we return.

To start, your balance must cover the full estimate shown as "Needed to start" (10 credits times the reposts, quotes and replies X shows, minimum 10). That way a post we can read completely never costs more than you prepared. The charge itself is only the entrants we actually collect, settled after collection, so it is usually lower: a post with 6,719 reposts, 6,569 quotes and 11,569 replies needed 248,570 credits to start and was charged 81,460. If your balance has dropped by the time the collection finishes, the finished list waits 24 hours: the page shows the exact amount due, top up on the pricing page and press Pay and open. Below the amount needed to start, the collection does not start and nothing is charged.

Big giveaways: background collection

Collecting runs on our servers, not in your browser tab. Press Collect and the page shows live progress: reposts, quotes and replies found so far, unique entrants, time spent and a rough time left. A post with 25,000 entrants takes several minutes. You can close the tab: the collection keeps going, shows up under "Collecting" in your draws, and Winner Picker picks it up again when you come back. Cancel stops it and charges nothing.

Every list is read to its end and every entrant we can read goes into the draw, up to a safety limit of 200,000 entrants per collection. There is no option to collect only part of a list, because that would leave out whoever came after the cut. If any list stopped early for another reason (that limit or X failing to answer), or X served fewer than 80% of the quotes or replies its counter shows, the result page and your history show "Incomplete list" with the reason, for example "X returned 5,188 of 11,569 replies". Both lines come from our stored copy of the collection, so a host cannot hide them.

If X stops answering for several minutes, the collection stops without a charge and keeps what it already read: press Retry and it continues from the same place. If your balance does not cover the price when it finishes, the finished list waits for 24 hours: top up, then press Pay and open, and nothing is collected again.

Exports

You can download every entrant, the eligible list or the winners as CSV or XLSX, plus the proof as JSON. Entrant files have these columns:

id, username, name
X user id, handle and display name
verified, followers
Whether X shows a check next to the name (blue, gold or grey) and the follower count, both at collection time
retweet, quote, reply
Which actions the person took
quote_text, reply_text
First quote and first reply, cut to 500 characters, line breaks flattened
wallet_evm, wallet_sol, wallet_ton, wallet_sui, wallet_tron, wallet_btc
First address of each chain found in the reply or quote, in full. One column per chain, filled whether or not the draw required that chain
created_at, profile_url
Account creation date and profile link
rank, status
Winner files only. Status is winner, reserve, skipped_not_following or replaced_by_reroll

Text cells are guarded against spreadsheet formulas, and the XLSX file contains plain values only.

Your draws

Every real draw is saved to your account (sample draws are not). Find them at /winner-picker/history, in the Dashboard under the Winner Picker tab, or with the History button on Winner Picker, which appears once you have a draw. Each draw has a private page only you can open, where you can publish it, share it, re-roll a winner and download the winners file, the eligible CSV and the proof again. The winners file includes full wallet addresses and reply texts, and you can download it again at any time.

Left before the reveal? The draw shows as Not finished. Open it and press Finish the draw: the server takes the locked list and the public drand round and computes the same winners the reveal would have shown. With a follow rule it checks the next picks on X, within the normal free follow-check limits.

Privacy

The public result page shows the post, the winners (handle, name, avatar), the counts (entrants, reposters, quoters, repliers, eligible), the rules and the proof. It also offers the eligible list as a CSV with user ids and handles, because the verifier needs it. It never shows wallet addresses, reply or quote text, or follower counts of entrants. Wallets and texts are only in your own downloads; our server keeps reply and quote texts privately to re-check keyword, tag and wallet rules, and never publishes them. The page also says how many draws the host committed for the same post, before and after this one, and how many draws other accounts committed on it. Keep in mind that your rules, including the exclude list and the accounts winners must follow, are part of the public proof.

Limits

Collections
One running at a time per account, 6 started per 10 minutes. When many run site-wide, yours waits in a short queue
Cost estimates
30 per 10 minutes
Draws (commits) and publishes
30 per 10 minutes each
Accounts winners must follow
Up to 5
Follow lookups
Only for the picks of your draw, up to 2,000 per account per day
Entrants per collection
Everyone we can read, up to 200,000 (a capped or cut list is labeled on the result page)
Texts read per person
The first reply and the first quote. A wallet or tag posted only in a second reply is missed.

More in Tools

Full documentation with search: xcrop.io/docs