README file from
GithubCopy Linked File
Copy Linked File is a Windows desktop plugin for Obsidian. It adds a right-click action that copies the real file behind an internal link, local file URL, embed, or file menu item to the Windows clipboard.
Use it when a note contains a file link such as:
[[paper.pdf]]
![[data.xlsx]]
[[attachments/report.docx|report]]
[spreadsheet](attachments/book.xlsx)
[slides](<file:///I:/data/Research/20260509-0900%20Meeting/20260509-0900%20JC.pptx>)
After choosing Copy linked file, paste into File Explorer, email, chat apps, or browser upload controls as if you had copied the file from Explorer.
Requirements
- Obsidian desktop
- Windows
- PowerShell available as
powershell.exe
The plugin is marked isDesktopOnly because it uses Node.js and Windows clipboard APIs. macOS, Linux, iOS, and Android are not supported.
Usage
Right-click one of these targets and choose Copy linked file:
- A vault file in Obsidian's file explorer
- An internal wikilink or embed in the editor
- A Markdown link that points to a local
file:///URL - A rendered internal file link or embed when Obsidian provides the linked file menu
The plugin resolves vault targets using Obsidian's link resolver, resolves local file:/// URLs directly, then writes the target file into the Windows clipboard as a file drop list.
Privacy and security
- No network requests
- No telemetry
- No account required
- No note or attachment modifications
- Reads only the target vault file path needed for the copy action
- Invokes Windows PowerShell locally to write the file path into the system clipboard
The plugin encodes file paths as UTF-16LE base64 before passing them to PowerShell. This preserves paths containing spaces, commas, non-ASCII characters, and punctuation such as em dashes.
Development
Install dependencies:
npm install
Run checks:
npm test
npm run typecheck
Build the release asset:
npm run build
The release asset main.js is generated at the repository root and is intentionally ignored by git. Upload main.js and manifest.json to the GitHub release whose tag matches the manifest version.
Release checklist
- Update
manifest.jsonandversions.json. - Run
npm testandnpm run typecheck. - Run
npm run build. - Create a GitHub release with a tag matching
manifest.jsonversion. - Attach
main.jsandmanifest.jsonto the release. - Submit the plugin to
obsidianmd/obsidian-releases.
Community plugin entry template:
{
"id": "copy-linked-file",
"name": "Copy Linked File",
"author": "Ximkool",
"description": "Copy the vault file behind an internal link or file menu item to the Windows clipboard.",
"repo": "YOUR_GITHUB_USERNAME/obsidian-copy-linked-file"
}
License
MIT