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:
- Resolves the
layoutrecord from embedded or host-registered catalogs. - Places
titleandsubtitlein the heading regions and binds body content by accepted kind, role and reading order. A block’sregioncan pin it to a region declared by the layout. - Applies the resolved color and font schemes.
- 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:
coverfills the slide title.- The first
blocksentry 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.backgroundwith"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 ownfit, frame treatments and, to bleed it to one slide edge,placement
Use background images for atmosphere. Use content images for specific visuals.
Tips
- Match your content to the layout. The
metricslayout uses grid flow for several values; the data count determines the arrangement. - Check the gallery for each layout’s regions and accepted content kinds before pinning a block with
region. - 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