SourceDown

approved

by 0libote

Import documents, media, archives, and web pages as Markdown using Microsoft MarkItDown. - This plugin has not been manually reviewed by Obsidian staff.

361 downloadsUpdated 1mo agoMIT

SourceDown

Import complex documents and other sources into Obsidian using Microsoft MarkItDown, with optional Docling and Marker converters.

SourceDown converts PDFs, Office documents, Outlook messages, images, audio, web pages, YouTube transcripts, archives, and text-based formats into Markdown notes.

Features

  • Import files from the ribbon or your computer.
  • Convert vault attachments from the right-click menu.
  • Import web links; YouTube links require transcript support.
  • Save embedded images beside the generated note.
  • Preserve the source and conversion time in note properties.
  • Keep duplicate imports by giving them numbered filenames.
  • Choose a converter per file and see simple file-type recommendations.
  • Record the selected conversion engine in note properties.

Install

SourceDown is available from the Obsidian Community plugins marketplace.

  1. Open Settings → Community plugins → Browse.
  2. Search for SourceDown, then choose Install and Enable.
  3. Open SourceDown settings and choose Apply changes.

SourceDown is desktop-only and requires Obsidian 1.5 or newer plus Python 3.10 or newer.

Use

Choose files from the ribbon panel, paste a URL, or right-click a vault file.

Converted notes include source metadata. Embedded images are saved beside the note in an asset folder, and duplicate imports receive numbered filenames.

MarkItDown is the default and best general choice. Docling and Marker are optional, larger converters. Docling can help with complex layouts, OCR, tables, and scanned documents; Marker can help with equations, forms, images, tables, and technical documents.

Conversion engines and optional MarkItDown format support can be selected in SourceDown settings. Docling and Marker are disabled by default. Converter changes are installed into the existing environment; SourceDown rebuilds it only when it is damaged. Choose Apply changes after enabling support.

MarkItDown format support

SourceExtra enabled by defaultOpt-in extra
PDF, DOCX, PPTX, XLSXYes
Outlook MSG, legacy XLSOutlook or XLS
MP3, WAV, M4A, FLACAudio transcription
YouTube linksYouTube transcription
Web pages, HTML, CSV, JSON, XML, ZIP, EPUB, images, and plain textNo extra required

The default extras cover common document imports without installing every optional dependency. Existing installations keep their saved choices. Docling and Marker manage their own format dependencies.

Local installation

The plugin installs selected converters into a private virtual environment. On Windows this is %LOCALAPPDATA%\SourceDown\.venv; it does not modify global Python packages or store the environment inside your vault. The installation and selections are shared between vaults.

Docling and Marker are substantially larger than MarkItDown and may download models when first used. Marker model licensing has additional terms; review the Marker repository before enabling it.

The shared installation only grows when a vault applies its selections, so one vault cannot remove converters used by another. Converter status and version checks are local and do not contact PyPI. Local files are converted on your computer. Importing a URL or YouTube transcript requires network access to that source.

Develop

Requires Bun 1.3.14 or newer.

bun ci
bun run test
bun run check
bun run build

main.js is generated by bun run build and ignored by git. bun run deploy is optional and copies the release assets into a local vault when SOURCE_DOWN_DEPLOY_DIR or OBSIDIAN_PLUGIN_DIR is set, for example SOURCE_DOWN_DEPLOY_DIR="$HOME/.obsidian/plugins/sourcedown" bun run deploy.

Dependabot checks the Obsidian build dependencies weekly.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.