Skip to content

Free tool · no account needed

security.txt generator

Tell security researchers how to reach you: a security.txt file for your website, and a draft disclosure policy to link from it.

The asks manufacturers to provide a contact address for reporting vulnerabilities and to have a (Regulation (EU) 2024/2847, Annex I, Part II, points 5 and 6). A file, defined by RFC 9116, is the standard place researchers look for that contact.

Fill in the form and the file builds as you type. The second tab drafts a disclosure policy from the same answers for you to edit and publish.

Everything is made here, in this browser tab. Nothing you type is sent anywhere. If you follow the sign-in link, the values you typed go with it in the address.

Reading the current legal state…

Where to put it

Publish the file at https://your-site/.well-known/security.txt, over HTTPS, served as text/plain; charset=utf-8. You may also redirect /security.txt to it for older tools. Put one on every domain researchers might look at, such as the one printed on your device or in its app. If the same file is served at more than one address, list each in the Canonical box, one per line.

Apache

Save the file as .well-known/security.txt under your document root, then add to .htaccess or the site config:

Redirect 301 /security.txt /.well-known/security.txt

To send the charset with it, add this too. ForceType sets the media type of the files a Files block matches, and both are allowed in .htaccess:

<Files "security.txt">
  ForceType "text/plain; charset=utf-8"
</Files>

nginx

Inside the site's server block, pointing at wherever you saved the file:

location = /.well-known/security.txt { default_type "text/plain; charset=utf-8"; alias /var/www/security.txt; }

Next.js

Save the file as public/.well-known/security.txt in your project. Next.js serves everything in public/ from the site root, so it appears at /.well-known/security.txt on the next deploy.

Signing it (optional)

RFC 9116 recommends signing the file with an cleartext signature, so readers can tell it has not been changed. With GnuPG, this writes the signed copy to security.txt.signed:

gpg --clearsign --output security.txt.signed security.txt

Publish that signed copy as security.txt: upload it to .well-known/security.txt under that name. RFC 9116 serves the signed text at the same address as the plain file.

Once its Expires date passes, RFC 9116 tells readers to treat the file as stale, so put that date in your calendar and publish a new file before it.

Declarable prepares documentation for you to review. It is not legal advice and not certification. You sign your own declaration of conformity.