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

Analytics preferences

CrawlPact uses optional Google Analytics and Microsoft Clarity on public marketing pages to understand which content is useful and how visitors actually use it. Neither is used in the authenticated app or admin areas. You can accept or decline analytics without affecting the service.