Skip to main content

What is RSL?

Really Simply Licensing (RSL) is an open standard that allows content owners to define licensing terms for automated systems like AI agents, web scrapers, and search bots. Think of it as a machine-readable contract that tells bots:
  • What they’re allowed to do with your content
  • What they’re not allowed to do
  • How much it costs to license your content (if anything)
  • Legal warranties and disclaimers
Instead of blocking all bots or leaving everything freely accessible, RSL gives you granular control over how automated systems access and use your content.

RSL File Structure

An RSL file is an XML document with a specific hierarchy:

The Hierarchy Explained

  1. <rsl> - Root element (only one)
  2. <content> - Defines a digital asset (URL pattern)
    • You can have multiple <content> blocks for different sections of your site or individual pages
  3. <copyright> - Who owns the content (optional)
  4. <terms> - Link to detailed legal terms (optional)
  5. <license> - Licensing terms for the content
    • You can have multiple <license> blocks with different terms
  6. <permits> - What’s allowed
  7. <prohibits> - What’s not allowed
  8. <payment> - How much it costs (optional - defaults to free)
  9. <legal> - Warranties and disclaimers

Core Elements

Content: Defining What’s Licensed

The <content> element identifies which parts of your site require licensing. Attributes:
  • url (required): URL pattern to match
  • server (optional): License server for encrypted content
  • encrypted (optional): Whether content is encrypted
  • lastmod (optional): When content was last modified
Examples:
<!-- Entire website -->
<content url="https://example.com/*">
  ...
</content>

<!-- Specific section -->
<content url="https://example.com/premium/*">
  ...
</content>

<!-- Multiple sections -->
<content url="https://example.com/news/*">
  ...
</content>
<content url="https://example.com/api/*">
  ...
</content>
URL Pattern Wildcards:
  • * matches any sequence of characters
  • $ matches the end of a path
