PPTX.gallery
placeholderspowerpointapi

Overview

PowerPoint uses placeholders to position content. OPF describes placement with layout records: one ordered list of regions, declared once, in reading order. The renderer binds typed slide content to those regions, and you can pin a block to a named region when placement matters.

Content Fields

Content role Content OPF field
Title Slide heading title
Subtitle Supporting text below title subtitle
Body Paragraph text text
Image Photo or graphic image or blocks[].image
Chart Data visualization chart
Number KPI/metric value metric.value
Label Metric description metric.label
Background image Full-slide background design.background (an image)

How a Layout Declares Its Regions

A layout is one list of regions in reading order. Each region says how much of the slide it takes (size), which content it accepts and how several blocks share it. The list has a direction: row puts the regions side by side, left to right; column, the default, stacks them top to bottom.

A story on the left and the evidence beside it, a third of the width:

{
  "$schema": "https://openpresentation.org/schema/opf-layout/v2",
  "id": "story-and-evidence",
  "name": "Story and evidence",
  "direction": "row",
  "anchor": "middle",
  "regions": [
    { "name": "main", "size": 2, "accepts": ["text"] },
    { "name": "aside", "size": 1, "accepts": ["metric"] }
  ]
}

Read it left to right, because the record's direction is row: main first, then aside, and main is twice as wide. anchor: "middle" is written once and applies to both regions. A block targets a region by name ("region": "aside").

For two dimensions, an entry of the list can be a split: a nested list that runs the other way. A layout in the shape of two-column is a title, then a split of two regions side by side:

{
  "$schema": "https://openpresentation.org/schema/opf-layout/v2",
  "id": "two-column",
  "name": "Two column",
  "regions": [
    { "name": "title" },
    {
      "direction": "row",
      "regions": [
        { "name": "first", "accepts": ["text", "list"] },
        { "name": "second", "accepts": ["text", "list"] }
      ]
    }
  ]
}

The record's direction is omitted, so it is column: the title on top, then one entry, a split whose own direction is row. A split has no name; it is a place to put regions the other way. title and subtitle are reserved heading regions that take only a size.

How OPF Binds Content to Regions

For a slide with a template layout, the engine:

  1. Resolves the layout record from embedded or host-registered catalogs.
  2. Places title and subtitle in the heading regions and binds body content by accepted kind, role and reading order. A block’s region can pin it to a region declared by the layout.
  3. Applies the resolved color and font schemes.
  4. Composes and renders the slide. Regions with flow can arrange several blocks; the slide’s groups keep related content together.
{
  "$schema": "https://openpresentation.org/schema/opf/v1",
  "name": "Key Highlights",
  "slides": [
    {
      "layout": "text",
      "title": "Key Highlights",
      "blocks": [
        {
          "text": "Revenue Growth\n\nRevenue increased 24% year-over-year."
        },
        {
          "text": "Market Expansion\n\nEntered three new European markets in Q1."
        }
      ]
    }
  ],
  "catalogs": {
    "default": {
      "source": "https://www.pptx.gallery",
      "layouts": {
        "text": {
          "name": "Text",
          "summary": "Prose. Several blocks sit side by side when short and stack when long.",
          "tags": [
            "Text"
          ],
          "direction": "column",
          "regions": [
            {
              "name": "title"
            },
            {
              "name": "body",
              "accepts": [
                "text",
                "list",
                "quote",
                "code",
                "group"
              ],
              "role": "primary",
              "flow": "auto"
            }
          ],
          "description": "Explain one idea in continuous prose. Use paragraphs or flowing blocks for detail that needs to be read in sequence.",
          "preview": {
            "vectorSrc": "https://www.pptx.gallery/layout-previews/text.svg"
          }
        }
      }
    }
  }
}

In this example:

  • cover fills the slide title.
  • The first blocks entry supplies the first text region.
  • The second entry supplies the second text region.

Multi-Item Layouts

Repeated content uses a blocks array. Each block supplies its own payload, such as metric, image, chart, or a list in items:

{
  "$schema": "https://openpresentation.org/schema/opf/v1",
  "name": "Q1 Metrics",
  "slides": [
    {
      "layout": "metrics",
      "title": "Q1 Metrics",
      "blocks": [
        {
          "metric": {
            "value": "$1.2M",
            "label": "Revenue"
          }
        },
        {
          "metric": {
            "value": "94%",
            "label": "Retention"
          }
        },
        {
          "metric": {
            "value": "72",
            "label": "NPS"
          }
        }
      ],
      "design": {
        "titleAlignment": "center",
        "contentAlignment": "center"
      }
    }
  ],
  "catalogs": {
    "default": {
      "source": "https://www.pptx.gallery",
      "layouts": {
        "metrics": {
          "name": "Metrics",
          "summary": "One to six headline numbers, with an optional note.",
          "tags": [
            "Numbers"
          ],
          "design": {
            "contentAlignment": "center"
          },
          "direction": "column",
          "regions": [
            {
              "name": "title"
            },
            {
              "name": "metrics",
              "accepts": [
                "metric",
                "group"
              ],
              "role": "primary",
              "flow": "grid",
              "anchor": "middle"
            },
            {
              "name": "note",
              "size": "auto",
              "accepts": [
                "text",
                "list"
              ],
              "role": "supporting",
              "flow": "none"
            }
          ],
          "description": "Highlight a small set of important numbers. Give each number a label and the context needed to interpret it.",
          "preview": {
            "vectorSrc": "https://www.pptx.gallery/layout-previews/metrics.svg"
          }
        }
      }
    }
  }
}

The metrics region’s grid flow arranges these metric blocks.

Image Placeholders

Image content accepts a URL. The presentation host resolves that image when rendering or exporting:

{
  "$schema": "https://openpresentation.org/schema/opf/v1",
  "name": "Our New Office",
  "slides": [
    {
      "layout": "image",
      "title": "Our New Office",
      "image": "https://example.com/office-photo.jpg",
      "design": {
        "titleAlignment": "center",
        "contentAlignment": "center"
      }
    }
  ],
  "catalogs": {
    "default": {
      "source": "https://www.pptx.gallery",
      "layouts": {
        "image": {
          "name": "Image",
          "summary": "One picture edge to edge under an optional title.",
          "tags": [
            "Visuals"
          ],
          "direction": "column",
          "regions": [
            {
              "name": "title"
            },
            {
              "name": "media",
              "accepts": [
                "image",
                "video"
              ],
              "role": "media",
              "flow": "none",
              "bleed": true
            }
          ],
          "description": "Let one image carry the message. Add a short title or caption to explain what the audience should notice.",
          "preview": {
            "vectorSrc": "https://www.pptx.gallery/layout-previews/image.svg"
          },
          "design": {
            "imageFit": "contain"
          }
        }
      }
    }
  }
}

Background Image vs. Content Image

  • Background image (design.background with "type": "image") — full-bleed picture behind all content; it never moves the content
  • Content image (image, or an image block) — bound to an image region on the slide, with its own fit, frame treatments and, to bleed it to one slide edge, placement

Use background images for atmosphere. Use content images for specific visuals.

Tips

  1. Match your content to the layout. The metrics layout uses grid flow for several values; the data count determines the arrangement.
  2. Check the gallery for each layout’s regions and accepted content kinds before pinning a block with region.
  3. Review text fit. Keep copy readable, inspect the preview and respond to overflow findings by giving content more room or splitting the slide.

Next Steps

  • Browse all layouts to see each layout’s regions in reading order and complete examples
  • Learn about title slides and their heading and media regions
  • Explore image slides for visual content