Twitter Giveaway Picker: Pick a Random Retweet Winner You Can Prove
Running a giveaway on X is easy. Picking the winners in a way your community believes is the hard part. Someone always asks whether the winner was a friend of the team, whether the host drew five times and kept the result they liked, or why a bot account with no profile photo walked away with the prize.
This guide covers how to pick a random winner from a post on X, how to filter out low-effort entries without bending the rules, and how to publish a result that anyone can check for themselves. We built Winner Picker for exactly this, so the steps below use it, but the ideas apply to any draw you run.
Why giveaway draws lose trust
Most giveaway complaints fall into three groups.
A fair draw needs an answer to all three: rules that remove obvious junk and are announced in advance, a list that is frozen before any randomness exists, and randomness that nobody (the host included) can choose.
What you can and cannot collect from X
Winner Picker lists everyone who reposted, quoted or replied to your post and merges them into one row per person, with the actions each one took.
Likes are not on that list. X stopped showing who liked a post in 2024, so no tool can list likers reliably. If your giveaway says "like and repost to enter," only the repost part can be checked. For future giveaways, ask for a repost, a quote or a reply.
Replies come up short more often than reposts. X's reply counter includes replies it hides from readers as low quality, replies deeper inside threads and deleted ones, and none of those can be read. In one of our tests X showed 114 replies and 35 repliers could be collected.
Very large posts can come back partial, because X does not always return every page of a long list. You get a warning when that happens, and you pay only for the people actually collected.
How to pick a random retweet winner, step by step
1. Paste the post and check the cost
Sign in at xcrop.io/winner-picker and paste the link to your post. You get a free estimate before anything is collected. The estimate is the worst case: the sum of the repost, quote and reply counters on the post. The real charge is usually lower, because someone who reposted and replied is one entrant, and deleted or protected accounts drop out of the lists.
The estimate covers the whole list. There is no option to collect only part of it, so the price you are quoted is the price of reading the post to its end. Leave it empty and everyone is collected (big posts take a few minutes and keep running if you close the tab).
2. Collect the entrants
Collection costs 10 credits per collected entrant, with a minimum of 10 credits per collection. Some examples at that rate:
The free Starter plan includes 5,000 credits a month, which covers a giveaway of about 500 entrants. If a collection fails, nothing is charged. Drawing, re-rolling winners, checking follows and publishing the result are all free. If you come back to the same post within 24 hours, you can reopen the list you already paid for at no cost.
Want to see the whole flow first? The "Sample data" button runs it on 350 made-up entrants, without an account and without charging anything.
3. Set the rules you announced
All rules are optional and off by default, except that the post author is excluded unless you untick it. The useful ones for keeping bots out:
And for giveaways with tasks:
Only switch on what you announced in the original post. A rule added after the fact is a quiet way of choosing who can win, even when the intention is good.
4. Draw
When you press Draw, three things happen in order:
5. Reveal, publish and share
The winners are revealed one by one. If a winner never claims the prize, you can re-roll that spot: the replacement is the next unused pick of the same sequence, no new random number is drawn, and the re-roll is recorded with its reason.
Publishing creates a public page at /winner-picker/r/<id> with the winners, the counts, your rules and the proof. "Share on X" opens a prefilled post with the winners and the link.
What is drand, and why use it?
drand is a public randomness network run by independent organizations, known as the League of Entropy. Every 3 seconds it publishes a new random value, signed jointly by the members. No single member can predict or bias the value, and anyone can check the signature against the network's public key.
That gives a giveaway two properties a private random number generator cannot:
The winners come from the drand value and the list fingerprint, hashed into a key. The key produces a stream of numbers that picks entrants one at a time. Numbers that would favor some positions are discarded and drawn again, so every eligible entrant has the same chance.
How to verify giveaway winners
Every published result can be checked in two ways.
On the result page. Press Verify now. Your browser downloads the entry list, fetches the drand round, checks its signature and recomputes the fingerprint, the commitment hash, the picks, the winners and any re-rolls. You get a pass or fail for each step.
Without our site. The docs include a short script with no dependencies. Save it as verify.mjs, then run it on the proof and the entry list:
node verify.mjs proof.json eligible.csv
It prints "ok": true when everything matches, plus a link to the same round on the drand network so you can compare the randomness yourself. The fairness section of the docs has the script and the full spec, detailed enough to write your own verifier.
What about re-rolling until the result looks good?
Every draw is saved on our server before its drand round exists, and the public page shows how many draws the same host committed for the same post, before and after the one that was published, plus draws other accounts committed on that post. "This was the only draw the host committed for this post" and "the host committed 7 draws" read very differently, and entrants can see which one applies.
The host cannot quietly trim the list either. Our server rebuilds the eligible list from its own copy of the collection and refuses to publish one that differs, and a re-roll can only add a replacement to the record, never rewrite earlier winners.
To be clear about the limits: a host could collect the post again to get a fresh list, and the page counts draws, not collections. Follow checks are done by our servers at draw time and recorded in the proof, but they cannot be proven with cryptography the way the draw itself can.
What the public page shows, and what it does not
The result page shows the post, the winners' handles, names and avatars, the counts (collected, reposters, quoters, repliers, eligible), the rules and the proof. It also offers the entry list as a CSV of user ids and handles, because verification needs it.
It never shows wallet addresses, reply or quote text, or entrants' follower counts. Those stay in the files you download as the host.
Finding a draw later
Every real draw is saved to your account. Open your draw history or the Winner Picker tab in the dashboard to see each one with its status. From a draw's private page you can publish it, share it, re-roll a winner, finish a draw you closed before the reveal, and download the winners file again. Wallet addresses stay in that file, so you can download it again later.
A checklist for your next giveaway
Open Winner Picker to run your next draw, or try the sample data first to see how the reveal and the verification work.
Frequently Asked Questions
How do I pick a random retweet winner on X?
Paste the post link into Winner Picker, collect the reposts, quotes and replies, set your rules and draw. The winners come from a public drand round, and the result page lets anyone re-run the draw.
Can a giveaway picker use likes?
No. X stopped showing who liked a post in 2024, so no tool can list likers reliably. Use reposts, quotes and replies as entry actions instead.
What makes a giveaway provably fair?
The entry list and the rules are locked before the random number exists, the random number comes from a public source nobody controls, and anyone can recompute the winners from the published data.
How much does it cost?
10 credits per collected entrant, with a minimum of 10 credits per collection. 300 entrants cost 3,000 credits. The estimate, the draw, re-rolls and publishing are free.
Why does the reply list have fewer people than the reply count on X?
X counts replies it hides from readers as low quality, replies deeper inside threads and deleted ones. Those cannot be collected by any tool, so the list is often well below the counter. You pay only for the people actually collected.
Where can I find a giveaway I drew earlier?
Signed in, open xcrop.io/winner-picker/history or the Winner Picker tab in your dashboard. Each draw has a private page where you can publish, re-roll and download the winners with their wallets again at any time.
One API for X (formerly Twitter) data: profiles, tweets, followers, search and real-time streams. Start free with 5,000 credits/month, no card required.