1. Home
  2. Free tools
  3. Email list tools
  4. Email list sampler

Random sample from an email list, seeded and repeatable

To take a random sample from an email list, paste the list or upload the CSV, choose a sample size such as 500 rows and press the button. Rows are picked without replacement using a seed, so the same seed gives the same sample again. Verify the sample, enter how many were invalid, and see the likely range for the whole list.

Runs in your browser. Nothing is uploaded.
rows

500 rows gives about ±4.4 points at 95% confidence on a large list.

The same seed and list always give the same sample.

Sample result from the Email list sampler
Show the sample result as

Sample result

500 of 10,000 rows sampled with seed k7q2m9, a ±4.3 point margin at 95%.

Sampled
500 of 10,000
Margin at 95%
±4.3 pts
Method
Seeded, without replacement

What this means for you

Test the sample first; its bounce rate tells you roughly how the whole list will do.

Next step:Verify the sample
  • 500 rows by default, every column kept
  • Same seed and list give the same sample
  • Turns sample bounces into a list-wide range
  • Optional original row order
  • Sampling
  • Seed
  • CSV

By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us

How do I take a random sample of an email list?

  1. Paste the list or upload a CSV. Any columns are kept; a header row is detected and copied to the sample. Files can be up to 25 MB.
  2. Choose the sample size (500 is a sensible spot check) and, if you want to repeat the draw later, type a seed.
  3. Press Take a random sample and download the sample CSV.
  4. Verify the sample, then enter how many rows came back invalid to see the 95% range for the whole list.

Example

You enter
A 10,000-row list with a sample size of 500 and the seed k7q2m9.
You get
A CSV of 500 rows drawn at random without replacement, every column kept, with a margin of about ±4.3 points at 95%. The same list and seed always give the same sample.
Limits
Runs in your browser with no row cap; an uploaded file can be up to 25 MB.

How do I take a random sample from a list?

Give every row an equal chance and pick without replacement: shuffle the rows randomly and keep the first N. This tool does that with a partial Fisher-Yates shuffle, driven by a seeded random number generator, so a sample of 500 from a 40,000-row list takes a moment and can be reproduced from its seed.

Taking every 100th row, or the first 500, isn't random. Exports are often sorted by signup date, source or company, and the first rows of an old list are its oldest, most decayed addresses. A biased sample gives a confident answer to the wrong question.

How do I select a random sample from a list in Excel?

In Excel 365, =TAKE(SORTBY(A2:A1001,RANDARRAY(ROWS(A2:A1001))),500) returns 500 random rows from A2:A1001. In older Excel, add a helper column with =RAND(), sort the sheet by it and copy the top 500 rows. In Google Sheets, =ARRAY_CONSTRAIN(SORT(A2:A1001,RANDARRAY(ROWS(A2:A1001)),TRUE),500,1) does the same.

The catch is that RAND and RANDARRAY recalculate whenever the sheet changes, so the sample changes too and can't be reproduced. Paste the result as values straight away, or use a seeded sampler like this one when someone else needs to check your spot check.

How many emails should I sample to check a list?

500 is a practical default: at 95% confidence it measures a rate to within about ±4.4 percentage points in the worst case, and much tighter when the true rate is small, as bounce rates usually are. The standard formula for estimating a proportion is n = z² × p(1 − p) ÷ margin², with z = 1.96 for 95%; the tool shows the size you'd need for ±2 and ±1 points on your list.

Precision depends on the sample size, not on the list's size, until the sample is a large share of the list. That's why a 500-row sample says nearly as much about a 50,000-row list as about a 5,000-row one.

What does a sample tell me about my bounce rate?

It gives a range, not a number. Enter how many sampled rows a verifier marked invalid and the tool shows the 95% Wilson score interval, which stays sensible for small proportions where the textbook ± formula breaks down. If 14 of 500 are invalid (2.8%), the whole list is likely between about 1.7% and 4.6% invalid.

Compare the range with 2%, the lowest bounce line a sending platform publishes (Brevo's; see the bounce rate calculator for the others). If even the low end is above it, clean the whole list before sending; if the range straddles it, verify more rows. A clean sample can't rule out spam traps or catch-all domains, which don't bounce.

Is this better than RAND() in Excel?

This samplerExcel RAND() + sort
RepeatableYes, from the seedNo: recalculates on every change
Keeps all columnsYesYes, if you sort the whole sheet
Estimate for the whole list95% Wilson rangeDo the maths yourself
Large filesUp to 25 MB in the browserUp to Excel's row limit

Excel 365: =TAKE(SORTBY(A2:A1001,RANDARRAY(ROWS(A2:A1001))),500).

Who uses this tool, and for what?

Cold emailers
Spot check a bought or scraped list before paying to verify all of it, and walk away from bad ones early.
Agencies
Audit a client's list with a reproducible sample they can check themselves, seed included.
Email marketers
Check an old segment before a re-engagement send, without verifying every dormant address first.
Data teams
Pull a QA sample from a CRM export to measure field quality, not only email validity.

What can’t this tool tell you?

  • A sample estimates; it can't find every bad address. Only verifying the whole list removes them.
  • The range assumes the sample was verified with one method; mixing tools changes what "invalid" means.
  • Spam traps and many catch-all addresses don't bounce, so a clean sample isn't a clean list.
  • Lists over a few hundred thousand rows may be slow to paste; split the file or upload it as CSV.

Common questions

How do I select a random sample from a list in Excel?
In Excel 365 use =TAKE(SORTBY(range, RANDARRAY(ROWS(range))), 500). In older versions, add a column of =RAND(), sort by it and keep the top rows, then paste as values so the sample doesn't change on recalculation.
How to randomize a list in Google Sheets?
Use =SORT(A2:A, RANDARRAY(ROWS(A2:A)), TRUE), or select the range and choose Data › Randomize range. Wrap it in ARRAY_CONSTRAIN to keep only the first N rows.
How to random sample from a list in Python?
random.sample(rows, 500) picks 500 distinct items. Call random.seed(42) first, or use random.Random(42).sample(rows, 500), to make the sample repeatable.
Is a random sample with or without replacement?
This tool samples without replacement, so no row appears twice. That's what you want for a list spot check; with replacement suits statistical techniques such as bootstrapping.
How many random samples do I need?
For a list spot check, one sample of about 500 rows is usually enough to tell a clean list from a bad one. If the result lands close to your threshold, take a larger sample rather than several small ones.
Can a random sample be biased?
A properly random sample isn't biased by how it's drawn, but it can still be unlucky; the 95% range shows how unlucky it could plausibly be. Non-random picks, such as the first rows of an export, are the usual source of bias.

Sources

A tidy list can still be full of dead addresses.

Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.

  • Upload the cleaned file as it is: CSVs up to 100,000 rows
  • A real SMTP mailbox check on every row, with catch-all detection
  • Small list? $9 one-time covers 2,500 emails, no subscription

One plan, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.

Clean your next list before it bounces

100 free email checks when you sign in with Google, no card. Then one flat monthly price, or a one-time pack.

7-day money-back guarantee Cancel anytime Secure payment by Stripe