Tanjialin Labs40 downloadsCopy notes and selections as rich text or source-preserving Markdown for Google Docs, Word, Notion, Slack, email, and WeChat. Processes everything locally.
Copy an Obsidian selection or note in a format tailored for the app where it will be pasted. Every conversion runs locally inside Obsidian.
Target Copy 1.0.2 is the current open-source desktop release.
Read the Target Copy product story (Chinese) for its design intent and a closer look at the workflow.
Google Docs, Microsoft Word, Slack, and email clients interpret clipboard data in different ways. Target Copy asks for the destination and adapts the surrounding HTML while preserving the user's source, content, links, images, and code by default. Destination-specific handling appears as a compatibility note after copying.
| Destination | Clipboard output | Important behavior |
|---|---|---|
| Google Docs | Rich HTML + plain text | Semantic headings, bordered tables, nested lists, inline styles |
| Microsoft Word / WPS | Office-friendly HTML + plain text | Heading outline metadata, Calibri defaults, tables and code blocks |
| Notion | Semantic HTML + plain text | Clean pages, lists, tables, callouts, and code blocks |
| Slack | Lightweight HTML + plain text | Tables use aligned monospace text in both representations |
| Inline-CSS HTML + plain text | Portable light palette for Gmail, Outlook, and Apple Mail | |
| WeChat Official Account | Fully inline HTML + plain text | Mobile typography with original links, images, and source code preserved |
| Portable Markdown | Plain text | Standard Markdown with clickable Obsidian links for wikilinks |
| Plain text | Plain text | Readable headings, lists, tables, blockquotes, and code |
| Original source (optional) | Plain text | Exact source, including whitespace, properties, and markup |
| HTML source (optional) | Plain text | Portable HTML markup with inline styles |
All rich targets write both text/html and text/plain, allowing the receiving
application to choose its preferred representation. Slack receives readable text
when the editor uses the plain-text clipboard representation.
The source export destinations can be enabled in settings. Original source copies editor selections or whole Markdown/HTML files exactly. For an exact source selection, use the editor; Reading view supplies rendered content.
| Input | Portable Markdown output |
|---|---|
| Markdown containing a fenced HTML example | The complete fenced code example |
| Markdown containing raw HTML | The original HTML, as supported by Markdown |
| HTML file or Reading view selection | Markdown headings, links, emphasis, lists, tasks, and simple tables |
| Merged/nested tables, SVG, audio, video, or complex HTML | HTML preserving the structure and resource references |
Clickable wikilinks use obsidian:// and open the original vault. Recipients need
access to that vault to follow them. The destination editor controls support for
these links; Google Docs may retain only their labels and styling. The plain-text
clipboard representation includes the complete link address.
Portable Markdown represents highlighted text with inline <mark> elements.
[[source syntax]] or visible text only.Hover Copy for target… to open the enabled destinations, then choose one to copy immediately.

Enable only the apps and formats used in your workflow. The picker, context menu, and command palette show the same enabled destinations.

Open the gear beside a destination to adjust its title, internal links, and local images. Each inherited option displays its current value.

The copied content retains headings, inline formatting, lists, task states, tables, links, and source blocks in Google Docs.

The picker shows whether it will copy a selection or the whole document, the source format, and each destination's clipboard format. Destinations keep a stable order, with a marker on the last-used target.
In Settings → Target Copy, choose the Quick Copy destination at the top. In Copy destinations, toggle the apps you use, choose Adjust order to move them, or open the gear beside an enabled target to set its title, links, and image preferences. Inherited options show the current general value. Advanced settings contains optional limits for embedded images and note expansion. Limits default to unlimited.
Editor selections include the reference-link and footnote definitions they use. Original source remains an exact copy of the selected text.
Long-running conversions offer a Cancel copy button and command. The Last copy details command shows all compatibility notices from the latest successful copy. Copy-progress and compatibility notifications have separate settings.
Every conversion runs inside Obsidian. Target Copy processes the selection or note chosen by the user, expands referenced local Markdown notes, resolves vault images when image embedding is enabled, and writes the destination format to the system clipboard. Remote image references remain URLs for the destination editor to handle.
npm ci and npm run build in this directory.<your-vault>/.obsidian/plugins/target-copy/.main.js, manifest.json, and styles.css into that directory.The release archive contains exactly those three installable files.
The picker, Quick Copy, and Repeat Last commands are always available. Dedicated destination commands are registered only for destinations enabled in settings, so the command palette stays compact.
Target Copy: Copy for target…Target Copy: Quick copy using the default targetTarget Copy: Repeat the last copy targetTarget Copy: Cancel copy while a conversion is runningTarget Copy: Last copy detailsTarget Copy: Copy for … for each enabled destinationnpm ci
npm run check
npm run dev starts an esbuild watcher. Release archives package the generated
main.js with manifest.json and styles.css.
The conversion pipeline is:
selection or note
→ source cleanup
→ Obsidian MarkdownRenderer
→ semantic DOM normalization
→ destination adapter
→ text/html + text/plain clipboard bundle
See the architecture and dependency and license notes.
The complete plugin source, tests, translations, public documentation, build scripts, and public CI configuration are published under the MIT License. The plugin is a self-contained local Obsidian runtime. The production bundle uses Obsidian and its desktop clipboard bridge as host APIs; build and test tools are documented separately.