Quick Export

approved

by mikagosz

Right-click a note or a text selection to save a copy outside the vault as .md or .txt. - This plugin has not been manually reviewed by Obsidian staff.

203 downloadsUpdated 1mo agoMIT

Quick Export

An Obsidian plugin that saves a copy of a note — or just the text you selected — to a folder outside the vault, as .md or .txt.

Desktop only: it uses Node's filesystem APIs, which are not available on iOS or Android.

Right-click a note

In the file explorer, on a tab, or on the note title:

  • Export a copy as Markdown
  • Export a copy as plain text

The note does not have to be open. If it is open with unsaved edits, the export takes the live editor content rather than the older copy on disk.

Only markdown notes get these items; right-clicking an image or a PDF leaves the menu untouched.

Right-click a selection

Select text inside a note, then right-click it:

  • Export selection as Markdown
  • Export selection as plain text

These items appear only when something is selected, so the editor's context menu stays clean during ordinary writing.

Command palette and hotkeys

The same four operations are also registered as commands, visible only while an editor is active:

CommandWrites
Export note as Markdownwhole note → .md
Export selection as Markdownselection → .md
Export note as plain textwhole note → .txt
Export selection as plain textselection → .txt

Assign a hotkey under Settings → Hotkeys, filtering by "Quick Export". Four hotkeys for four variants is usually overkill — bind the one you actually use and reach the rest from the menus.

File naming

Exports are named <note name>-<timestamp>.<ext>, for example Meeting notes-2026-08-07_143045.md.

Characters that are illegal in file names (/ \ : * ? " < > |) are replaced with -, and the note-name portion is capped at 80 characters. The timestamp uses local time, not UTC, so an evening export is not stamped with the previous day.

Settings

SettingDefaultEffect
Export folder~/DesktopDestination directory. A leading ~ expands to your home folder.
Timestamp formatReadable2026-08-07_143045 or 2026-08-07T14-30-45.
Also copy to clipboardOffMirrors the exported text to the clipboard. A clipboard failure never invalidates a successful write to disk.

Development

Requires Node 18 or newer.

npm install
npm run dev

npm run dev watches src/ and rebuilds main.js on save. To pick up changes in Obsidian without restarting it, install Hot Reload into your development vault.

Production build — this one also runs tsc -noEmit, so type errors fail the build:

npm run build

Lint, including the Obsidian-specific guideline rules:

npm run lint

Testing against a vault

Symlink the repo into a development vault rather than copying it:

ln -s /path/to/this/repo ~/obsidian-dev-vault/.obsidian/plugins/quick-export

Do not develop against a vault you care about — a half-finished export plugin has write access to real files.

Installing into a real vault

Settings → Community plugins → Browse, search for Quick Export, install and enable it. Updates then arrive on their own.

Installing by hand, for a pre-release build

Copy the two build artifacts (not the whole repo) into <vault>/.obsidian/plugins/quick-export/:

cp main.js manifest.json <vault>/.obsidian/plugins/quick-export/

Then Settings → Community plugins → Reload plugins, and enable Quick Export.

A copy installed this way does not update itself.

Layout

src/main.ts        plugin entry, commands, file-menu and editor-menu wiring
src/exporter.ts    text extraction, file naming, disk write, clipboard
src/settings.ts    settings interface, defaults, settings tab

exporter.ts exposes two entry points over a shared write path: exportText for anything driven by an open editor, and exportFile for the context-menu case where a note may not be open at all.

What it touches

The plugin reads; it never modifies the vault. There are no calls to vault.modify, vault.delete, vault.trash, vault.rename or vault.create, and no replaceSelection / replaceRange on the editor.

The only filesystem operation is a single fs.writeFile into the configured export folder. The plugin does not create that folder — a path that does not exist produces an error notice rather than a surprise directory.

License

MIT

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.