Skip to content

Latest commit

 

History

141 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pourdown icon

Pourdown

Turn any document into clean, editable Markdown.

GitHub release License: MIT Platform Website

A desktop Markdown editor that imports Word files, spreadsheets, PDFs, and presentations in one click, then lets you write and edit with a live visual preview — free, offline, and open source.

🌐 Website

Demo

demo.mp4

Importing a PDF and getting editable Markdown back in one click.

Screenshots

Home Page Home Without Sidebar Page

Import from Other Formats

Most writing lives in Word documents, spreadsheets, or slide decks — formats that are hard to version-control, collaborate on, or publish as-is. Pourdown lets you import any of them directly into an editable Markdown document, so you can clean up, restructure, and export without manual copy-pasting.

Why Markdown Import?

Files are converted to Markdown before processing to minimize token usage. Community benchmarks show Markdown is ~15% more token-efficient than JSON, and up to 96% more efficient than raw PDF when fed to LLMs

This approach was inspired by Microsoft's MarkItDown; see markdown-import.md for how Pourdown's Rust implementation works and how it differs.

What gets converted

Format What's preserved Known limitations
Word (.docx) Headings (styles + outline level), bold / italic / strikethrough, nested bullet and numbered lists, tables, hyperlinks, embedded images Vector images (EMF/WMF) can't be displayed; tracked changes and comments are dropped; a TOC placeholder is inserted
Spreadsheet (.xlsx / .xls / .ods) Each sheet becomes a section with a full GFM table; date columns are auto-detected and formatted as ISO dates; embedded images are extracted Capped at 500 rows per sheet; images can't be mapped to a specific cell/sheet
PDF Headings inferred from font-size ratios; paragraph flow sorted top-to-bottom; tables are detected via column-alignment clustering and ruling-line boxes and rendered as GFM tables; Table of Contents entries render as a bulleted list; equations are demarcated as $…$ / $$…$$; embedded images are extracted with adjacent figure/table captions used as alt text Text-based PDFs only — scanned / image PDFs are not supported; complex multi-column layouts may reorder; tables with deeply nested/bulleted wrapped cells may fall back to plain text; math is Unicode symbols demarcated in $…$/$$…$$, not reconstructed LaTeX
PowerPoint (.pptx) Slide titles become # headings; body text becomes paragraphs, one slide per section; embedded images are extracted Animations are not captured; vector images (EMF/WMF) can't be displayed

Extracted images are saved as sidecar files next to the imported document (an assets/ folder, relocated to <name>.assets/ alongside the .md once saved) and render live in the editor.

Import converts content to Markdown. It is not a round-trip format converter — exporting back to the original format will not restore the original layout exactly.

Features

  • Document Import — Convert Word, Excel, PDF, and PowerPoint files to Markdown in one click
  • Visual Markdown Editing — Write and edit Markdown the way you see it, without dealing with raw symbols
  • Source Mode — Toggle to raw Markdown text at any time
  • File Management — Open, save, and manage your Markdown files using native system dialogs
  • Rich Text Formatting — Bold, italic, lists, code blocks, blockquotes, and more
  • Auto-save — Your work is saved automatically at regular intervals
  • Find & Replace — In-document search with replace support; cross-file search in the sidebar
  • Multiple Themes — Choose from seven built-in UI themes
  • i18n — English and Traditional Chinese interface

Tech Stack

  • Frontend: React 18 + TypeScript
  • Editor: Tiptap v2 with extensions
  • Desktop: Tauri v2
  • State Management: Zustand
  • Styling: Tailwind CSS
  • UI Components: Custom components with shadcn/ui patterns
  • Build Tool: Vite

Getting Started

Prerequisites

  • Node.js (v20 or later)
  • pnpm (or npm/yarn)
  • Rust (for Tauri desktop builds)

Development

Start the development server with hot reload:

pnpm dev

For Tauri-specific development:

pnpm tauri dev

Building

Create an optimized production build:

pnpm build

Create the desktop application:

pnpm tauri build

Contributing

Contributions are welcome! See CONTRIBUTING.md for setup steps, the test-first workflow for conversion changes, and the PR process. The docs site has a full user guide (English / 繁體中文) if you want to understand a feature in more depth than this README covers.

Acknowledgements

The Markdown Import feature was inspired by Microsoft's MarkItDown — both projects are MIT-licensed. Pourdown is an independent reimplementation in Rust (not a fork or port); see markdown-import.md for details on how the two differ.

License

MIT

About

A desktop Markdown editor that imports Word files, spreadsheets, PDFs, and presentations in one click, then lets you write and edit with a live visual preview.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages