Education has specific format requirements that don't fit neatly into consumer tools. Lecture slides need to become PDF handouts. Screen-recorded lectures need to be in MP4 at a specific bitrate for Moodle or Canvas. Word documents need to be accessible to screen readers. Assignment templates need to work for students who don't have Microsoft Office. Each of these is a routine conversion task — but doing them manually for every course, every semester, adds up.

File conversion needs in education

The conversion requirements that come up across educational settings:

  • Lecture handouts — PPTX/PPT slides → PDF for printing or LMS upload
  • Video for LMS — screen recordings and lecture captures in MOV or MKV → MP4 for Canvas, Moodle, or Blackboard
  • Accessibility formats — DOCX → PDF/UA, PPTX → accessible PDF, audio descriptions
  • Assignment templates — DOCX templates that students without Word need as ODT or PDF
  • Research materials — EPUB textbooks to PDF for annotation, academic PDFs to DOCX for editing
  • Audio content — MP3/AAC lecture recordings for podcast-style distribution
  • Archiving course materials — ZIP up semester materials for institutional archiving
  • Cross-platform compatibility — ODP/ODS from open-source tools → PPTX/XLSX for students using Office

Format pairs educators convert most often

The specific routes that come up in educational workflows:

  • PPTX / PPT → PDF — the universal handout format, preserves layout for all devices
  • DOCX / DOC → PDF — finalize assignments, rubrics, and syllabi as non-editable PDFs
  • MOV / MKV → MP4 — transcode lecture recordings for LMS upload (most require H.264 MP4)
  • MP4 → WebM — web-native video for courses served via browser, no plugin required
  • WAV → MP3 — compress uncompressed audio recordings for podcast or LMS distribution
  • EPUB → PDF — convert digital textbooks for annotation or printing
  • ODP → PPTX — LibreOffice Impress presentations for students using Microsoft Office
  • ODS → XLSX — LibreOffice Calc data files to Excel for compatibility
  • DOCX → ODT — share editable documents with students using LibreOffice

The browser tool for everyday course prep

For one-off conversions during course preparation, changethisfile.com works without an account. Drop in a PPTX and get a PDF. Drop in a WAV lecture recording and get an MP3.

Document conversions (PPTX, DOCX, EPUB) upload to the server and are auto-deleted after processing. Images and data formats (CSV, JSON, fonts) stay in the browser — files never leave your device.

Batch slide conversion

If you're preparing handouts for multiple sessions, you can drop several PPTX files at once. Each converts to a separate PDF. For whole-course batch jobs (converting an entire semester's slides at once), the API is more practical.

Video transcoding for LMS platforms

Most LMS platforms accept MP4 with H.264 video and AAC audio. Screen recordings often come out as MOV (Quicktime on Mac), MKV (OBS), or WebM. The API converts these to LMS-compatible MP4.

import requests
from pathlib import Path

CTF_API_KEY = "ctf_sk_your_key_here"

def transcode_for_lms(in_path: str, out_path: str) -> str:
    """
    Convert lecture video to LMS-compatible MP4.
    Supports MOV, MKV, AVI, WebM, WMV input.
    """
    source_ext = Path(in_path).suffix.lstrip(".").lower()
    with open(in_path, "rb") as f:
        resp = requests.post(
            "https://changethisfile.com/v1/convert",
            headers={"Authorization": f"Bearer {CTF_API_KEY}"},
            files={"file": f},
            data={"source": source_ext, "target": "mp4"},
            timeout=300,  # Lecture videos can be long
        )
    resp.raise_for_status()
    Path(out_path).write_bytes(resp.content)
    print(f"Transcoded: {Path(in_path).name} → {out_path}")
    return out_path

# Example: convert OBS recording for Canvas upload
transcode_for_lms(
    "./recordings/week-03-lecture.mkv",
    "./lms-ready/week-03-lecture.mp4"
)

FFmpeg handles the transcoding server-side. For a 45-minute lecture video, expect 2-5 minutes of processing time. Use async mode for batch transcoding so you don't wait for each file.

