Deliverability

List-Unsubscribe header checker

Validate List-Unsubscribe and List-Unsubscribe-Post headers against RFC 8058 one-click requirements, which Gmail and Yahoo enforce for bulk senders.

This checks syntax only. It never sends a POST to the endpoint, because a real POST would unsubscribe the recipient whose headers you pasted.

Result

Paste headers to check whether the message qualifies for one-click unsubscribe under RFC 8058, which Gmail and Yahoo require for bulk senders.

Instructions

How to use this tool

  1. 01Paste the List-Unsubscribe and List-Unsubscribe-Post header lines, or the full raw headers; the tool finds the two it needs.
  2. 02Check the verdict. One-click requires an https URI in angle brackets plus a List-Unsubscribe-Post header with exactly the value List-Unsubscribe=One-Click.
  3. 03Fix anything flagged, starting with the problems; the warnings are judgement calls.
  4. 04Test the endpoint yourself from a real mailbox. This tool validates syntax only, because sending a real POST would unsubscribe the recipient whose headers you pasted.

Background

What one-click unsubscribe actually requires

RFC 8058 one-click is two headers working together. List-Unsubscribe carries an https URL in angle brackets, and List-Unsubscribe-Post carries exactly the value List-Unsubscribe=One-Click. When both are present, the mailbox provider shows its own unsubscribe button and honors it by sending a POST to your URL with no page load, no login, and no confirmation step allowed.

A mailto entry alone stopped being enough when Gmail and Yahoo made one-click mandatory for bulk senders in 2024. Keeping a mailto beside the https entry is still good practice, since it is the fallback some receivers use when the endpoint is down, but it does not satisfy the requirement by itself.

Background

Why the native button protects your sender reputation

When unsubscribing is one click in the mail client, people who no longer want your mail leave quietly. When it is not, a meaningful share of them press the spam button instead, because it is the easier button, and each of those reports damages the domain reputation every other recipient's inbox placement depends on.

The endpoint side is on you: it must accept the POST and process it promptly without asking the recipient to log in, pick reasons, or confirm. Gmail expects the removal to happen within two days. Treat the POST as the whole transaction, not the start of a flow.

FAQ

Frequently asked questions

Is List-Unsubscribe required by Gmail and Yahoo?

For bulk senders, yes. Since 2024 both require one-click unsubscribe under RFC 8058 for marketing and other bulk mail: an https List-Unsubscribe entry plus the List-Unsubscribe-Post header. Pure transactional mail is generally exempt, but the header costs nothing there either.

Is a mailto unsubscribe link enough?

Not for one-click. RFC 8058 requires an https URI that accepts a POST. A mailto entry is worth keeping alongside it as a fallback, but on its own it does not satisfy the Gmail and Yahoo requirement.

What must the value of List-Unsubscribe-Post be?

Exactly List-Unsubscribe=One-Click. That literal string is the signal that the URL accepts an automated POST. Receivers tolerate case variants in practice, but there is no reason to ship anything other than the verbatim RFC value.

Why does this tool not test my unsubscribe endpoint?

Because a real POST to a real unsubscribe URL removes the subscriber it belongs to. Syntax can be checked safely; the endpoint has to be tested from a mailbox you control, by sending yourself a message and using the provider's unsubscribe button.

Preferences beyond the unsubscribe button

Courier gives every recipient a hosted preference page with per-topic opt-outs, so leaving one list does not have to mean leaving all of them.

Explore preferences