Skip to content

athuKawale/markitdown_ui

Repository files navigation

MarkItDown UI — Beautiful File-to-Markdown Web Dashboard

A beautiful web-based console dashboard and local API proxy service for Microsoft's MarkItDown document converter library. Convert PDFs, Word, PowerPoint, Excel, Images (with OCR), Audio (transcription), EPubs, HTML pages, ZIPs, and YouTube links into Markdown.

MarkItDown UI Console

Built with clean, premium custom CSS (dark-theme console style) and vanilla JavaScript, supporting multi-file queues, inline prerequisite validation, and multiple credentials management modes.


🌟 Support the Project

If you find this project useful, please consider giving it a star on GitHub! It helps other developers discover the project and keeps development active.

GitHub Stars


Key Features

  1. Multi-File Queue: Drag and drop multiple files to convert them sequentially. Individual cards show conversion progress (converting, done, error) and allow dismissing items.
  2. Context-Aware Visual Input: Drop zones automatically disable when using URL-only presets (like YouTube).
  3. Pre-flight Format Validation: Supported format badges and file chooser dialog filters update dynamically based on the chosen preset. Incompatible uploads are blocked immediately (both in UI and backend API).
  4. Robust YouTube Transcripts: Utilizes yt-dlp subtitle track analysis to bypass timedtext extraction limits and PoToken/signature restrictions, with automatic fallback for auto-generated captions.
  5. Offline Preview: Offline markdown rendering using bundled marked.min.js.

Key Security Modes

To suit both open-source localhost setups and shared web deployments, MarkItDown UI supports two methods for managing API credentials:

Mode A: Personal Mode (Client-Side Encryption Vault)

  • Use Case: Local developer installations.
  • How it works: Enter your API key (e.g. OpenAI or Azure) in the UI Settings. The frontend derives a key using PBKDF2 from a master passphrase and encrypts your keys using authenticated AES-GCM before saving them in localStorage.
  • Security: Keys are decrypted in-memory only. They never touch the server disk in plaintext.

Mode B: Server Env Mode (Hosted / Admin Configured)

  • Use Case: Deploying on a server or shared Docker infrastructure.
  • How it works: Set API credentials in the server's .env configuration file. The backend reads these at startup.
  • Security: The browser never sees, requests, or stores these keys. The frontend dynamically detects their presence on the server and bypasses key prompt fields automatically.

Getting Started

Option 1: Running Locally (Native Scripts)

Prerequisites

This project uses uv, a fast Python package and project manager.

  • macOS/Linux: uv will be installed automatically by the setup script if not found.
  • Windows: uv will be installed automatically by the setup batch script if not found.
  • Python: Python 3.10+ is required on the system.

macOS / Linux

# 1. Install dependencies (creates .venv and downloads assets using uv)
chmod +x scripts/*.sh
./scripts/install.sh

# 2. Run the application (starts local server using uv run)
./scripts/start.sh

Windows

:: 1. Install dependencies
scripts\install.bat

:: 2. Run the application
scripts\start.bat

Option 2: Running via Docker (Recommended for Hosting)

We provide Docker files to easily package and run the application. System dependencies (such as ffmpeg for speech transcription) are pre-bundled in the container.

1. Setup Environment Configuration

Copy the template file to .env and fill in any keys:

cp .env.example .env

2. Run with Docker Compose (Local & Testing)

Use the wrapper script:

chmod +x scripts/docker-build.sh
./scripts/docker-build.sh

Or run directly:

docker compose up -d --build

The application will be accessible at: http://localhost:7432

3. Production Deployment (with Nginx HTTPS Reverse Proxy)

The production compose setups binds the application behind an Nginx container serving SSL:

  1. Place your SSL certificate and key files in ./nginx/certs/cert.pem and ./nginx/certs/key.pem.
  2. Launch the production compose:
    docker compose -f docker-compose.prod.yml up -d --build

Configuration

You can customize the host and port in two places:

  • Local Native Run: Edit config.json in the root directory.
  • Docker Compose Run: Edit PORT in the .env file.

License

This project is licensed under the Apache License 2.0. See the LICENSE file for the full license text.

About

No description, website, or topics provided.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors