Skip to content
RandoKit
EN

Giveaways

Running a Random Giveaway People Will Actually Trust

A practical checklist for running a fair giveaway: rules, entry lists, backup winners, and evidence, with a worked 412-entry Instagram example.

9 min readUpdated

Most giveaway complaints aren't about the draw itself โ€” they're about ambiguity that existed before anyone picked a winner. Who was actually eligible? Did the winner get a fair number of days to respond? Was the entry list padded with duplicate accounts? Fixing those questions before you draw is what actually makes a giveaway feel fair, more than which tool does the picking.

Write the rules before you collect a single entry

Publish your rules in the same post that announces the giveaway, not as an afterthought in a comment reply once people start asking. At minimum, cover:

  • Eligibility. Age, location, and account requirements (e.g. "must follow the account, public profiles only"). If you're excluding certain countries for shipping or legal reasons, say so up front, not after someone wins.
  • Entry window. An exact start and end time, including time zone. "Ends Friday" is ambiguous across time zones; "ends Friday 6pm EST" is not.
  • One entry per person. State how you'll handle duplicate accounts or repeated comments โ€” usually by counting only the first qualifying entry per person and discarding the rest.
  • How the winner is contacted. Direct message, email, or reply to their comment โ€” decide and say which, so a winner who doesn't check that channel knows to look.
  • What happens if they don't reply. Give a concrete deadline, like 48 hours, after which you move to the next backup winner. Without this, a giveaway can stall for weeks waiting on one unresponsive account.

Build a clean entrant list

A messy list is where most "was this rigged?" accusations come from, because a name that shouldn't have qualified ends up in the pool, or a real entrant gets dropped by accident. Before you draw:

  1. Export the comments or entries into a plain list, one entrant per line. Most platforms let you copy comment text out manually for smaller giveaways, or use a comment-picker export for larger ones.
  2. Deduplicate by account, not by comment text. The same person commenting five times with slightly different wording ("me!", "me please", "pick me") is still one entrant โ€” keep their first comment and discard the rest.
  3. Watch for duplicate spellings and near-identical handles (e.g. an account and an obvious near-copy of it), which is a common sign of someone trying to enter twice under a second account.
  4. Remove obvious bot accounts โ€” no profile picture, no posts, generic usernames with long number strings โ€” if your rules stated bot entries don't qualify.
  5. Once the list is clean, paste it into the random winner picker or a wheel of names, one name per line, and keep a copy of that final list somewhere before you draw.

Drawing one winner, or several, in one pass

If you're giving away multiple identical prizes, draw all the winners in a single run rather than redrawing the tool separately for each prize. Drawing N unique winners in one pass guarantees no one is picked twice by accident, and it produces one clean result you can publish all at once instead of a series of separate posts that are harder to verify against each other.

Draw backup winners in the same run

Decide up front how many backups you want โ€” two is typical for a single-prize giveaway โ€” and draw them in the same session as the main winner, from the same entrant pool, with the winner removed before the backups are drawn. This matters for two reasons. First, it means you don't need to touch the entry list again days later when the winner goes quiet, which is exactly when memory of who was excluded gets fuzzy. Second, drawing everyone at once and publishing the full ordered result (winner, backup 1, backup 2) up front is much harder to second-guess than announcing backups one at a time as you need them, because the whole sequence was fixed before you knew whether you'd need it.

Evidencing the draw

A skeptical audience โ€” and giveaways attract skeptics, because a free prize is worth arguing about โ€” will want more than your word that the draw was fair. A few things make a real difference:

  • Screen-record the draw. A short recording showing the pasted entrant list, the draw happening, and the result, is the single most convincing piece of evidence you can post.
  • Export and publish the result list. Most pickers let you export the outcome as a .txt or .csv file. Posting that alongside the winner announcement lets anyone check their own name was in the pool.
  • Publish the entrant count and timestamp. "412 entries, drawn Friday 6:05pm EST" is a concrete claim someone could in principle check against the comment count at that time, which makes it more credible than a vague "drew a winner from everyone who entered."

What a browser-side draw can and can't prove

A tool that runs entirely in your browser, like RandoKit's, uses

crypto.getRandomValues()
with rejection sampling rather than a weaker source, and nothing about the list or the result is sent to a server โ€” see how randomness works for the mechanics. What it cannot do is prove to someone watching after the fact that you didn't edit the entrant list before you hit draw, or that the recording wasn't re-done after a first attempt you didn't like. That's a limitation of any self-run draw, not just a browser-based one โ€” a printed name-in-a-hat draw has the exact same trust gap unless it's witnessed. The fixes are procedural, not technical: publish the entry list before you draw, record the draw unedited and post it in full, and pick a consistent, disclosed process every time so your audience learns to expect it.

Worked example: 412 Instagram comments, 1 winner, 2 backups

  1. Rules were posted with the giveaway: one entry per account, entries close Friday 6pm EST, winner contacted by DM within 48 hours or a backup is drawn instead.
  2. At close, the post has 412 comments. Exporting and deduplicating by account (several people commented two or three times) brings the qualifying entrant count down to 387.
  3. Six accounts are removed as bots per the stated rules (no posts, no profile picture, numeric usernames), leaving 381 entrants pasted one per line into the random winner picker.
  4. Draw 3 unique winners in one run: the pool returns one winner and two backups, in that order.
  5. Screen-record the draw from paste to result, export the result list, and post: "381 qualifying entries, drawn Friday 6:05pm EST" along with the winner's handle and the recording.
  6. DM the winner immediately. If there's no reply within 48 hours, move to backup 1 using the same result list โ€” no new draw needed, since it was already fixed at the time of the original recording.

A neat side effect: because a number can stand in for a person on a de-duplicated, ordered list, some creators cross-check by numbering the final entrant list and pulling the corresponding position with a random number generator instead of a name-based picker, then matching the number back to the list publicly. Either approach is fine as long as the list is fixed and published before the draw. For more on how to structure winner-plus-backup draws so nobody in the pool can be picked twice, see picking names without repeating winners, and for the underlying randomness question, see Math.random() vs crypto.getRandomValues().

Next step

Write your rules before you open entries, keep your entrant list clean and exported before you draw, and pull your winner plus backups in a single recorded run. The draw itself takes seconds โ€” the trust is built in the steps before and after it. When you're ready, paste your cleaned list into the random winner picker and run the draw.

Tools used in this guide