Preview environment
CrawlPact

How to publish an RSL (Really Simple Licensing) declaration

Published 7/24/2026

RSL (Really Simple Licensing) is an emerging, XML-based specification for declaring what a website’s content may and may not be used for — including AI training — in a machine-readable form. It is a declaration, not technical enforcement.

Step 1: Create the file at the well-known RSL location

Place an XML file at /.well-known/rsl.xml — for example https://example.com/.well-known/rsl.xml. As with any file under /.well-known/, where it physically lives depends on your hosting:

  • Static-site hosts (Cloudflare Pages/Workers Assets, Netlify, Vercel, or any static-site generator) — create a .well-known/rsl.xml path inside the project’s static-assets directory (often named public/); it’s copied to the site root unchanged at build time.
  • WordPress — a real file placed directly at .well-known/rsl.xml in the site’s web root (via SFTP or your host’s file manager) is served as-is, since Apache/Nginx serve a matching file from disk before invoking WordPress’s own routing. If direct file access isn’t available, a plugin or a functions.php snippet hooked to WordPress’s init action can match the request path and output the XML with an application/xml content-type instead.

Step 2: Declare a license element

<license>
  <permits>search</permits>
  <prohibits>train</prohibits>
</license>

CrawlPact’s RSL reader recognises the <license>, <permits>, <prohibits>, <payment>, and <copyright> elements. Anything else encountered is preserved and reported as an “unsupported element” rather than silently discarded, since RSL is still an evolving specification.

Step 3 (optional): Declare payment terms

<license>
  <permits>search</permits>
  <prohibits>train</prohibits>
  <payment>subscription</payment>
</license>

Step 4: Verify

Run CrawlPact’s RSL validator. It reports whether a <license> element was discovered, and lists the declared permits, prohibits, and payment terms.

Keep it consistent with your other declarations

If you also publish a Content-Signal header or specific robots.txt rules, make sure they say the same thing — see RSL vs. Content Signals vs. robots.txt for why nothing reconciles a disagreement between them automatically.

What this doesn’t do

RSL is a machine-readable declaration, not technical enforcement — see /limitations. There is no guarantee that any specific crawler operator checks this file, since RSL adoption varies.

See how this applies to your own site

Run a free audit to check your declared AI crawler policy against your own domain.

Audit a domain