Code example: batch PPTX → PDF for semester handouts

Convert an entire semester's slide deck folder to PDFs at the start of each term.

import requests
import os
from pathlib import Path

CTF_API_KEY = "ctf_sk_your_key_here"

def convert_slides_to_pdf(slides_dir: str, output_dir: str) -> dict:
    """
    Convert all PPTX and PPT files in a directory to PDF.
    Returns dict with lists of converted and failed files.
    """
    in_dir = Path(slides_dir)
    out_dir = Path(output_dir)
    out_dir.mkdir(parents=True, exist_ok=True)

    slide_files = list(in_dir.glob("*.pptx")) + list(in_dir.glob("*.ppt"))
    print(f"Converting {len(slide_files)} slide files to PDF...")

    converted, failed = [], []
    for slide_file in sorted(slide_files):
        source_ext = slide_file.suffix.lstrip(".").lower()
        out_path = out_dir / slide_file.with_suffix(".pdf").name
        try:
            with open(slide_file, "rb") as f:
                resp = requests.post(
                    "https://changethisfile.com/v1/convert",
                    headers={"Authorization": f"Bearer {CTF_API_KEY}"},
                    files={"file": f},
                    data={"source": source_ext, "target": "pdf"},
                    timeout=120,
                )
            resp.raise_for_status()
            out_path.write_bytes(resp.content)
            print(f"  OK: {slide_file.name} → {out_path.name}")
            converted.append(str(out_path))
        except Exception as e:
            print(f"  FAIL: {slide_file.name}: {e}")
            failed.append(str(slide_file))

    print(f"\nDone: {len(converted)} converted, {len(failed)} failed")
    return {"converted": converted, "failed": failed}

# Convert all slides for Spring 2026 semester
result = convert_slides_to_pdf("./CS101-Spring2026/slides", "./CS101-Spring2026/handouts")

Pricing for educational use

PlanConversions/monthPriceRight for
Free1,000$0Individual educators, occasional batch conversions
Hobby10,000$29/moInstructional design teams, multiple courses per semester
Startup50,000$99/moLMS integration, institution-wide automated workflows

Individual educators doing manual course prep typically stay on the free tier. The Hobby plan suits instructional design teams with recurring batch workflows each semester. Academic institutions building automated LMS pipelines typically start at Startup.

FAQ

Does PPTX to PDF preserve animations?

No — PDF is a static format. Animations are flattened; each slide appears in its final state. For handouts, this is usually what you want. If students need to see the animation sequence, share the PPTX or export as a video instead.

What's the maximum video file size for lecture recordings?

Free tier: 25MB per file (covers short demos, not full lectures). Hobby plan and above have higher limits for full-length lecture videos. A 45-minute 1080p MP4 lecture is typically 500MB-2GB depending on recording settings. Use the Startup plan or above for full lecture video pipelines.

Will LibreOffice-converted PDFs work with screen readers?

Basic accessibility (text reading order, document structure) is preserved. For full PDF/UA compliance with proper heading structure, alt text, and reading order, additional post-processing with a PDF accessibility tool is needed. The conversion gives you a readable PDF, not a certified accessible one.

Can I convert EPUB textbooks to PDF for annotation?

Yes — EPUB to PDF is supported via Calibre. The output is suitable for annotation in most PDF readers. Complex textbooks with mathematical formulas or custom fonts may not render perfectly. Test with a representative chapter first.

What about MOBI or AZW3 Kindle books?

MOBI, AZW3, and other Calibre-supported formats convert to EPUB and PDF. Note that DRM-protected Kindle books cannot be converted — this applies to purchased content with DRM, not DRM-free ebooks or content you've written yourself.

Can students use this tool without accounts?

Yes — the browser tool at changethisfile.com works without any account for all supported formats. Students can convert files directly. Image and data conversions run locally; document conversions upload to the server and are immediately deleted.

Specific conversion guides for educational formats: