Skip to content

ParseOtter

CI Security Scan Release License: AGPL-3.0

Use ParseOtter for free at https://www.parseotter.com/.

ParseOtter is a free-to-use PDF/EPUB-to-Markdown conversion service and an open-source, self-hostable implementation powered by Cloudflare Workers, R2, D1, Durable Objects, Modal GPU inference, and marker-pdf.

Try the hosted service · Self-hosting guide · Public examples · Architecture

ParseOtter upload screen

Features

Feature Description
📄 PDF & EPUB conversion Upload any PDF or EPUB file and get clean, structured Markdown output
🖼️ Image extraction Figures, diagrams, and embedded images are extracted and included in the result
👀 Live Markdown preview Preview converted Markdown directly in the browser before downloading
📦 ZIP download Get a ZIP archive containing the Markdown file plus all extracted assets
GPU-powered Conversion runs on Modal GPUs using marker-pdf for high-quality OCR and layout analysis
🔒 No account required Upload and convert instantly — no signup, no login, no tracking
🛠️ Self-hostable Deploy your own instance on Cloudflare Workers + Modal with full control over data and privacy

How it works

  1. Upload — drag and drop a PDF or EPUB file in the browser
  2. Convert — the file is uploaded directly to Cloudflare R2, then dispatched to a GPU worker for conversion
  3. Preview & download — view the Markdown in-browser or download a ZIP with the Markdown and extracted images

Results are retained for 48 hours by default. No files are stored permanently.

Use It Free

The public hosted service is available at https://www.parseotter.com/. You can convert PDF and EPUB files to Markdown there without deploying this repository.

Use the repository when you want to run your own instance, inspect the architecture, or contribute changes.

Why ParseOtter?

ParseOtter is not just a converter wrapper. It is a complete, inspectable async document conversion service:

  • Browser uploads go directly to Cloudflare R2 through multipart upload sessions.
  • The API Worker owns task creation, status polling, download links, feedback, quotas, and retention metadata.
  • Durable Objects coordinate per-task state.
  • Modal GPU jobs run marker-pdf conversion and call the Worker back with HMAC-signed results.
  • Users get Markdown preview in the browser and a ZIP download containing Markdown plus extracted assets.

That makes ParseOtter useful when private documents, repeatable deployments, auditability, or AI/RAG ingestion workflows matter more than a one-off hosted upload form.

Who Is This For?

  • AI and RAG developers who need Markdown plus extracted assets from PDF or EPUB sources.
  • Documentation and knowledge-base teams preparing documents for search, ingestion, or review.
  • Self-hosters who want an auditable document conversion pipeline.
  • Operators who need explicit storage, retention, rate limiting, and callback behavior.
  • Contributors who want a production-style Cloudflare Workers and Modal example to inspect or extend.

What It Includes

  • Browser upload UI for PDF and EPUB files.
  • Direct multipart uploads from the browser to Cloudflare R2.
  • Cloudflare Worker API for task creation, upload orchestration, polling, feedback, and downloads.
  • D1 task state, feedback, abuse counters, and retention metadata.
  • Durable Object coordination per conversion task.
  • Modal GPU conversion backend using marker-pdf.
  • Markdown preview and ZIP download with extracted assets.
  • Default 48-hour result retention.
  • Turnstile, rate limiting, anonymous usage controls, and HMAC-signed Modal callbacks.

Known Limitations

  • Conversion quality depends on upstream marker-pdf behavior and the source document layout.
  • Complex tables, scanned documents, math-heavy PDFs, multi-column papers, and unusual encodings may need manual review or future conversion controls.
  • The hosted service is designed for interactive conversion, not unlimited batch ingestion.
  • Self-hosted deployments require Cloudflare and Modal resources; a one-command local-only deployment is not included yet.
  • Result retention is intentionally short by default. Operators should adjust retention, privacy notices, and access controls for their own environment.

Architecture

ParseOtter architecture

The stack has three deployable parts:

  • frontend: React + Vite app deployed as a Cloudflare Worker static asset app.
  • api-worker: Hono API deployed to Cloudflare Workers with D1, R2, Durable Objects, Cron, and Worker secrets.
  • modal-converter: Python 3.13 Modal app that runs GPU conversion jobs and calls the Worker back with signed results.

Self-Hosting Quick Start

Install local dependencies:

cd frontend
yarn install

cd ../api-worker
yarn install

cd ../modal-converter
uv sync

Run local checks:

cd frontend
yarn typecheck
yarn test
yarn build

cd ../api-worker
yarn cf-typegen
yarn typecheck
yarn test

cd ../modal-converter
uv run pytest

For a full self-hosted deployment, start with DEPLOYMENT.md. Use fresh D1/R2/Modal resources for a first public install.

Self-Hosting Configuration

Public example names use ParseOtter placeholders:

  • Frontend Worker: parseotter-web, parseotter-web-production
  • API Worker: parseotter-api, parseotter-api-production
  • D1: parseotter-tasks-dev, parseotter-tasks-production
  • R2: parseotter-files-dev, parseotter-files-production
  • Modal app: parseotter-converter-dev, parseotter-converter-production

Checked-in routes use example.com, yourdomain.com, and your-*.workers.dev placeholders. Replace every account ID, database ID, bucket name, endpoint, domain, and secret before deploying.

Privacy And Retention

In the default deployment model:

  • Uploaded source files and result ZIPs are stored in Cloudflare R2.
  • Task metadata, feedback, usage counters, and retention timestamps are stored in Cloudflare D1.
  • Result access expires after 48 hours by default.
  • A Worker Cron cleanup marks expired tasks and deletes recorded R2 input/output objects.
  • Browser local history is stored only in the user's browser local storage.

Self-hosters are responsible for their own privacy policy, user notices, Cloudflare/Modal configuration, data retention settings, logs, access controls, and abuse handling.

Documentation

Acknowledgements

ParseOtter builds on:

License

AGPL-3.0. See LICENSE.

About

Open-source, self-hostable PDF/EPUB-to-Markdown conversion service for AI, documentation, and knowledge-base workflows. Try it at https://www.parseotter.com/

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages