Den OPML
Den uses custom OPML attributes to preserve channel settings when exporting and importing files.
The attributes belong to the XML namespace this page is published at:
<opml version="1.0" xmlns:den="https://den.io/xml/opml">
The namespace defines attributes only — no elements. Attributes appear on standard OPML <outline> elements alongside common attributes such as text, title, type, and xmlUrl. Every attribute is optional, and applications that do not recognize the namespace can safely ignore it: a Den export without the den: attributes is a plain OPML subscription list.
Folder attributes
Folder outlines are outlines without an xmlUrl attribute.
| Attribute | Type | Description |
|---|---|---|
den:icon |
string | SF Symbols name for the folder icon, e.g. globe.americas. Defaults to folder. |
Channel attributes
Channel outlines are outlines with an xmlUrl attribute.
| Attribute | Type | Description |
|---|---|---|
den:disableBlocklists |
boolean | Disable content blocklists in the channel’s viewer. Defaults to false. |
den:disableJavaScript |
boolean | Disable JavaScript in the channel’s viewer. Defaults to false. |
den:generatePreviewSummaries |
boolean | Generate machine summaries for article previews. Defaults to false. |
den:viewerMode |
web, comments, content, or reader |
Preferred article presentation. When absent, Den chooses automatically. |
den:fetchLimit |
integer, 1–1000 | Maximum number of articles kept per fetch. Defaults to 10. |
den:retentionPeriod |
integer, 1–3650 | Article retention period in days. Defaults to 30. |
den:ttl |
non-negative integer | Minimum time between feed refreshes, in minutes. |
den:translationLanguage |
BCP 47 language code | Target language for automatic article translation, e.g. en. Absent when translation is off. |
den:languageOverride |
BCP 47 language code | Manual source-language override for feeds that misreport their language, e.g. de. |
Boolean values are the lowercase strings true and false; the numeric forms 1 and 0 are not recognized. Integer values outside their documented range are clamped on import rather than rejected.
Example
<?xml version="1.0" encoding="utf-8"?>
<opml version="1.0" xmlns:den="https://den.io/xml/opml">
<head>
<title>Den Library</title>
<dateCreated>Sun, 30 Aug 2026 12:00:00 GMT</dateCreated>
</head>
<body>
<outline text="News" title="News" den:icon="globe.americas">
<outline text="Example Feed" title="Example Feed" type="rss"
xmlUrl="https://example.com/feed.xml"
den:disableBlocklists="false" den:disableJavaScript="false"
den:generatePreviewSummaries="true" den:viewerMode="reader"
den:fetchLimit="25" den:retentionPeriod="90"/>
</outline>
</body>
</opml>
Import behavior
Den’s importer resolves namespaces when reading OPML files:
- Attributes qualified with any prefix bound to
https://den.io/xml/opmlare recognized, regardless of the prefix used. - As a compatibility fallback, attributes using a bare
den:prefix are also recognized when the prefix is not declared. - Attributes whose
den:prefix is explicitly bound to a different namespace are ignored.
Schema
An XML Schema describing the attributes is available at https://den.io/xml/opml/den-opml.xsd. Because OPML itself has no official schema, the schema declares the Den attributes only; it documents recommended value ranges and is suitable for validating the attributes as a foreign vocabulary rather than for validating complete OPML documents.