Convert with markitdown or pandoc, share with mdshare
markitdown and pandoc turn anything into markdown. mdshare turns markdown into a link. Together they cover the full path from "PDF on disk" to "URL in someone's inbox" — no login, no account, no upload UI.
Each tool stays focused: converters convert, mdshare shares. Pipe one into the other and you get a one-line workflow that works for humans at a terminal and for AI agents calling tools.
markitdown → mdshare
markitdown
is Microsoft's converter for PDF, DOCX, PPTX, XLSX, HTML, audio (with transcription), and
images. Install it with pip install markitdown[all].
One-liner — convert and share:
markitdown report.pdf | curl -X POST \
-H "Content-Type: text/markdown" \
--data-binary @- \
https://mdshare.live/api/documents The response is JSON with a share_url field. Open it, send it to a teammate,
paste it into Slack — that's the whole flow.
If you want the URL extracted directly:
markitdown report.pdf | curl -sX POST \
-H "Content-Type: text/markdown" \
--data-binary @- \
https://mdshare.live/api/documents \
| jq -r .share_url pandoc → mdshare
pandoc handles a wider format matrix (LaTeX, EPUB, RST, OPML, org-mode, Jupyter notebooks, and more). Use GitHub-flavored markdown as the output target — it round-trips cleanly through mdshare's renderer.
pandoc thesis.tex -t gfm | curl -X POST \
-H "Content-Type: text/markdown" \
--data-binary @- \
https://mdshare.live/api/documents For DOCX with embedded images, extract media to a folder first (mdshare doesn't host binaries — only markdown):
pandoc spec.docx -t gfm --extract-media=./media -o spec.md
# review spec.md, then:
curl -X POST -H "Content-Type: text/markdown" \
--data-binary @spec.md \
https://mdshare.live/api/documents Docling → mdshare
Docling
(IBM) is purpose-built for RAG pipelines — PDF, DOCX, PPTX, HTML, images, with strong
table and layout recovery. Install with pip install docling.
docling report.pdf --to md --output - | curl -X POST \
-H "Content-Type: text/markdown" \
--data-binary @- \
https://mdshare.live/api/documents Marker → mdshare
Marker
is the go-to PDF→markdown converter for LLM ingestion — fast, accurate on math and
tables, GPU-accelerated. Install with pip install marker-pdf.
marker_single paper.pdf --output_dir ./out
curl -X POST -H "Content-Type: text/markdown" \
--data-binary @./out/paper/paper.md \
https://mdshare.live/api/documents Firecrawl → mdshare
Firecrawl scrapes any URL and returns clean markdown — strips nav, ads, and boilerplate. Useful for turning a blog post or doc page into a shareable artifact you can annotate.
curl -sX POST https://api.firecrawl.dev/v1/scrape \
-H "Authorization: Bearer $FIRECRAWL_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/post","formats":["markdown"]}' \
| jq -r .data.markdown \
| curl -X POST -H "Content-Type: text/markdown" \
--data-binary @- https://mdshare.live/api/documents Jina Reader → mdshare
Jina Reader
is a free URL→markdown service — prefix any URL with r.jina.ai/ and you get
clean markdown back. No API key needed for basic use.
curl -s https://r.jina.ai/https://example.com/post \
| curl -X POST -H "Content-Type: text/markdown" \
--data-binary @- https://mdshare.live/api/documents From an AI agent (MCP)
If you're driving this from Claude, Cursor, Windsurf, or another MCP client, install the mdshare MCP server once:
npx mdshare-mcp
Then ask the agent to convert and share. It runs markitdown,
pandoc, docling, or marker via shell, then calls
upload_markdown with a
file_path argument — the markdown never enters the conversation context, so
a 200-page PDF costs the same tokens as a haiku.
Full setup for every supported client: Share markdown with AI.
Why split conversion and sharing?
markitdown and pandoc are both excellent at what they do — there's no good reason to rebuild conversion server-side, and plenty of reasons not to (MIME parsing, security surface, format drift). mdshare's job ends and begins at "here's some markdown, give me a link." Keeping the layers separate means each one stays small and the pipe between them stays a single character.
The same logic runs in reverse — if you already have markdown, mdshare doesn't care where it came from. Hand-written, generated by an LLM, exported from Notion or Obsidian, piped out of pandoc — same endpoint, same response shape, same shareable link.
FAQ
Does mdshare convert PDF or DOCX?
No — by design. Use markitdown or pandoc upstream. mdshare is the sharing layer; it accepts markdown only. This keeps the service tiny, fast, and free.
What about images and other binaries?
mdshare stores markdown text only. If your converter extracts images, they'll appear as local file references in the markdown — those won't render in the shared view. Either host the images elsewhere (GitHub, S3, Imgur) and rewrite the markdown to point at them, or strip the images before uploading.
How long does the link last?
90 days. Re-upload to refresh, or generate a new link from the admin URL. mdshare is built for ephemeral sharing, not archival.
Can I edit after uploading?
Yes — the create response includes an admin_url for editing in the browser,
plus an edit_key if you want to PUT or PATCH from your script. Re-running
markitdown and pushing a PATCH is a common loop for documents that change underneath you.