Blog

Zero data retention — how AnyMD handles your documents

10 Aug 2026 · 4 min read


TL;DR: AnyMD does not store, read, or log your document content. Files are converted in memory and discarded instantly. The only thing we track is page count — for billing. Full stop.

What we actually store

When you upload a document to the AnyMD API, here is everything we record:

  • Page count — how many pages your document had. This is subtracted from your monthly allowance.
  • Timestamps — when the conversion happened.
  • HTTP status code — 200 for success, 4xx/5xx for errors.
  • Bytes in/out — rough size metrics.
  • Latency — how long the conversion took.

That is it. No filenames beyond what appears in the response. No document text. No extracted content. No metadata.

What we never do

  • We do not store uploaded files. Files are read into memory, converted, and the memory is reclaimed. There is no disk write, no database blob, no archive.
  • We do not inspect document content. We do not read, analyse, summarise, or classify your documents. The Rust conversion engine processes bytes — it has no awareness of what the document says.
  • We do not train on your data. Your documents never enter a training set, fine-tuning pipeline, or model improvement loop.
  • We do not log content. Server logs contain IP addresses, timestamps, page counts, and HTTP codes — nothing that could reconstruct a document or reveal its contents.
  • We do not share data. There is nothing to share. Page counts are not personally identifiable.

In-memory conversion pipeline

Every conversion follows this exact path:

  1. Your file is uploaded via HTTPS (TLS 1.3).
  2. The Rust server reads the entire file into a memory buffer — no temp files, no disk writes.
  3. The document parser processes the buffer and produces Markdown output.
  4. The Markdown is sent back in the HTTP response.
  5. The buffer is dropped. The content is gone. No garbage collector sweep needed — Rust's Drop trait guarantees immediate deallocation.

The entire pipeline is synchronous and in-process. There are no queues, no workers, no sidecars, no databases that touch your document content. The file enters, is converted, leaves, and vanishes — all within a single HTTP request lifecycle.

Why this matters

Most document processing services either cache uploaded files for "performance optimisation," store them for AI training data, or log enough metadata to reconstruct document contents. This is a feature for some use cases — but if you're processing:

  • Legal documents under client confidentiality
  • Medical records (GDPR / HIPAA-sensitive)
  • Proprietary business data you don't want cached anywhere
  • Personal information you'd rather not have stored

...you need an API that treats your data as ephemeral by default. That is AnyMD.

Comparison with alternatives

FeatureAnyMDPyMuPDF4LLMdoclingmarker
In-memory only⚠️ (local lib)⚠️ (local lib)⚠️ (local lib)
No content logging⚠️ (depends on host)⚠️ (depends on host)⚠️ (depends on host)
No AI training on data✅ Guaranteed⚠️ (local lib)⚠️ (local lib)⚠️ (local lib)
EU servers only⚠️⚠️⚠️
Data retention policyZero (documented)N/A (local tool)N/A (local tool)N/A (local tool)

Note: PyMuPDF4LLM, docling, and marker are local Python libraries, not hosted APIs. Privacy depends entirely on where and how you run them. AnyMD is a hosted API with an explicit, documented zero-retention guarantee.

EU hosting

AnyMD runs entirely on servers located in the European Union (Hetzner, Finland). Data never leaves EU jurisdiction. This matters for GDPR compliance — Article 28 (processors) and Article 32 (security) are inherently satisfied when the data never leaves memory on your own infrastructure or our EU servers.

Page count — the only metric

Why do we track page count at all? Because it is the fairest billing metric for document conversion. A 1-page text file is not the same cost to process as a 200-page scanned PDF, and flat-rate pricing would overcharge small users or undercharge large ones. Page count is:

  • Objectively measurable
  • Impossible to reverse-engineer into document content
  • Correlated with actual processing cost

If page count were enough to reconstruct a document, compression algorithms would not exist.

The bottom line

AnyMD is designed for the privacy-conscious developer. If your documents are sensitive — commercially, legally, or personally — you do not need to trust us. You need to verify that the technical architecture makes it impossible for us to do anything other than convert and forget. The in-memory pipeline, Rust's immediate deallocation, and our zero-retention logging policy mean there is literally nothing to leak.

Start converting — free tier, 100 pages/month, no card required.


← Read more →