license.xml is how you tell crawlers, AI agents, and other automated clients what they can and cannot do with your content. It is served at your domain and expressed in the RSL standard format — a machine-readable structure that covers scope, permissions, restrictions, and commercial terms.
At a practical level, an RSL file answers four questions:
- Which content does this rule apply to?
- Which automated uses are allowed?
- Which uses, users, or geographies are restricted?
- What legal or commercial conditions sit behind those rights?
license.xml matters. It is not just documentation.
It is the structured expression of your licensing position
for search engines, AI systems, crawlers, and other automated clients.
The example below shows the same content section expressed through two separate <content> declarations.
The document root uses the RSL namespace, and RSL documents are served as application/rsl+xml.
/news/*is the content scope- one content declaration allows classic search broadly
- another adds commercial AI input and AI indexing through a license-server flow
- AI training remains prohibited
server value if you want unlicensed search access to remain possible.
Supertab Connect takes care of this pattern in the RSL Editor engine, so users don’t have to worry about
accidentally losing on SEO optimization and can simply focus on creating their terms for licensed access.
How clients evaluate scope and conflicts
Clients do not evaluate an RSL file by reading it top to bottom, but by scope and specificity. The practical rules that matter are:- More specific content scopes take precedence over broader scopes
- Prohibitions override permissions when both apply
- Overlapping, unclear licenses are interpreted conservatively
/ and a narrower rule for /premium/*, the narrower rule should govern the premium section. If you publish overlapping license offers that apply to the same content and same audience without a clear distinction, a well-behaved client is likely to default to the stricter interpretation.
Core license elements
<content>: the scope of the policy
<content> defines which asset, path, section, file, or resource the rules apply to. For most websites, this is the key commercial control point because it lets you distinguish public, premium, archive, research, or other sections.
For normal web licensing, path patterns are usually the simplest model:
//news/*/articles/$/premium/*
servermatters when licensed access requires token acquisition. It connects the public license to the operational license acquisition flow.- if you want to license content without requiring token acquisition, keep that content declaration separate from token-gated licensed uses and do not include a
servervalue in the allowing content declaration. lastmodhelps clients re-check freshness, but it does not change the rights themselves.
<license>: one coherent rule bundle
A <content> element can contain one or more <license> elements. Each one represents a coherent set of rights and conditions for that scope.
In practice, multiple licenses make sense when the offers are genuinely different, for example:
- search allowed for everyone, but AI use reserved for commercial licenses
- non-commercial use under one offer, commercial use under another
- one geography under one set of terms, another geography under another
<permits>: what is allowed
<permits> is the positive grant of rights. It declares which uses, user classes, or geographies are allowed.
The three main permit types are:
usageusergeo
type="usage"
This is the most commercially important vocabulary because it defines what automated systems may actually do with the content.
The most important distinction is that
search does not mean AI summaries. If your goal is “allow classic search, but do not allow AI grounding or training,” search is the right starting point.
type="user"
This lets you separate rights by operator class rather than by technical use.
type="geo"
This lets you scope rights geographically, usually with ISO 3166-1 alpha-2 country or region codes.
Example:
<prohibits>: what is forbidden
<prohibits> is the hard stop. When something appears in both permits and prohibits, the prohibition wins.
That makes it useful for carve-outs.
<legal>: legal posture and proof points
The legal block expresses what you affirm, what you disclaim, and where counterparties can go for rights clarification.
The values most management teams usually care about are:
- warranties such as
ownership,authority, andno-infringement - disclaimers such as
as-isandno-liability - whether
attestationis appropriate for your internal governance standard
- publish warranties only when you are comfortable making them consistently and publicly
- keep the legal contact monitored by someone who can actually answer rights questions
- use proof links only when they point to meaningful evidence, not filler
<payment>: commercial terms
RSL can also express payment-related terms. At a protocol level, licenses may include payment conditions, references to standard or custom commercial terms, and pricing metadata.
For this overview, the important point is strategic rather than structural: RSL is designed not only to say “yes” or “no,” but also to support licensed access under commercial conditions.
Supporting metadata
The following elements do not usually change the core permission logic, but they make the license more credible, easier to interpret, and easier to operate.
For most publishers, this is straightforward: publish real ownership metadata, a real rights contact, and a real terms page. Placeholder metadata weakens confidence in the license even if the XML is technically valid.
Common policy patterns
These are two of the most common patterns publishers use when deciding how open or restrictive to be.Allow classic search, but not AI use
Allow AI answers or retrieval, but not training
Discovery
Publishinglicense.xml is not enough on its own. Clients also need a reliable way to discover it.
Primary recommendation: robots.txt
For websites, this is the simplest and most important discovery path. Add this line to your robots.txt:
Secondary discovery options
Examples:
Best practices
- Keep the number of scopes small and commercially meaningful. A few clear boundaries are better than many overlapping ones.
- Separate search, AI input, AI indexing, and AI training deliberately. They are different rights with different implications.
- Avoid ambiguous overlapping license offers. If a counterparty cannot tell which license applies, you have weakened the commercial outcome.
- Make discovery and contact simple: publish at
/license.xml, advertise it inrobots.txt, and use a real rights contact.
Related Docs
Deploy in Your CDN
Publish your
license.xml at your own domain and enforce licensing at the edge.