Free tools

security.txt checker

Type a domain: you see whether it publishes a security.txt, the file that tells security researchers how to report a vulnerability, and whether the file follows RFC 9116. An expired or malformed file is ignored by the tools that read it.

Our server fetches one file, the security.txt of the domain you type (at its standard address, then at the old one), and keeps the answer ten minutes.

What the checker looks at

The location
The file must be at https://yourdomain/.well-known/security.txt. The old location, /security.txt at the root, is read as a fallback and reported.
The Contact field
Required, at least once: an address written as mailto:, https: or tel:. A bare e-mail address without mailto: is the most common mistake.
The Expires field
Required, exactly once, as a full date and time (2027-06-30T00:00:00Z). After that date the file is considered stale; RFC 9116 recommends a date less than a year away.
The rest
The content type (text/plain), web addresses in https, the Canonical field against the address read, Preferred-Languages given once, and lines that are not fields.

How to read the result

Valid
A contact, an expiry date in the future, and nothing that breaks the format. Put the renewal in your calendar: the date is the part that goes wrong.
Expired
The file was right once and nobody renewed it. Change the Expires date, and check on the way that the contact still reaches someone.
Not valid, or absent
The findings say which field is missing or malformed. With no file at all, a researcher who finds a flaw has to guess an address, and often gives up.

Errors people run into

What most often makes a security.txt useless, and how to fix it.

The file has expired

Why. Expires is required and was set once, usually a year ahead. Nothing warns you when the date passes.

Fix. Set a new date less than a year away and add a reminder. If the file is generated by your site, generate the date at deployment.

Contact is a bare e-mail address

Why. The field takes an address with its scheme. “security@acme.org” alone is not one, and strict tools reject the file.

Fix. Write “Contact: mailto:security@acme.org”. Use a shared mailbox that someone reads, not a person’s address.

The address answers with the home page

Why. The site sends every unknown address to a page with a 200 status, so the file seems to exist and is in fact a web page.

Fix. Publish a real text file at /.well-known/security.txt, served as text/plain, and let unknown addresses answer 404.

Questions

What is security.txt for?

It gives people who find a vulnerability in your site or systems a way to tell you: an address, optionally a policy and an encryption key. Without it, reports get lost or go public.

Is it mandatory?

No law requires it in general. Several governments ask it of their own sites, and customers who assess suppliers increasingly look for it.

Must the file be signed?

No. An OpenPGP signature is optional; the checker notes its presence without verifying it.

What do you send to your servers?

The domain you type. Our server fetches the file at its two possible addresses, because a browser may not read it across origins; the answer is kept ten minutes. See the privacy policy.