⚑ Parse, extract, and render .pptx files via REST API

Upload a .pptx β€” get structured JSON back

PowerPoint's XML format is complex and undocumented in practice. PPTX.dev gives you clean JSON from any .pptx β€” one API call, no dependencies.

parse.tsTypeScript
import { PptxDev } from "pptx-dev";

const client = new PptxDev({ apiKey: process.env.PPTX_API_KEY });

// Parse a .pptx file β€” pass a URL or Buffer
const result = await client.parse({
  file: "https://example.com/presentation.pptx"
});

// result.slides β€” structured slide data
console.log(result.slides[0]);
// {
//   index: 0,
//   title: "Q4 Business Review",
//   text: ["Revenue grew 28% YoY", "3 new enterprise accounts"],
//   shapes: [{ type: "rect", x: 100, y: 200, width: 400, height: 50 }],
//   charts: [{ type: "bar", data: { labels: [...], values: [...] } }],
//   images: [{ id: "img1", mimeType: "image/png", base64: "..." }],
//   thumbnail: "https://api.pptx.dev/thumbnails/slide-0.png"
// }
<300ms
Avg parse time
PNG/SVG/PDF
Render formats
OOXML
Full spec coverage
REST + MCP
Integration surfaces

You shouldn't have to become a .pptx format expert

PowerPoint's OOXML format is thousands of pages of spec. Writing fragile XML parsers that break on real-world files wastes weeks of engineering time β€” and they still miss edge cases.

β€œDevelopers should be able to work with any file format through a clean API.”

How it works

Three steps. No XML. No dependencies.

1

Upload a .pptx

Send a URL or file buffer to the parse endpoint.

2

Get structured JSON back

Text, shapes, charts, images, and metadata β€” all extracted and organized.

3

Render, index, or process it

Feed it to LLMs, build a slide viewer, power search, or convert formats.

Everything extracted. Nothing lost.

Deep OOXML parsing β€” every element in your file, structured for use.

πŸ“

Full text extraction

Every text box, title, body, and note extracted with formatting: font size, bold, color, alignment, and paragraph structure.

πŸ“Š

Native chart data

Bar, line, pie, scatter, waterfall β€” all chart types parsed to raw data arrays. No screenshot, actual numbers.

πŸ–ΌοΈ

Embedded images

Every image extracted as base64 or a CDN URL. JPEG, PNG, SVG, EMF β€” all formats supported.

πŸ”·

Shape geometry

Rectangles, circles, connectors, and custom shapes with exact position, size, fill, border, and z-order.

πŸ—‚οΈ

Slide metadata

Slide notes, hidden slides, slide master info, layout names, and presentation-level metadata all included.

🎨

Pixel-accurate rendering

Render slides to PNG (up to 600 DPI), SVG with embedded fonts, or PDF. Server-side, no browser required. Powers slide preview UIs and PDF exports.

πŸ”—

Hyperlinks & actions

All hyperlinks, slide-to-slide links, and action buttons resolved with their targets.

🌐

Language agnostic

Pure REST API. Works with Python, Node.js, Go, Ruby, PHP β€” any HTTP client. Official SDKs for Node + Python.

API Reference

Simple REST API. Parse your first file in under 5 minutes.

POST/v1/parseParse a .pptx file

Request Headers

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Request Body

{
  "file": "https://...",       // URL to .pptx file, OR
  "file": "<base64>",          // Base64-encoded .pptx bytes

  "options": {
    "thumbnails": true,        // Render slide thumbnails (default: false)
    "images": "base64",        // "base64" | "url" | "none" (default: "url")
    "includeNotes": true,      // Include speaker notes (default: true)
    "includeHidden": false     // Include hidden slides (default: false)
  }
}

Response

{
  "id": "parse_abc123",
  "slideCount": 12,
  "title": "Q4 Business Review",
  "author": "Jane Smith",
  "createdAt": "2025-11-01T09:00:00Z",
  "slides": [
    {
      "index": 0,
      "title": "Q4 Business Review",
      "layout": "Title Slide",
      "hidden": false,
      "notes": "Welcome everyone...",
      "thumbnail": "https://api.pptx.dev/thumbnails/abc123/slide-0.png",
      "text": ["Q4 Business Review", "FY2025 Results"],
      "shapes": [
        { "type": "rect", "name": "Title 1", "x": 457200, "y": 274638,
          "width": 8229600, "height": 1143000, "text": "Q4 Business Review",
          "fill": "#1a1a2e", "fontColor": "#ffffff", "fontSize": 40 }
      ],
      "charts": [
        { "type": "bar", "title": "Revenue by Quarter",
          "data": { "labels": ["Q1","Q2","Q3","Q4"],
                    "series": [{ "name": "Revenue", "values": [1.2, 1.8, 2.1, 2.9] }] } }
      ],
      "images": [
        { "id": "img1", "mimeType": "image/png",
          "url": "https://api.pptx.dev/images/abc123/img1.png" }
      ]
    }
  ]
}
POST/v1/renderRender slides to PNG / SVG / PDF

