Lints security.txt against RFC 9116 and the EU Cyber Resilience Act reporting contact point that has applied since 11 September 2026. Runs entirely in your browser — nothing is uploaded.
Get the full version - workspace scan + dated JSON report
$29 once · one licence key per person or team seat · A security consultant reviewing a disclosure contact and policy starts around $150 an hour.
Same engine as the VS Code extension, byte for byte.
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)npmMCP server (npx)Docker HubApify (audit live URLs)ext install ReadyStack.security-txt-cra-lint npx @readystack/security-txt-cra-lint <file> npx @readystack/security-txt-cra-lint --mcp
Team? One key for every ReadyStack linter, 5 seats, $149 once
Scan every security.txt across the whole workspace in one pass and export a dated JSON report you keep for the audit file.
One payment, one licence key for this tool. The key is shown right after payment.
A security consultant reviewing a disclosure contact and policy starts around $150 an hour
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

9 findings in a 10-line file, and the one that matters most is that the vulnerability contact point expired 75 days ago: that is what security.txt Lint returns for a platform maintainer who ships software into the EU and has not opened /.well-known/security.txt since the day it was written.
Since 11 September 2026, Article 14 of the EU Cyber Resilience Act (Regulation (EU) 2024/2847) has been in force for reporting. When a vulnerability in your product is actively exploited, three clocks start: an early warning to your CSIRT and ENISA within 24 hours, a vulnerability notification within 72 hours, and a final report within 14 days. The penalty ceiling for getting the reporting duty wrong is 15 million euro or 2.5% of worldwide annual turnover.
Every one of those clocks starts when the report reaches you. There is one machine-readable place a stranger looks for where to send it: the security.txt file at /.well-known/ on your domain. RFC 9116 is short and blunt about what makes that file real. Contact is mandatory and must be a URI. Expires is mandatory, must be a full RFC 3339 timestamp, and if the timestamp has passed, the file MUST be ignored. A researcher's tooling does not argue: it reads the date, drops the file, and the researcher falls back to a public post. Your 24-hour clock then starts from a tweet you did not see.
What the linter reads
security.txt Lint applies 13 rules inside VS Code, each reported on the line where the problem is:
The sample file shipped with the extension is ten lines long and looks fine to a human eye. The linter returns 9 findings on it: 5 errors and 4 warnings. The first error is the date arithmetic no chatbot can do for you, because it does not know what today is: Expires ran out on 2026-06-30, which was 75 days before the lint.
Free, and the next job
Linting the file you have open is free and complete. All 13 rules, every line number, no key, no watermark, no limit on how many times you run it. The same engine runs in the browser, so you can paste in a file from a server you have not cloned.
The next job is different in scope and in what you keep. A company that ships more than one product has more than one security.txt: one per domain, one per white-label deployment, one buried in a static site repository. The full version sweeps every security.txt in the workspace in one pass and writes a dated JSON report you keep and attach to an audit file or a customer security questionnaire. It is 29 dollars once, one licence key per person or team seat. A security consultant reviewing a disclosure contact and policy starts around 150 dollars an hour, and that review is a snapshot that goes stale on the day the Expires value passes.
Run it on your own file first. If it comes back clean, you have lost thirty seconds. If it comes back with an expired Expires line, you have learned that for two months nobody could tell you your product was being exploited.
It reads a security.txt file and applies 13 rules from RFC 9116 and the EU Cyber Resilience Act disclosure expectation. It flags a missing or expired Expires line, a Contact that is not a URI, http:// URIs, duplicated fields, a Canonical that is not the /.well-known path, a CSAF link that is not provider-metadata.json, unknown field names and unparsable lines, each on its own line number.
Maintainers, platform and security engineers who ship software or connected products into the EU and own the /.well-known/security.txt file for their domain. If a stranger finding a live exploit has to guess where to send it, this file is your job, and since 11 September 2026 the Cyber Resilience Act treats it as part of your reporting duty.
Since 11 September 2026 the EU Cyber Resilience Act, Regulation (EU) 2024/2847 Article 14, gives you 24 hours for an early warning, 72 hours for a notification and 14 days for a final report on an actively exploited vulnerability, with fines up to 15 million euro or 2.5% of turnover. A chatbot cannot know today's date, so it will not tell you your Expires line ran out 75 days ago.
Linting the file you have open is free and complete: all 13 rules, every line, no key, no watermark, no limit on how often you run it. The full version changes the scope and the ownership. It scans every security.txt in the workspace in one pass and exports a dated JSON report you keep and attach to an audit or a customer questionnaire.
A security consultant reviewing a disclosure contact point and policy starts around $150 an hour, and the review is a snapshot that goes stale the day the Expires value passes. The extension is $29 once, runs on every save, and on the sample file in this repository it returns 9 findings from a 10-line file in under a second.
A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. security.txt Lint - RFC 9116 and CRA contact point checks the file you open against 13 rules, each naming its legal or official basis, 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.
One question, answered by the person who built it. Your email only if you want the answer sent.
Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.
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 →