OPDS Page Streaming Extension 1.0

Published on December 01st 2014



This document is licensed under Creative Commons Attribution-Share Alike.



The OPDS Page Streaming Extension (OPDS-PSE) is an unofficial extension of the Open Distribution Publication System. Its goal is to enrich the OPDS feed with information allowing the client to request a specific page of a document without having to download it completely.
This extension was designed primarily for comic books, to allow reading them on connected devices without having to wait for the book to be completely downloaded.

OPDS-PSE adds new attributes and conventions but does not break compatibility. OPDS-PSE feeds are still valid OPDS feeds.

Notational Conventions


The key words "MUST", "MUST NOT", "SHOULD", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

OPDS-PSE  acquisition Link


The OPDS-PSE extension simply consists in an additional type of Acquisition Link in an OPDS entry.
This link is to be used by clients to request pages of a document, one page at a time.

An OPDS-PSE feed MUST declare the OPDS-PSE namespace :  


  Example :

  Namespace declaration in the feed element (in our example, we use the prefix  pse  ):

  <feed xmlns="http://www.w3.org/2005/Atom"
        xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" >

  Additional link in an entry to allow page by page access to the document :

  <link rel="http://vaemendis.net/opds-pse/stream"



        pse:count="35" />




The Link MUST contain the following attributes :

          rel  MUST have the value "http://vaemendis.net/opds-pse/stream" that indicates that this link is a OPDS-PSE page streaming link

          type  MUST indicate the type of image returned by the server (value MUST be one of the following : "image/jpeg", "image/gif" or "image/png")

          count  MUST provide the number of pages of the document.

          href  MUST provide the URL that the client has to use to get individual pages of the document.
This URL MUST contain the string "{pageNumber}", which the client MUST replace with the number of the desired page.
This URL MAY contain the string "{maxWidth}" that the client MUST replace (if it exists) by the desired maximum width of the returned page


Note on page numbering : pages are numbered from 0 to N-1 (N being the total number of pages).

Note on double pages : double pages (one image containing two pages) MUST be treated as a single page. If a split is to be done, it is the responsibility of the client. The server MUST NOT split images.

Known implementations of OPDS-PSE




Challenger Comics Viewer (Android)

Chunky Reader (iOS)