Social giveaway picker

Paste a list, or import authorized interactions from YouTube, Facebook Pages, Instagram, and Threads, then run reproducible prize draws.

Manual lists, raw OAuth code/token values, and imported-list snapshots remain transient browser state. Provider calls send the fields below to the GoGo backend, but it does not persist raw code, token, or import snapshots; it separately stores the pseudonymous OAuth metadata described below.

Every request includes locale. YouTube: videoUrlOrId, maxComments, optional keyword, locale. Facebook: auth-URL locale; Pages authCode and locale; post pageId, postUrlOrId, accessToken, includeReactions, locale. Instagram: auth-URL locale; authorization authCode or accessToken plus locale; comments mediaId, accessToken, maxComments, locale. Threads: auth-URL locale; profile authCode or accessToken plus locale; replies mediaId, accessToken, maxReplies, locale. Raw code/token values and import snapshots remain transient browser state and are not persisted by the backend; the OAuth metadata below is stored separately.

At OAuth start, the backend separately stores a pseudonymous HMAC nonce digest document key, provider, createdAt, and expiresAt; raw code, token, state, and nonce are not stored. The record becomes unusable after 10 minutes and enters asynchronous Firestore TTL deletion; physical deletion at minute 10 is not guaranteed.

  • Import 1 to 500 items per request.
  • Winner and backup counts are each 0 to 100 per prize and cannot exceed eligible participants in total.
  • Seed must be 1 to 128 characters.
  • Prize labels may contain at most 100 characters.
Main prize
eligible participants 3duplicates 0excluded 0

How to use this tool

Keep manual lists in the browser, or import available YouTube comments and interactions accessible to authorized Facebook Page, Instagram, or Threads accounts.

Run provably fair giveaways for social media contests on Instagram, YouTube, and Facebook. Uses cryptographic randomness to ensure unbiased drawing with built-in spam deduplication.

💡 3 Quick Steps to Get Started

1. Paste Candidates

Paste comment usernames or entry names (one per line).

2. Configure Draw Rules

Select winner count and toggle duplicate account filtering.

3. Draw Winners

Click Draw to reveal unbiased winners selected via cryptographically secure RNG.

When it helps

Keep manual and provider-imported participants separate, then dedupe, exclude, seed the draw, select winners and backups, and export CSV.

How it works

Enter one manual participant per line. YouTube comments are fetched by the backend with its configured YouTube API key; Facebook Page, Instagram, and Threads use content accessible to the authorized account. Only the active tab’s latest successful snapshot is drawn in seeded order.

Worked example

Example: import up to 500 YouTube comments, set 1 winner, 1 backup, and a seed of at most 128 characters, then download CSV.

Limits and data handling

YouTube comments are fetched by the backend with its configured YouTube API key. Facebook Page, Instagram, and Threads support only content accessible to the authorized account. Unconfigured, unauthorized, timed-out, or invalid responses show a safe localized error; raw provider messages are not displayed, and arbitrary public posts are not guaranteed. Browser requests for provider imports wait up to 20 seconds. The backend accepts up to 12 social import or authorization requests from the same source in 60 seconds. Successful imported lists are not cached by the backend; only the latest successful snapshot remains transiently in the current browser, and a failure creates no new snapshot.

Every request includes locale. YouTube comment import sends videoUrlOrId, maxComments, optional keyword, and locale. Facebook auth URL sends locale; Page loading sends authCode and locale; post import sends pageId, postUrlOrId, accessToken, includeReactions, and locale. Instagram auth URL sends locale; authorization loading sends authCode or accessToken plus locale; comment import sends mediaId, accessToken, maxComments, and locale. Threads auth URL sends locale; profile loading sends authCode or accessToken plus locale; reply import sends mediaId, accessToken, maxReplies, and locale. Manual lists are not sent. The backend separately stores a pseudonymous HMAC nonce digest document key, provider, createdAt, and expiresAt, never raw code, token, state, or nonce. The record becomes unusable after 10 minutes and enters asynchronous Firestore TTL deletion; physical deletion at minute 10 is not guaranteed.

Cryptographic RNG, Provable Fairness & Social Giveaway Guide

1. CSPRNG Randomness and Fisher-Yates Uniform Distribution

Provable giveaway integrity requires cryptographic randomness. We leverage hardware-seeded `window.crypto.getRandomValues()` mapped through the Fisher-Yates unbiased shuffle algorithm. This mathematically guarantees an exact uniform probability distribution of 1/N for every candidate entry.

2. Deduplication and Anti-Bot Fraud Filters

Built-in sanitization routines deduplicate spam accounts, enforce keyword validation rules, and allow weighted multi-ticket allocation models for loyal brand advocates.

3. Provable Transparency and Audit Logging

Documenting giveaway audits via cryptographic SHA-256 state hashes and continuous screen capture validates operational integrity, safeguarding brand reputations against rigging claims.

Authoritative Sources & Reference Standards

  • W3C Web Cryptography API Standard
  • Knuth, D.E.: The Art of Computer Programming, Vol 2 (Seminumerical Algorithms)
  • FTC Guides Concerning Use of Endorsements and Sweepstakes

FAQ

Social giveaway picker: What participant and prize limits apply?

Each provider import accepts 1 to 500 items. Winner and backup counts are each 0 to 100 per prize and cannot exceed eligible participants in total. Seeds are 1 to 128 characters and prize labels at most 100 characters.

Social giveaway picker: How are manual and API lists drawn?

Enter one manual participant per line; that list stays in the browser. API draws use only the active provider tab’s latest successful snapshot, never another provider’s data after a switch, replacement, or failure. Raw OAuth code/token values and imported-list snapshots remain transient browser state and are not persisted by the backend.

Social giveaway picker: Which provider content can be imported?

YouTube comments are fetched by the backend with its configured YouTube API key. Facebook Page, Instagram, and Threads support only content accessible to the authorized account. Unconfigured, unauthorized, timed-out, or invalid responses show a safe localized error; raw provider messages are not displayed, and arbitrary public posts are not guaranteed. Browser requests for provider imports wait up to 20 seconds. The backend accepts up to 12 social import or authorization requests from the same source in 60 seconds. Successful imported lists are not cached by the backend; only the latest successful snapshot remains transiently in the current browser, and a failure creates no new snapshot.

Social giveaway picker: What does each API request send?

Every request includes locale. YouTube comment import sends videoUrlOrId, maxComments, optional keyword, and locale. Facebook auth URL sends locale; Page loading sends authCode and locale; post import sends pageId, postUrlOrId, accessToken, includeReactions, and locale. Instagram auth URL sends locale; authorization loading sends authCode or accessToken plus locale; comment import sends mediaId, accessToken, maxComments, and locale. Threads auth URL sends locale; profile loading sends authCode or accessToken plus locale; reply import sends mediaId, accessToken, maxReplies, and locale. Manual lists are not sent. The backend separately stores a pseudonymous HMAC nonce digest document key, provider, createdAt, and expiresAt, never raw code, token, state, or nonce. The record becomes unusable after 10 minutes and enters asynchronous Firestore TTL deletion; physical deletion at minute 10 is not guaranteed.