/articles/*      → matches /articles/2024/story, /articles/tech
/articles/$      → matches only /articles (exact)
/api/v1/*        → matches /api/v1/users, /api/v1/posts

License: Defining Terms

Each <content> can have one or more <license> elements defining different sets of terms. Why multiple licenses?
  • Offer free non-commercial access and paid commercial access
  • Different terms for different geographic regions
  • Tiered pricing (basic, premium, enterprise)
Example with two licenses:
<content url="https://example.com/*">
  <!-- License 1: Free for non-commercial -->
  <license>
    <permits type="usage">all</permits>
    <permits type="user">non-commercial,education,personal</permits>
    <payment type="free"/>
  </license>
  
  <!-- License 2: Paid for commercial -->
  <license>
    <permits type="usage">all</permits>
    <permits type="user">commercial</permits>
    <payment type="crawl">
      <amount currency="USD">0.01</amount>
    </payment>
  </license>
</content>

Permitted Uses

The <permits> element defines allowed uses, users, and geographic access.

Usage Types (type="usage")

Specifies what bots can do with your content:
ValueMeaning
allAny automated processing (most permissive)
train-aiTrain an AI model
train-genaiTrain a generative AI model
ai-useUse as input to a trained model (RAG)
ai-summarizeSummarize in search results or web pages
searchBuild search index and provide search results
Examples:
<!-- Allow everything -->
<permits type="usage">all</permits>

<!-- Allow AI use but not training -->
<permits type="usage">ai-use,ai-summarize,search</permits>

<!-- Only allow search indexing -->
<permits type="usage">search</permits>

User Types (type="user")

Specifies who can use your content:
ValueMeaning
commercialFor-profit companies and applications
non-commercialNon-profit organizations, research
educationSchools, universities, educational use
governmentGovernment agencies and public sector
personalIndividual personal use only
Examples:
<!-- Allow all user types -->
<permits type="user">commercial,non-commercial,education,government,personal</permits>

<!-- Only non-commercial and education -->
<permits type="user">non-commercial,education</permits>

<!-- Commercial only (paid license) -->
<permits type="user">commercial</permits>

Geographic Restrictions (type="geo")

Specifies which countries can access your content using ISO 3166-1 alpha-2 codes. Examples:
<!-- Allow specific countries -->
<permits type="geo">US,CA,GB</permits>

<!-- Allow EU countries -->
<permits type="geo">EU</permits>

<!-- No geo restrictions (default if omitted) -->
<!-- Don't include <permits type="geo"> -->

Prohibited Uses

The <prohibits> element explicitly denies specific uses, even if they might otherwise be permitted. When to use Prohibits:
  • Carve out exceptions from broad permissions
  • Make specific restrictions crystal clear
  • Address particular concerns about content use
Examples: Allow search but prohibit AI training:
<permits type="usage">search,ai-use</permits>
<prohibits type="usage">train-ai,train-genai</prohibits>
Block commercial use:
<permits type="user">non-commercial,education,personal</permits>
<prohibits type="user">commercial</prohibits>
Block specific countries:
<permits type="geo">US,EU</permits>
<prohibits type="geo">XX,YY</prohibits>
Prohibits takes precedence. If something is both permitted and prohibited, it is prohibited.

Payment: Monetization Models

The <payment> element defines how bots pay for access (if at all).

Payment Types

TypeDescriptionUse Case
freeNo payment requiredOpen access content
attributionCredit required (link back)Free but with attribution
purchaseOne-time paymentBuy perpetual access
subscriptionMonthly recurringOngoing access
crawlPer page viewPay each time content is accessed
trainingPer training usePay when used for AI training
inferencePer AI outputPay when used to generate responses
Examples: Free access:
<payment type="free"/>
Attribution required:
<payment type="attribution"/>
Pay per crawl:
<payment type="crawl">
  <amount currency="USD">0.01</amount>
</payment>
Monthly subscription:
<payment type="subscription">
  <amount currency="USD">99.00</amount>
</payment>
Custom pricing (link to contact page):
<payment>
  <custom>https://example.com/enterprise-licensing</custom>
</payment>
Standard license agreement:
<payment>
  <standard>https://example.com/standard-license-terms</standard>
</payment>

The <legal> element defines legal statements about your content and license.

Warranties (type="warranty")

What you guarantee about your content:
ValueMeaning
ownershipYou own or control copyright/licensing rights
authorityYou’re authorized to grant these rights
no-infringementContent doesn’t icnfringe third-party IP (to your knowledge)
privacy-consentRequired consents for personal data obtained
no-malwareContent is free from malicious code
Example:
<legal type="warranty">ownership,authority,no-infringement</legal>

Disclaimers (type="disclaimer")

What you don’t guarantee (limit liability):
ValueMeaning
as-isContent provided “as is” without guarantees
no-warrantyNo express or implied warranties
no-liabilityNot liable for damages from use
no-indemnityNo indemnification provided
Example:
<legal type="disclaimer">as-is,no-liability</legal>
Combined example:
<license>
  <permits type="usage">all</permits>
  <payment type="free"/>
  <legal type="warranty">ownership,authority</legal>
  <legal type="disclaimer">as-is,no-warranty,no-liability</legal>
</license>

Optional elements that identify the copyright holder and link to additional terms. Copyright:
<copyright 
  type="organization"
  contactEmail="licensing@example.com"
  contactUrl="https://example.com/contact"
/>
Terms:
<terms>https://example.com/licensing-terms</terms>
These provide bots (and humans) with contact information and detailed legal documentation.

Complete RSL Example

Here’s a full RSL file showing how all elements work together:
<?xml version="1.0" encoding="utf-8"?>
<rsl xmlns="https://rslstandard.org/rsl">
  <!-- News section: Free for non-commercial -->
  <content url="https://example.com/news/*">
    <copyright 
      type="organization"
      contactEmail="licensing@example.com"
      contactUrl="https://example.com/contact"
    />
    <terms>https://example.com/licensing-terms</terms>
    
    <license>
      <permits type="usage">ai-use,search</permits>
      <permits type="user">non-commercial,education,personal</permits>
      <prohibits type="usage">train-ai</prohibits>
      <payment type="free"/>
      <legal type="warranty">ownership,authority</legal>
      <legal type="disclaimer">as-is,no-liability</legal>
    </license>
  </content>
  
  <!-- Premium content: Paid commercial access -->
  <content url="https://example.com/premium/*">
    <copyright 
      type="organization"
      contactEmail="licensing@example.com"
      contactUrl="https://example.com/contact"
    />
    
    <license>
      <permits type="usage">all</permits>
      <permits type="user">commercial</permits>
      <payment type="crawl">
        <amount currency="USD">0.02</amount>
      </payment>
      <legal type="warranty">ownership,authority,no-infringement</legal>
      <legal type="disclaimer">no-indemnity</legal>
    </license>
  </content>
  
  <!-- API: Custom enterprise licensing -->
  <content url="https://example.com/api/*">
    <license>
      <permits type="usage">all</permits>
      <permits type="user">commercial</permits>
      <payment>
        <custom>https://example.com/enterprise-licensing</custom>
      </payment>
    </license>
  </content>
</rsl>

Next Steps

Now that you understand RSL concepts, you’re ready to create your first license:

Create Your RSL License

Use the RSL Editor to define your licensing terms without writing XML by hand.

Additional Resources