Work in progress — this reference is being written in the open. Unfinished pages are excluded from search engines.
Paged · IDML Reference
Foundations

Read one by hand

Open the smallest valid IDML package and read its parts — a one-page, one-line document, focused on the story that holds the text.

Beginner· tutorial

The fastest way to understand IDML is to open the smallest valid package and read it.

In short: Below is a complete IDML document reduced to its smallest valid form: a single page with a single line of text. The embedded view focuses on the story — the part that holds the actual words — because that is the part you would edit to change what the page says. The rest of the package (the manifest, the resources, the spread) is there too; this page walks you through what to notice in the story and what every other part is quietly doing for it.

The fastest way to understand the format is to open the smallest possible valid package and read it. Below is a complete IDML document that holds a single page with a single line of text. The view shows the story — the part that holds the words; the rest of the package (the manifest, the resources, the spread) is there too, but this is the part you would edit to change what the page says.

A complete one-page document, reduced to its smallest valid form. This is the story part — the text lives here.

Stories/Story_ustory.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<idPkg:Story xmlns:idPkg="http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging" DOMVersion="20.0">
  <Story Self="ustory">
    <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/$ID/[No paragraph style]">
      <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
        <Content>Hello, paged media.</Content>
      </CharacterStyleRange>
    </ParagraphStyleRange>
  </Story>
</idPkg:Story>

A few things to notice, top to bottom:

  • The outer idPkg:Story is the part wrapper; the inner Story is the content, and its Self id is how the page's text frame finds it.
  • A ParagraphStyleRange is a run of text sharing one paragraph style; a CharacterStyleRange nests inside for character-level styling.
  • The actual text sits in Content.

That is the entire payload of this document. Everything else in the package exists to give this story a page to live on and styles to resolve against — which is what the package anatomy section unpacks next.

Frequently asked questions

What is a "story" in an IDML file? A story is the part that holds a run of text — the words themselves, grouped into paragraphs and styled runs. The text frame on a page points at a story by its Self id, so the page knows which words to flow into it.

Can I edit IDML text in a plain text editor? Yes. The text lives in the Content element inside the story part, which is just readable XML. To change what the page says, you edit the Content there. The surrounding parts — manifest, resources, spread — give that story a page and styles to resolve against.

What is the difference between a ParagraphStyleRange and a CharacterStyleRange? A ParagraphStyleRange is a run of text that shares one paragraph style. A CharacterStyleRange nests inside it to apply character-level styling to a smaller span. The actual text sits in the Content element within the CharacterStyleRange.

On this page