# Bulk list verification guide

URL: https://email-validation.org/docs/bulk/
Updated: 2026-10-20

> Documentation index: https://email-validation.org/llms.txt

Upload a CSV, XLSX or TXT file of up to 1,000,000 rows in the dashboard, see what it will cost, follow the
progress and download the results. Files and results are deleted automatically 30 days after
upload (a list that finishes in its last day keeps its results for 7 days after it finishes).

## 1. Prepare the file

- **CSV:** any columns; one of them holds the addresses. A header row is optional.
- **XLSX:** the dashboard converts the sheet you pick to CSV in your browser before uploading it.
- **TXT:** one address per line.
- Up to 1,000,000 rows, 512 columns and 1 GB per file. A single row may not
  exceed 64 KB.

You do not need to clean the file first: duplicates are removed for you and malformed addresses are answered for
free.

## 2. Upload and pick the column

Open **Bulk lists** in the dashboard and drop the file (or click to choose it). We show the first rows and detect the
column with the addresses; change it if we guessed wrong. The file is read with the separator the preview shows
(comma, semicolon, tab or `|`).

## 3. Check the cost and start

After a short analysis you see the number of rows, unique addresses, duplicates and malformed addresses, and the
number of credits the job needs: one per unique address that still needs a check. Start the job when you are ready.
If your balance is too low, buy a pack: the job waits and starts once the credits are there.

## 4. Follow the progress

The job page shows how many addresses are done and the counts per status as they come in. Large lists take a while;
you can close the page and come back. Every unique address is checked once, so a job finishes as soon as the last
check returns; results that end `unknown` are free. You can also get an email or a [webhook](https://email-validation.org/docs/webhooks/) when the
job ends: every endpoint subscribed to `bulk.completed` or `bulk.failed` is notified.

## 5. Download the results

When the job is complete, download the results as CSV or XLSX:

- **All rows** with your original columns plus ours, or only some statuses (for example deliverable and risky).
- **Original columns** or **email only**.
- **Formula protection** (on by default) stops spreadsheet apps from running cells of your file that start with
  `=`, `+`, `-` or `@`, also where a comma, semicolon, tab or line break inside a cell would start a new cell in a
  spreadsheet set to another list separator.

Our columns follow yours in every row. A row with fewer cells than the first row of the file gets empty cells, so
our columns always sit under their headers; a row with more cells keeps them all.

Our columns:

| Column | Meaning |
|---|---|
| `ev_status` | Status: deliverable, undeliverable, risky or unknown. |
| `ev_reason` | Reason for the status. |
| `ev_action` | Recommended action. |
| `ev_free_email` | true when the domain is a free consumer mailbox service. |
| `ev_role_account` | true for team or function addresses. |
| `ev_disposable` | true for throwaway inbox services. |
| `ev_catch_all_domain` | true when the domain accepts mail for any address. |
| `ev_did_you_mean` | Suggested correction for a likely typo. |
| `ev_mx_found` | true when the domain publishes mail records. |
| `ev_mx_record` | Preferred mail server of the domain. |
| `ev_smtp_provider` | Mail provider of the domain (our list; `other` when unnamed). |
| `ev_domain_age_days` | Domain age in days, when known. |

What each status and reason means: [statuses and reasons](https://email-validation.org/docs/statuses/).

## Cost

You pay one credit per unique address with a `deliverable`, `undeliverable` or `risky` result. Duplicates,
malformed addresses, test addresses and `unknown` results are free: credits held for them are returned when the job
ends. Cancelling a job returns the credits for work not yet done. A file that cannot be read fails for free; if a job
fails after its addresses were checked, those checks are charged like a cancelled job.

## Limits and storage

| | Dashboard | API |
|---|---|---|
| Formats | CSV, XLSX, TXT | CSV, plain text, JSON list |
| Largest file | 1 GB | 100 MB, or 100,000 addresses (4 MB) as JSON |
| Rows per file | 1,000,000 | 1,000,000 |
| Uploads in progress at once | 3 | – |
| Stored files (before your first purchase) | 2 GB, 2 jobs waiting to start | same |
| Stored files (after a purchase) | 20 GB | same |
| Kept for | 30 days after upload | 30 days after upload |

A list that fails or is cancelled deletes its file at once, and the file stops counting against your storage. You
can also delete the upload of a failed, cancelled or expired list yourself.

To automate lists, use the [bulk jobs API](https://email-validation.org/docs/api/bulk/).