Request Body

{
  "file": "https://...",       // URL to .pptx file, OR base64 bytes

  "options": {
    "format": "png",           // "png" | "svg" | "pdf"
    "dpi": 150,                // 72–600 (default: 150)
    "slides": "all",           // "all" | "1" | "1-5" | [0,2,4]
    "background": "original",  // "original" | "white" | "transparent"
    "svgFontMode": "embed",    // "embed" | "external" | "system"
    "password": ""             // for password-protected files
  }
}

Response

{
  "id": "render_abc123",
  "format": "png",
  "slideCount": 12,
  "slides": [
    {
      "index": 0,
      "url": "https://api.pptx.dev/renders/abc123/slide-0.png",
      "width": 1920,
      "height": 1080,
      "dpi": 150
    }
  ]
}
Node.js
import { PptxDev } from "pptx-dev";
import fs from "fs";

const client = new PptxDev({ apiKey: process.env.PPTX_API_KEY });

// Parse from URL
const result = await client.parse({
  file: "https://example.com/deck.pptx",
  options: { thumbnails: true }
});

// Or parse from local file
const buffer = fs.readFileSync("./deck.pptx");
const result2 = await client.parse({ file: buffer });

// Extract all text for search indexing
const allText = result.slides
  .flatMap(s => s.text)
  .join(" ");
Python
import pptxdev

client = pptxdev.Client(api_key="...")

# Parse from URL
result = client.parse(
    file="https://example.com/deck.pptx",
    options={"thumbnails": True}
)

# Loop over slides
for slide in result.slides:
    print(f"Slide {slide.index}: {slide.title}")
    for chart in slide.charts:
        print(f"  Chart: {chart['type']}")
        print(f"  Data: {chart['data']['series']}")
cURL
curl -X POST https://api.pptx.dev/v1/parse \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file": "https://example.com/presentation.pptx",
    "options": {
      "thumbnails": true,
      "images": "url",
      "includeNotes": true
    }
  }'

What developers build with pptx.dev

From search indexing to slide viewers β€” the parse API handles the hard part.

πŸ”

Search indexing

Extract all text from uploaded decks and push to Elasticsearch, Algolia, or Postgres full-text for instant slide search.

πŸ€–

AI processing

Feed slide content to LLMs for summarization, Q&A, translation, or deck-to-document conversion. Structured JSON, not raw binary.

πŸ–ΌοΈ

Slide preview gallery

Use thumbnail rendering to build a slide picker UI. Show previews without a frontend PowerPoint library.

πŸ“‹

Compliance auditing

Scan decks for sensitive data, brand violations, or outdated content. Parse β†’ check β†’ flag, fully automated.

πŸ”„

Format conversion

Extract content and re-render it in your own format β€” markdown, HTML, PDF, or a custom slide schema.

πŸ“ˆ

Data extraction

Pull chart data out of uploaded presentations for analytics pipelines. Get actual values, not screenshots.

🀝

MCP integration

Use pptx.dev as an MCP server inside Claude, Cursor, or any agent. Let AI directly parse, render, and extract data from decks without writing glue code.

Pricing

Pay per parse. Start free.

Free

$0

Forever free

  • βœ“ 100 parses / month
  • βœ“ Up to 50 slides per file
  • βœ“ Text + shapes + images
  • βœ“ JSON response
  • βœ“ Community support
Get API Key
POPULAR

Pro

$19/mo

or $179/year (save 21%)

  • βœ“ 5,000 parses / month
  • βœ“ Unlimited slides per file
  • βœ“ Slide thumbnails
  • βœ“ Chart data extraction
  • βœ“ Webhook support
  • βœ“ Priority support
Start Pro β€” $19/mo

Enterprise

Custom

Volume pricing

  • βœ“ Unlimited parses
  • βœ“ All Pro features
  • βœ“ SLA guarantee
  • βœ“ On-premise option
  • βœ“ Dedicated support
  • βœ“ Custom integrations
Contact Sales

Two paths for your PowerPoint integration

Build it yourself

  • βœ•Weeks writing fragile XML parsers
  • βœ•Breaks on real-world files with edge cases
  • βœ•Maintaining a library that nobody wants to own

Use pptx.dev

  • βœ“Ship your PowerPoint integration in a day
  • βœ“Handles every file thrown at it
  • βœ“One API call, no local dependencies

Ship your PowerPoint integration today

Free API key. 100 parses/month. Works with any HTTP client.

Try the API

No credit card required Β· 100 free parses/month