# Excel Add-in for Email Validation

URL: https://email-validation.org/docs/guides/excel-add-in/
Updated: 2026-11-10

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

The Excel add-in checks email addresses in Excel with your API key. It adds a cell function, `=EV.VALIDATE(A2)`, that
returns an address's status and reason, and a task pane that validates a whole column: up to 50
addresses as single checks, more as one [bulk list](https://email-validation.org/docs/bulk/).

**Status: not available to install yet.** The add-in is not in AppSource yet, and its files are not hosted yet, so
it cannot be added from Excel today. Until then, the only way to run it is to sideload it as a developer from its
source code, which is not published either ([steps below](#sideload)). To validate a workbook today, upload the XLSX
file as a [bulk list](https://email-validation.org/docs/bulk/) in the dashboard, or use the [API](https://email-validation.org/docs/api/validate/).

This page describes the add-in as it is built, so you know what to expect when it is listed.

## The cell function

`=EV.VALIDATE(A2)` returns the address's [status](https://email-validation.org/docs/statuses/) and its reason, spilled into two cells: `valid`
`accepted`, `invalid` `no_mailbox`, and so on. Keep the cell to its right empty, or Excel shows `#SPILL!` until it is
cleared. An empty cell gives two empty cells and sends nothing.

When something goes wrong, the status is `error` and the reason says what to do, such as "Add your API key: Home →
Email validation → Settings." or "Your account is out of credits." Errors are not remembered: after fixing the cause,
enter the formula again or press **Ctrl+Alt+F9**.

Formulas that arrive together, such as a filled-down column, are sent as one batch: each address once, at most
20 checks started a second and at most 100 waiting at once, within the
[rate limits](https://email-validation.org/docs/rate-limits/) of an account without a purchase.

### Recalculation and charges

- **While the workbook is open, an address is never charged twice.** Every result is remembered in memory, by
  address, until the workbook is closed. A recalculation, a copied formula or another cell with the same address is
  answered from memory, for free.
- **A reopened workbook checks again.** When the workbook is closed, the memory is gone. When Excel recalculates the
  formulas after the workbook is reopened (a full recalculation with **Ctrl+Alt+F9**, or a file last calculated by
  another Excel version, which Excel recalculates on open), every `=EV.VALIDATE` checks its address again, and that
  check is charged again.
- **To keep results for good**, copy the cells and paste them as values, or use
  [Validate selected column](#column), which writes values instead of formulas.
- `unknown` results (free) and errors are not remembered, so a later recalculation checks them again.
  **Settings → Forget remembered results** empties the memory.

## Validate a column

1. Select the column of addresses, or some of its cells, and click **Validate selected column** in the task pane
   (**Home → Validate emails**).
2. If the first cell is a header such as `Email` or `Email address`, the two result columns get the headers
   **Validation status** and **Validation reason**. Results go into the two columns to the right of the addresses.
3. The pane shows the plan: how many rows get a result, whether they are checked one by one or as one bulk list, and
   the most the run may cost. Click **Start**.

- **Up to 50 addresses to check** are single checks. **More** go as one bulk list, of at most
  100,000 addresses (4 MB); for more, upload the file in the dashboard.
- **A list is never paid for twice.** The add-in keeps the list's id (never an address) until its results are
  written, so if Excel closes or the connection drops, the next run on that column collects the same list instead of
  creating a new one.
- **Your data is safe.** Rows that already hold a status are skipped and an address in several rows is checked once.
  Other data in the result columns is never overwritten without asking: the button then reads **Overwrite and
  start**. A row you edit during the run is left alone.
- **Cancel** before the list starts deletes it, with nothing charged. After the start, it stops the list: checks it already did
  are charged, its unused credits are returned.

When it is done, the pane shows the counts per status and the credits used.

## Try it for free

**Add test addresses** adds a sheet of addresses on `sandbox.email-validation.org`. Each [test address](https://email-validation.org/docs/test-addresses/)
returns the result its name says (`accepted@sandbox.email-validation.org` is `valid`, `no_mailbox@sandbox.email-validation.org` is
`invalid`, and so on), costs nothing and contacts no mail server.

## Settings

- **API key.** Create one on the [API keys page](https://email-validation.org/app/api-keys/) with the permissions **Validate addresses**, **Bulk
  lists** (for columns of more than 50 addresses) and **Read balance and usage** (for **Test the key**).
  Give it a [daily credit cap](https://email-validation.org/docs/authentication/#limits) so the workbook can never spend more than you expect. A
  key with allowed origins must list the origin the add-in is served from, or it is refused.
- **Where addresses are checked**: US or EU (see [Region](#region)).
- **Test the key** checks the key and shows your balance. **Forget remembered results** empties the cell function's
  memory.

## Costs

1 credit = 1 validated address, as with any [validation request](https://email-validation.org/docs/api/validate/). These are free:

- Every result with status unknown
- Checks that exceed their time limit (10 seconds by default; unknown, reason timeout)
- API errors
- Malformed addresses rejected before any check
- Test addresses on the sandbox domain

The pane states the most a column may cost before **Start** and the credits used after. Results remembered while the
workbook is open, copied from other rows or already in the sheet are never sent again; formulas in a reopened
workbook are, as [above](#recalc). Prices and packs are on the [pricing page](https://email-validation.org/pricing/).

## Region: US or EU

**Settings → Where addresses are checked** chooses `https://api.email-validation.org` (US) or `https://api-eu.email-validation.org` for
[EU data residency](https://email-validation.org/docs/eu-data-residency/). Both use the same keys and credits, and the choice applies to the cell function and
the task pane.

## Privacy

- **Your key** is kept in the add-in's own storage on your computer, never in a workbook, and is sent only to the API
  host you chose. Settings show only its last four characters.
- **Addresses** are sent only to that host, in the body of a `POST` request (never in a URL), and only when you
  validate a column or a cell holds `=EV.VALIDATE`. The add-in logs nothing, keeps results only in memory and sends
  nothing anywhere else.
- **Bulk lists** are kept and deleted as the [privacy policy](https://email-validation.org/legal/privacy/) says for bulk lists.

## Requirements

Excel on the web, or Microsoft 365 or Office 2021 or later on Windows and Mac (the SharedRuntime 1.1 requirement set).
Older versions of Excel do not offer the add-in.

## Sideload it (developers)

These steps are for developers who have the add-in's source code (the `integrations/excel` folder of our source),
which is not published yet. Customers will add the add-in from Excel once it is in AppSource.

Office loads an add-in only over HTTPS, so you serve its files from your own computer. With Node 24, from the root of
the source:

```bash
npx office-addin-dev-certs@3.0.1 install      # once: a localhost certificate this computer trusts
node integrations/excel/scripts/manifest.ts   # writes integrations/excel/dist/manifest.xml for https://localhost:3000
node integrations/excel/scripts/serve.ts      # serves the add-in at https://localhost:3000 (Ctrl-C stops)
```

Open `https://localhost:3000/` in a browser once: it must load without a certificate warning. Keep the server
running while Excel uses the add-in.

- **The certificate** trusts a development certificate authority on the whole computer:
  `npx office-addin-dev-certs@3.0.1 uninstall` removes it when you are done.
- **Use a key made for testing**, with a daily credit cap: other development add-ins served at
  `https://localhost:3000` share the add-in's storage. If the key has allowed origins, add `https://localhost:3000`.

### Excel on the web

1. Open a workbook in Excel on the web in the same browser.
2. **Home → Add-ins → More Add-ins** (or **Advanced…**) → **My Add-ins** → **Upload My Add-in**.
3. **Browse…** → `integrations/excel/dist/manifest.xml` → **Upload**.
4. **Home → Validate emails** opens the pane.

### Windows

1. Run the three commands above on the same computer.
2. Make a folder (for example `C:\EVAddin`), share it (**Properties → Sharing → Share…**), and copy
   `integrations\excel\dist\manifest.xml` into it. Note its network path (`\\<computer name>\EVAddin`).
3. In Excel: **File → Options → Trust Center → Trust Center Settings… → Trusted Add-in Catalogs**. Put the network
   path in **Catalog Url**, click **Add catalog**, tick **Show in Menu**, click **OK** and restart Excel.
4. **Home → Add-ins → More Add-ins** (or **Advanced…**) → **Shared Folder** → **Email validation** → **Add**.

### Mac

1. Run the three commands above on the Mac (macOS asks for your password to trust the certificate).
2. Copy the manifest into Excel's add-in folder, then quit and reopen Excel:

   ```bash
   mkdir -p ~/Library/Containers/com.microsoft.Excel/Data/Documents/wef
   cp integrations/excel/dist/manifest.xml ~/Library/Containers/com.microsoft.Excel/Data/Documents/wef/
   ```

3. Open a workbook: **Home → Add-ins** (or **Insert → Add-ins → My Add-ins**) → **Developer Add-ins** →
   **Email validation**.

## Related

- [Bulk lists](https://email-validation.org/docs/bulk/): upload an XLSX or CSV file and download the results
- [Google Sheets template](https://email-validation.org/docs/guides/google-sheets/) for spreadsheets in Google Sheets
- [Statuses and reasons](https://email-validation.org/docs/statuses/): what each value in the result columns means
- [Errors](https://email-validation.org/docs/errors/), [rate limits](https://email-validation.org/docs/rate-limits/) and [test addresses](https://email-validation.org/docs/test-addresses/)
