DSA Terms of service check — check missing duties in your terms

Reads your terms-of-service markdown and names every Digital Services Act duty it is missing, by article number. Runs entirely in your browser — nothing is uploaded.

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

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmDocker Hub
ext install ReadyStack.dsa-terms-lint
npx @readystack/dsa-terms-lint <file>
docker run --rm -v "$PWD:/w" getreadystack/dsa-terms-lint /w

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 18 rules DSA Terms Lint - EU Digital Services Act checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Scans every legal page and every language version in the workspace in one pass and exports a dated DSA gap report with article citations that you can hand to counsel.

One payment, one licence key for this tool. The key is shown right after payment.

EU technology counsel bills roughly $250-$500 an hour to read the same six pages of terms.

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

DSA Terms Lint - EU Digital Services Act

Eight blocking Digital Services Act gaps sat in the terms.md of a four-person clip-hosting app, and nobody had touched the file since 2 November 2023.

That date is most of the story. The EU Digital Services Act - Regulation (EU) 2022/2065 - has applied to every provider of an intermediary or hosting service offered to users in the Union since 17 February 2024, not only to the very large platforms. If people can upload, post, comment or message on the thing you built, the regulation puts named clauses in your terms of service and names the articles they come from. A terms file dated before that day was, by definition, not written against those duties.

So I put eighteen DSA rules into a VS Code extension and ran them over two files. The first, clean.md, answers all eighteen: 0 findings. The second, dirty.md, is the kind of file most repositories contain - short, friendly, competently drafted for 2023 - and it comes back with 12 findings, 8 of them blocking.

The eight blocking ones were these. No single point of contact for Member State authorities, the Commission and the Board (Art. 11). No separate point of contact for users (Art. 12). No statement that a user can reach a human rather than only an automated channel (Art. 12(1)). No legal representative in a Member State and no claim of establishment in the Union - the file said Delaware (Art. 13). No electronic notice-and-action mechanism for reporting illegal content (Art. 16). No promise of a statement of reasons when something is removed, demoted or suspended (Art. 17). No mention of the user's right to a certified out-of-court dispute settlement body (Art. 21). And the version date itself, 2023-11-02, sitting on the third line, older than the regulation it was supposed to satisfy.

Four more came back as warnings: the languages you accept from authorities (Art. 11(3)), a plain-language claim (Art. 14(1)), confirmation of receipt to whoever files a notice (Art. 16(4)), and a suspension-after-prior-warning policy for repeat abuse (Art. 23).

None of that is exotic; each of the eight is a paragraph you could write in an afternoon. They are missing because absence is invisible: you reread your terms and they look complete, because everything you can see is there.

That is also why asking a chatbot does not solve it. A language model will draft you fluent, plausible terms and never volunteer that Article 16 is absent, because what is not in the document is not in front of it. A markdown linter has the same blind spot from the other side: it checks heading levels, not statute.

Two of the eighteen rules are conditional. Art. 26 - label the ad, name who paid, explain the targeting parameters - fires only when the file mentions advertising. Art. 28(2), the ban on profiling-based ads where the service is open to minors, fires only when the file mentions minors or children. A plain B2B tool is never nagged about either.

The stakes are asymmetric in a way that makes the afternoon worth spending. DSA fines reach 6% of worldwide annual turnover, and a national Digital Services Coordinator can start from one user's complaint. On the other side, EU technology counsel bills roughly $250 to $500 an hour to read the same six pages.

The gap list is free, for the file you have open and for anyone who pastes their terms into the web page: all eighteen rules, every article number, no watermark and no cut-off. What the full version adds is scope - every legal page and every language version in the workspace in one pass, exported as a dated report with article citations you can hand to a lawyer.

15 seconds — what it actually does

Questions people ask

What does DSA Terms Lint actually do?

It reads a terms-of-service markdown file and reports which EU Digital Services Act duties the text does not express. Eighteen rules cover Articles 11, 12, 13, 14, 16, 17, 20, 21, 23, 26 and 28, plus the version date. Each finding names the article and the sentence that is missing, in the VS Code Problems panel.

Who is this for?

Developers and founders who host user content and wrote their own terms: a two-person SaaS with comments, a forum, a marketplace, a mobile app with profiles. The Digital Services Act has applied to every provider of intermediary services offering them in the EU since 17 February 2024, not only to very large platforms.

Why will a free tool or a chatbot not do this?

A language model will happily draft fluent terms and never tell you that Article 16 is absent, because absence is what it cannot see. Generic markdown linters check style, not statute. This tool reports the missing clause by article number, and its conditional rules stay quiet on advertising and minors unless your own text raises them.

What is free and what is in the full version?

Free gives the complete gap list for the file you have open: all eighteen rules, every article number, no watermark and no cut-off. The full version works across scope instead: it scans every legal page and every language version in the workspace at once and exports a dated report with article citations for counsel.

What would this cost without the tool?

EU technology counsel bills roughly $250 to $500 an hour to read the same six pages, and a fixed-fee terms review runs into four figures. Enforcement runs the other way: Digital Services Act fines reach 6% of worldwide annual turnover, and national coordinators can act on a single user complaint.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. Terms of Service Lint - EU Digital Services Act checks the file you open against 18 rules from a rule set dated 2026-09-20, and points at the exact line. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

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

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →