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
<rsl> - Root element (only one)
<content> - Defines a digital asset (URL pattern)
You can have multiple <content> blocks for different sections of your site or individual pages
<copyright> - Who owns the content (optional)
<terms> - Link to detailed legal terms (optional)
<license> - Licensing terms for the content
You can have multiple <license> blocks with different terms
<permits> - What’s allowed
<prohibits> - What’s not allowed
<payment> - How much it costs (optional - defaults to free)
<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:
Value Meaning 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:
Value Meaning 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
Type Description Use Case freeNo payment required Open access content attributionCredit required (link back) Free but with attribution purchaseOne-time payment Buy perpetual access subscriptionMonthly recurring Ongoing access crawlPer page view Pay each time content is accessed trainingPer training use Pay when used for AI training inferencePer AI output Pay when used to generate responses
Examples:
Free access:
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 >
Legal: Warranties & Disclaimers
The <legal> element defines legal statements about your content and license.
Warranties (type="warranty")
What you guarantee about your content:
Value Meaning 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):
Value Meaning 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