Unsubscribe link builder: add a personal unsubscribe link to every row of a CSV
In short: Upload a list, type your unsubscribe page and a secret, and download the file with a link column. Each link carries the address and a token your page can check. Limit: It writes links only; you must run the page that checks them and acts on them.
Upload a CSV or .xlsx file, or paste it with a header row. Pick the identifier column, type the https address of your unsubscribe page and a secret, then make the links. Each row gets a link holding its identifier and a 22-character token signed with your secret. You download the file and merge the link column into your emails.
Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. Check your list free nowSee pricing
Sample result
Four example rows give 3 personal links to https://example.com/unsubscribe; the blank row gets none and the repeated address shares a link.
- Links made
- 3
- Rows
- 4
- Repeated identifiers
- 1
What this means for you
A link says nothing about the mailbox; a check shows which addresses exist.
- Your page, your secret
- Signed token per row
- Same address, same link
- Nothing is sent
- Unsubscribe
- CSV
- Merge
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Links ready? Check the addresses before the send.
- Download the file, or use the check button under the result, which carries its addresses across.
- Upload or paste it at /verify. Every address gets a live mailbox check, and the first 100 email checks are free with a Google sign-in, no card.
How do I add an unsubscribe link to every row of a CSV?
- Upload the file as a CSV or .xlsx, or paste the cells with the header row first.
- Pick the identifier column, usually Email, and type your unsubscribe page address starting with https://.
- Type a secret of 8 or more characters and press the button to make the links.
- Download the file and use the Unsubscribe link column as a merge field in your emails.
Example
- You enter
- Four rows with Name and Email (one email blank, one repeating the first in capitals), the page https://example.com/unsubscribe, the secret sample-secret-1 and the parameters e and t.
- You get
- 3 links made, 1 row with no identifier and 1 repeated address that gets the same link as the first: https://example.com/unsubscribe?e=ava%40example.com&t=dgvkKgHUXL8wkuw_h6UE5e.
- Limits
- Runs in your browser; nothing is uploaded. It writes links only; your own page must check the token and act on it.
What is in each link?
Each link is your page address plus two parameters: the row's identifier, such as the email address, and a token. The token is the first 22 characters of an HMAC-SHA256 signature of that identifier under the secret you type, written in the URL-safe base64 alphabet. Two rows with the same address get the same link, whatever the capitals.
If you would rather keep addresses out of links, pick a contact ID column as the identifier. The token is made the same way.
What must your unsubscribe page do?
The page is yours; this tool does not host one. When it opens a link it should recompute the signature from the identifier with the same secret, compare it with the token, and only then add the address to your suppression list and stop mailing it. A link whose token does not match should change nothing.
The token shows that a link was made with your secret. It does not make the page safe on its own, so keep the secret off the page's public code and out of shared files. For one-click unsubscribe headers, see the List-Unsubscribe header generator.
Where does the secret go?
The secret is typed into this page and used by your browser's own cryptography to sign the links. It is not sent anywhere and not stored. Use a secret made for this job, because anyone who has it can write links your page will accept. Changing the secret later makes every earlier link fail the check.
Who uses this tool, and for what?
- Newsletter owners
- Merge a personal opt-out link into a send from a spreadsheet.
- Cold emailers
- Give every lead a link that adds them to your own suppression list.
- Agencies
- Prepare a client's list with signed links before it goes into a sending tool.
What can’t this tool tell you?
- It writes links only; you must run the page that checks them and acts on them.
- The token is only as safe as the secret you keep.
- It does not decide what your opt-out wording or timing must be.
- Only the first sheet of a workbook is read.
Common questions
- Does this tool host an unsubscribe page?
- No. It writes links to a page you run. Your page checks the token and adds the address to your suppression list.
- Is the token the same as the address in disguise?
- No. It is a signature made from the address and your secret. It cannot be turned back into the address, and it cannot be made again without the secret.
- What if two rows have the same address?
- They get the same link, and the preview counts them as repeated identifiers. Addresses are lowercased before signing; other identifiers keep their capitals.
- Can I add the token as its own column?
- Yes. Tick the box and the file gets an Unsubscribe token column beside the link, for sending tools that build the link themselves.
- Is my file or secret uploaded?
- No. The file is read in your browser, the links are signed there, and nothing is sent.
- Do I still need the unsubscribe wording in the email?
- Yes. The link is only the address; the email still needs its opt-out text and the other rules of the laws that apply to you. See the CAN-SPAM compliance checker.
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? Starter at $9/mo covers 2,500 emails a month, cancel anytime
Plans from $9 a month, 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.