Email Footer Law Lint (CAN-SPAM · CASL · DDG)

Lints HTML email templates for the footer duties senders get fined for: CAN-SPAM postal address and 10-business-day opt-out, CASL 60-day window, and German 5 DDG, which replaced 5 TMG on 2024-05-14. Runs entirely in your browser — nothing is uploaded.

Same engine as the VS Code extension, byte for byte.

Get the complete version $29

This page is the working piece. The full pack has everything below.

Fourteen checks on an HTML email footer: CAN-SPAM postal address and 10-business-day opt-out, CASL's 60-day window, and German 5 DDG, the statute that replaced 5 TMG on 2024-05-14.

Outside counsel reads one email footer against CAN-SPAM, CASL and 5 DDG at about $300 an hour, and reads it once.

Buy the full version — $29

· ReadyStack

Worked example

Real numbers from this tool, line by line.

Email Footer Law Lint

Twelve findings — nine of them errors — came out of one 30-line email footer, written by a Berlin SaaS team for its September newsletter and shipped to a list in three countries.

Nobody re-reads the footer. The body of a campaign gets proofread by four people; the footer is copied from the last template, and that one was copied from the one before it. So a repealed statute, a placeholder address and a thirty-day removal promise ride along on every send, for years.

Here is what fourteen rules said about it:

ERRO  L8   postal_address_placeholder   "[Your Company Address]"        15 U.S.C. 7704(a)(5)(A)(iii)
ERRO  L9   unsub_deadline_too_long      "Please allow up to 30 days"    15 U.S.C. 7704(a)(4)(A)(ii)
ERRO  L9   unsub_window_under_60d       "valid for 14 days" = 14 days   CASL s.11(1)(b)
ERRO  L21  tmg_5_outdated               "TMG" as of 2026-09-11          DDG 5
ERRO  L22  unsub_behind_login           /account/login?next=...         16 CFR 316.5
WARN  L25  copyright_year_stale         says 2023; today is 2026-09-11

Twelve in total, nine of them errors. The same footer, corrected, returns zero.

The one that catches almost everybody

Germany repealed the Telemediengesetz on 2024-05-14. The duty did not go away; it moved to section 5 of the Digitale-Dienste-Gesetz. Every German footer written before that date still says § 5 TMG — and so does every German footer written since by a language model whose training data predates the repeal. Ask an assistant for a compliant German footer today and there is a good chance it cites a statute that no longer exists.

That is the shape of the whole problem. These are not markup errors. They are facts with dates on them: ten business days for a CAN-SPAM opt-out, sixty days for a CASL unsubscribe mechanism, 2024-05-14 for the TMG. A linter that knows HTML has no opinion about any of them, and none of these tools opens the other forty templates in your repository — where the same footer was copied to begin with.

The fourteen checks

Four groups. The opt-out link: does one exist, does the href go anywhere, does it land on a sign-in page, does it demand an account number or a fee, is it rendered at a readable size. The promises around it: a removal window longer than ten business days, a link declared valid for fewer than sixty days. The identification: a real postal address rather than [Your Company Address], a named legal entity, and for German-facing mail an Impressum link or a register and VAT number. And two that read the date you run them on: a stale copyright year, and a 1x1 open-tracking pixel shipping with no line telling the reader why they got this mail.

Every finding carries the line number, the statute and the fix. Nothing is uploaded; the engine is one dependency-free file that runs identically in the editor and in the browser.

Free, and what is not

Checking the template open in your editor is free against all fourteen rules, with no key and no account; the same engine runs free in the browser. The licence covers one thing on a different axis: sweep every template in the workspace and write one dated audit report — every file, every finding, every citation — that a client or a lawyer can read without opening your editor. Outside counsel reads one footer against CAN-SPAM, CASL and section 5 DDG at about $300 an hour, and reads it once. The licence is $29, and the rules run on every commit afterwards.

Questions people ask

What does Email Footer Law Lint actually do?

It reads an HTML email template and reports the footer duties it breaks. Fourteen checks: a missing or placeholder postal address, an opt-out link pointing at a sign-in page, a removal promise longer than ten business days, an unsubscribe link declared valid for under sixty days, and a German provider line still citing the repealed TMG. Every finding names the line, the statute and the fix.

Who is this for?

Developers and agency engineers who own the HTML email templates for a company that mails US, Canadian and German recipients. If you keep a folder of campaign and transactional templates in git, and the footer in them was copied forward from a template someone wrote years ago, this is aimed squarely at you rather than at the marketing team.

Why will a free linter or a chat assistant not do this?

HTML linters check markup, not statutes; they have no opinion about a thirty-day removal promise. Chat assistants have a worse problem: Germany repealed the Telemediengesetz on 2024-05-14, and models trained before that still write section 5 TMG into German footers. Neither one opens the other forty templates sitting in your repository.

What is free and what needs a licence?

Free, with no key and no account: checking the template open in your editor against all fourteen rules, with the statute and the fix on every finding. The same engine runs free in the browser on the product page. The licence covers one thing: sweeping every template in the workspace and writing one dated audit report file.

What would this cost me otherwise?

Outside counsel reads one email footer against CAN-SPAM, CASL and section 5 DDG at roughly $300 an hour, and reads it once, on the day you ask. A template repository changes every week. The licence is $29, once, and the fourteen rules run on every commit you make afterwards.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Want the full version?
Enter your email and we send the download link.
ENDEJAESPT

Find a tool