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.
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
Real numbers from this tool, line by line.

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.
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.
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.
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.
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.
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.
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.
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.
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.
One question, answered by the person who built it. Your email only if you want the answer sent.