Tutorial2026-04-136 min

Translate PowerPoint Files via API — 8 Languages, Formatting Preserved

Translate .pptx into German, French, Spanish (8 languages) without breaking fonts, colors, or layout. $0.02/slide. Concise mode for tight text boxes.

SlideForge translates .pptx files into 8 languages while preserving every font, color, chart, and image. Upload a deck, pick a target language, get the translated .pptx back in seconds. $0.02 per slide. Text-run-level replacement — no regeneration, no broken layouts.

Why PowerPoint translation is hard

Translating a slide deck is deceptively difficult. Google Translate handles the words fine, but slides aren't documents — they're spatial layouts where every element has a precise position and size.

  • Text expansion — German text is ~30% longer than English. “Revenue” becomes “Einnahmen”. “Key Performance Indicators” becomes “Leistungskennzahlen.” Text boxes overflow.
  • Font fallback — some fonts don't support accented characters or CJK scripts. Text silently falls back to a system font and looks wrong.
  • Charts and tables — embedded chart labels, table headers, and axis titles need translation too. Most tools skip these entirely.
  • Formatting loss — copy-pasting translated text back into slides destroys bold, italic, color, and font size within mixed-format text runs.

The usual workflow: export to text, translate, manually paste back into 47 text boxes across 15 slides. Budget two hours per deck.

How SlideForge handles it

The translation engine works at the text-run level. It reads every text run in the .pptx (including tables, charts, and speaker notes), translates with context awareness (the LLM sees surrounding runs for consistency), and writes the translated text back into the same run — preserving font, size, color, bold, italic, and position.

When translation expands text beyond its original shape bounds, the response includes overflow warnings per slide so you know which text boxes might need manual width adjustment.

Quick start

curl -X POST https://api.slideforge.dev/v1/translate \
  -H "Authorization: Bearer sf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "SLIDE_JOB_ID",
    "target_language": "de"
  }'

Returns 202 Accepted with a job_id. Poll GET /v1/jobs/{job_id} until complete. The translated .pptx is at pptx_url.

Supported languages

Eight languages today: English, German, French, Spanish, Italian, Portuguese, Dutch, Polish. Source language is auto-detected by default.

Three translation paths

1. From a previous SlideForge job

If you generated or rendered a slide with SlideForge, just pass the job_id. The engine grabs the .pptx from storage and translates it.

# Translate a slide you already generated
resp = requests.post(
    "https://api.slideforge.dev/v1/translate",
    headers={"Authorization": "Bearer sf_live_YOUR_KEY"},
    json={
        "job_id": "generate-abc123",
        "target_language": "fr",
    },
)

2. From an uploaded file

Send the .pptx as base64 for files under ~10 MB:

import base64, requests

with open("deck.pptx", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()

resp = requests.post(
    "https://api.slideforge.dev/v1/translate",
    headers={"Authorization": "Bearer sf_live_YOUR_KEY"},
    json={
        "pptx_base64": b64,
        "target_language": "es",
        "include_notes": True,  # also translate speaker notes
    },
)

3. Via MCP

In Claude Desktop, use the translate_deck tool. The agent handles upload, polling, and preview inline. Or use upload_file with purpose: "translate" for files from your local machine.

Options

  • include_notes: true — also translate speaker notes (default: false)
  • include_tables: true — translate table cells (default: true)
  • concise_mode: true — ask the LLM to prefer shorter translations for tight text boxes (default: false)
  • source_language: "auto" — auto-detect source language (default)

Pricing

$0.02 per slide, any deck size. A 20-slide deck costs $0.40. Failed translations are refunded. Compare that to professional translation services ($5-15 per slide) or the hours spent copy-pasting text back into formatted slides.

Concise mode for German and French

German and French translations often expand 20-30% in length. Set concise_mode: trueto instruct the LLM to prefer shorter phrasings where possible — “Umsatz” instead of “Umsatzerlöse,” “CA” instead of “Chiffre d'affaires.” The result still reads naturally but fits tighter text boxes.

Get started

Sign up for $3 free credit (enough for 150 slides of translation), or read the API reference.

Frequently asked questions

What languages does SlideForge support for translation?

Eight languages: English, German, French, Spanish, Italian, Portuguese, Dutch, and Polish. Source language is auto-detected by default.

Does translation break the slide formatting?

No. SlideForge translates at the text-run level, preserving font, size, color, bold, italic, and position. When text expands (e.g. English→German ~30%), the response includes overflow warnings per slide.

How much does PowerPoint translation cost?

$0.02 per slide, any deck size. A 20-slide deck costs $0.40. Failed translations are refunded.

Try SlideForge free

$3 credit, no card required. Generate your first slide in under a minute.