Bingo Card Generator (3×3 to 7×7 + FREE)
Turn a one-item-per-line list (numbers, words, haiku, office jargon, etc.) into N×N (3–7) bingo cards — generate up to 100 cards at once with a single seed for reproducibility. Supports a centre FREE cell (odd sizes only) and TSV export. Perfect for company events, classrooms, conferences, book clubs, and icebreakers.
How to use
Paste an item list (one per line — numbers, words, haiku, office jargon, etc.), pick a size (N×N, 3–7) and a card count (1–100), and hit Generate to create N bingo cards at once. Toggle **center FREE** (odd sizes only) to place a 'FREE' label (custom text supported) in the middle. Provide a **seed** to make the result reproducible — handy for printing in advance, sharing identical cards, or auditability. **TSV export** lets you paste straight into Excel / Google Sheets; the **Print** button renders each card in a print-friendly layout. Use it for office video-call bingo, school activities, conference icebreakers, book clubs, and parties.
In depth
Bingo item lists carry the inside context of the room they come from
A meeting bingo card is a compressed record of a team’s internal culture. Items like ‘someone says let’s take this offline,’ ‘the slide deck hits 60 pages,’ or entries referencing specific colleagues by quirk or role are internal observations — sometimes candid, sometimes unflattering — that the participants would not want surfacing outside the group. Event bingo for company-wide activities may reference unreleased project names, organisational dynamics, or individual attendees by name. Book club or study group bingo can include spoilers or references that were shared in confidence.
Pasting that item list into an external bingo generator sends it to a server. Free services that grant themselves broad content rights in their terms of service can use, analyse, or train on submitted text. What feels like a harmless game input is, from the server’s perspective, a description of a private meeting or event.
The fairness case for local generation
Reproducible generation — using a seed so the same cards can be regenerated later — is particularly worth keeping local. If a seed and item list reach a third-party server, anyone with access to that server can reproduce every card that was generated, undermining any game’s fairness guarantee. The purpose of a seed is to let participants verify after the fact that no cards were modified; for that to mean anything, the seed and list should never leave the group.
Even without a seed, the shuffle result being deterministic in the browser means there is no randomness that could be manipulated by a remote service. The generator is the trust anchor, so it should be the tool the players can inspect.
Mulberry32 shuffle, browser Clipboard API, zero server involvement
This tool generates bingo cards using the Mulberry32 32-bit seeded PRNG, combined with a Fisher-Yates shuffle of the item list. Given a seed and list, the output is fully deterministic — identical across browsers and sessions. All of this runs in client-side JavaScript with no external dependency.
TSV export goes through the browser’s Clipboard API for the copy path and URL.createObjectURL on a Blob for the download path — no server involved. Generating 100 cards simultaneously keeps all intermediate state in browser memory. DevTools Network stays quiet throughout.
Meeting bingo works best when the list stays in the room
The value of meeting bingo comes from the frankness of the items — observations that participants share openly with each other but not with the outside world. This tool lets you put those items in without any of them reaching a server log or an analytics database. The print layout also goes through the browser’s own print dialog, so nothing additional leaves the device.
Mulberry32 plus Fisher-Yates: the algorithms behind reproducible cards
Mulberry32 is a compact 32-bit-state PRNG popularised by Tommy Ettinger around 2017. The transition function adds 0x6D2B79F5 to the state, mixes it through two Math.imul operations and three xor-shifts, and emits a single 32-bit unsigned integer. Its cycle length is 2^32 (~4.29 billion) — far more than enough for generating up to 100 bingo cards per session. The implementation is five lines of JavaScript. Using it instead of Math.random() matters because browser-provided Math.random() implementations differ across vendors and versions; the same seed produces different sequences in Chrome and Firefox. Mulberry32’s deterministic, portable behaviour is what makes the seed parameter meaningful as a fairness anchor.
Cell ordering on each card comes from a Fisher-Yates shuffle (also called the Knuth shuffle). The algorithm walks the array from the last index down to the first, and at each position i swaps the element with one drawn uniformly from indices 0..i. The result is mathematically unbiased — every permutation has equal probability — and it runs in-place in linear time. Generating 100 cards of 49 cells each finishes in milliseconds. Because the random draws come from Mulberry32, identical seed + identical item list reproduces the cards exactly, which is the property that lets participants verify after a game that nothing was tampered with.
Bingo rule variants: US 5×5, UK 90-ball, Italian tombola
Bingo as a game varies considerably by region and era. The 5×5 plus FREE format common in Japanese corporate events follows the US Bingo conventions, where balls are numbered 1–75 and each column gets a header letter (B 1–15, I 16–30, N 31–45, G 46–60, O 61–75). This tool does not assign numeric ranges per column; it shuffles any text items uniformly across the grid as a ‘theme bingo’ card, leaving numeric Bingo to a dedicated implementation.
UK-style Bingo (‘Eyes Down’, 90-ball) uses 9-column × 3-row tickets with numbers from 1–90 and resolves winners per line and per full ticket. Italian Tombola uses 90 numbers on 6×9 cards with staged wins like Cinquina (one line) and Tombola (full card). These commercial formats are regulated as gambling in most jurisdictions and require dedicated systems. The recreational use cases this tool targets — meeting bingo, book-club bingo, conference icebreakers — are well covered by N×N (3–7) text-based cards with an optional centre FREE cell for odd sizes. Clean the item list first with line-dedupe so the same slogan doesn’t appear in two squares, and on game day dice-roller can stand in for the ball cage with a 1d75 or 1d90 backed by Web Crypto’s uniform distribution.
FAQ
- Is my input uploaded?
- No. Everything runs in your browser — RNG, shuffle, and layout all happen locally. No external API.
- How many items do I need?
- An N×N card needs **N² items** without FREE or **N² − 1 items** with the center FREE. A 5×5 with FREE = 24 items; without FREE = 25. The tool flags an error if you're short. Generating N cards still requires only one item list — each card draws a different ordering from the same pool.
- Which size should I pick?
- **3×3** for quick mini-bingo, **4×4** for casual, **5×5** as the classic standard, **6×6 / 7×7** for conferences / longer events. Bigger sizes need more items.
- What's the FREE cell for?
- Traditional bingo puts a **FREE** mark in the centre, so a 5×5 only needs four hits in a row to win. We apply it on odd sizes (3 / 5 / 7) where a true centre cell exists; even sizes (4 / 6) skip it.
- What does the seed do?
- Same seed + same items → same cards. Leave it blank for a fresh draw each time. Use a seed when you want to (1) hand out identical cards to multiple participants later, (2) prove the draw wasn't tampered with, or (3) regenerate cards after losing the printout. Implementation: Mulberry32 32-bit seeded PRNG, with `seed + cardIndex` per card so each gets an independent stream.
- What's TSV export for?
- Paste it into Excel / Google Sheets and each cell lands in a spreadsheet cell. Multiple cards are separated by `# Card N` headers, so 'Text to Columns' splits them cleanly. For paper output, the Print button is a faster route.
How to verify nothing is uploaded
This tool never sends your input outside your browser. The pages below explain how it works, how to audit it, and how the site is run.
Related tools
Random List Shuffle (with team-split)
Paste a list (one item per line) and the Fisher–Yates algorithm shuffles it randomly. Provide a seed and the same input → same output (useful when you want to share or reproduce a team draw later). Optional N-per-team grouping and dedupe. Perfect for lotteries, seating, team formation, and random sorts.
Line sort — asc / desc / numeric / locale
Split the input by newline and sort the lines either ascending (A→Z) or descending (Z→A) using locale-aware Unicode comparison. Numeric runs (file1, file2, file10) sort naturally. Empty lines and the trailing newline are preserved. Works with mixed Japanese/ASCII text. Runs entirely in your browser.
Line dedupe — keep unique or extract duplicates
Split the input by newline and remove duplicate lines, keeping only the first occurrence of each line in original order. Catches non-adjacent duplicates as well (equivalent to `awk '!seen[$0]++'`). Runs entirely in your browser.
Dice roller — 2d6+3 / 4d6kh3 notation (Web Crypto, no server)
Roll TTRPG / board-game dice using familiar notation: 2d6+3, 1d20-2, 4d6kh3 (keep highest 3), 3d6+1d4-1, and more. Randomness uses the Web Crypto API (crypto.getRandomValues with rejection sampling) for an exactly uniform distribution. Comes with one-click presets (d4 / d6 / d8 / d10 / d12 / d20 / d100 / 3d6 / 4d6kh3, …) and an in-browser history of the last 20 rolls. Nothing is uploaded.