DEV Community

Cover image for Why I Built a 100% In-Browser, Privacy-First Markdown Converter
moamen abou elsaoud
moamen abou elsaoud

Posted on

Why I Built a 100% In-Browser, Privacy-First Markdown Converter

Working with Markdown is great—it is the universal lingua franca for READMEs, technical documentation, static site generators, and now LLM prompt context (RAG pipelines).

However, getting data into Markdown from real-world documents is often a pain.

We've all been there:

  • Installing heavy CLI tools like Pandoc and dealing with missing LaTeX or OS dependencies.
  • Uploading confidential work PDFs or financial spreadsheets to sketchy online converters that process files on unknown servers.
  • Manually cleaning up messy tables copied from Excel or HTML markup.

To solve this friction, I built MD-Convert — a free, lightweight, privacy-first web utility designed to convert almost any document into clean Markdown directly inside your browser.


The Core Philosophy: 100% Client-Side Privacy

The biggest drawback of modern cloud file converters is data privacy. When you upload a company document, an .ipynb notebook containing proprietary code, or an internal spreadsheet to a typical web converter, your data leaves your machine.

With MD-Convert (md-convert.org), all parsing algorithms and conversions run 100% locally in your browser.

  • 🔒 Zero Server Uploads: Your files are parsed in-memory on the client machine.
  • Zero Installation: No pip install, no brew install pandoc, and no Node.js scripts needed.
  • 🚀 Instant Processing: Conversions happen in milliseconds without waiting in server processing queues.

What Can You Convert? (16+ Supported Formats)

Here is a breakdown of the conversion workflows supported out of the box:

1. Documents & Notebooks to Markdown

  • PDF to Markdown: Extracts structured headers, paragraphs, and text without manual formatting (PDF to Markdown).
  • DOCX to Markdown: Converts Microsoft Word files, retaining headings, bold/italic typography, and lists.
  • Jupyter Notebooks (.ipynb): Renders code blocks and markdown cells cleanly into a unified documentation file.

2. Spreadsheets & Datasets to Markdown Tables

Converting spreadsheets to Markdown tables usually results in broken syntax. MD-Convert properly parses and formats:

  • Excel (.xlsx) & ODS
  • CSV & TSV
  • Structured Data: JSON, YAML, and XML files into formatted Markdown code blocks or structured tables.

3. Web & Migration

  • Live URLs & HTML: Strips boilerplate, CSS, and navigation to extract clean article Markdown.
  • Evernote (.enex): Seamlessly migrate old notes into personal Markdown vaults like Obsidian or Logseq.

Example: Quick Document Conversion Workflow

Instead of writing a custom Python parsing script:


bash
# Old workflow: Dependencies + CLI flags
pip install pdfminer.six
pandoc document.docx -f docx -t markdown -o output.md
Enter fullscreen mode Exit fullscreen mode

Top comments (4)

Collapse
 
kamalmost profile image
KamalMostafa

My first trial was to actually use the URL to MD and it didn't capture the images. not sure if this is what intended or not bu in my use-case I'd like to keep the images.

Collapse
 
__7b51d76b10fdb4b profile image

Thanks for testing the URL feature! Currently, the engine uses Mozilla Readability + Turndown to strip all boilerplate, ads, and media to leave just the pure article text. However, keeping image references (like ![alt/url)) is a great suggestion for those who need complete articles. I’ve noted this down as a potential toggle/setting for upcoming updates. Appreciate your input! 🙌

Collapse
 
kamalmost profile image
KamalMostafa

My Second trial was PDF and the output file was not good sorry for the bad news. keep up the good work and thanks for shairing.

Collapse
 
__7b51d76b10fdb4b profile image
moamen abou elsaoud

Thanks for the honest feedback! Just to share how it works under the hood: to keep your data 100% private, the tool uses Mozilla's pdf.js inside a Web Worker directly in your browser.
Because there's no backend server or heavy OCR engine involved, it currently only extracts the selectable text stream without reconstructing visual layouts, tables, or multi-columns. If the PDF had a complex layout or scanned pages, the raw text output can definitely look messy.
We're constantly looking at ways to improve text formatting heuristics purely in the browser. Thanks again for giving it a shot! 🚀