Better Paste
Removes tracking from links, fetches page titles, and cleans up pasted text from AI chats, terminals and PDF documents. - This plugin has not been manually reviewed by Obsidian staff.
The above warnings are based on limited information and might not always be accurate.
Data
| ID | better-paste |
| Author | Johan Sanneblad |
| Funding | Support the Author |
| Minimum Obsidian Version | 1.13.1 |
| Official Release Date | 2025-02-02 |
| Last update | 2026-09-26 |
Last Refresh
Obsidian Stats last refreshed the data behind this page on Oct 27, 2026.
| Community plugin snapshot | Oct 26, 2026 |
| Repository clone | last successful checkout Oct 7, 2026 |
| Release acquisition | release metadata checked Oct 7, 2026; latest main.js acquired |
Quick Links
- GitHub Repo
- View in Obsidian
- View on Obsidian Community
- View on the Obsidian Hub
- Author Website
- Support the Author
Changes
| Date | Changed Property | Old Value | New Value |
|---|---|---|---|
| 2025-02-02 | Plugin Added | ||
| 2025-02-24 | Plugin Removed | ||
| 2026-08-13 | Plugin Re-Added | ||
| 2026-08-13 | author | Cormac | Johan Sanneblad |
| 2026-08-13 | description | Improve copy-paste from pdfs by cleaning newlines. | Clean up what you paste. Save images into the vault, strip tracking from links, unwrap terminal output, and normalize AI typography. - This plugin has not been manually reviewed by Obsidian staff. |
| 2026-08-13 | repo | Cormac-C/obsidian-paste-plugin | johansan/better-paste |
| 2026-08-15 | description | Clean up what you paste. Save images into the vault, strip tracking from links, unwrap terminal output, and normalize AI typography. - This plugin has not been manually reviewed by Obsidian staff. | Copy images from Safari straight into your vault, paste links without tracking junk, fix broken terminal output, and clean up AI text. Just paste, and Better Paste handles the rest. - This plugin has not been manually reviewed by Obsidian staff. |
| 2026-08-17 | description | Copy images from Safari straight into your vault, paste links without tracking junk, fix broken terminal output, and clean up AI text. Just paste, and Better Paste handles the rest. - This plugin has not been manually reviewed by Obsidian staff. | Removes tracking from links, fetches page titles, and cleans up pasted text from AI chats, terminals and PDF documents. - This plugin has not been manually reviewed by Obsidian staff. |
Repository Data
| License | GPL-3.0-or-later in package.json GPL-3.0 in LICENSE file |
| Package Manager | npm |
| Uses Typescript | Yes |
| Installed Bundlers | esbuild |
| Installed Testing Frameworks | Vitest |
| Has Test Files | Yes |
Latest Release main.js Size | 493 KB |
| Detected ES Version | ES2022 |
| Probably Minified | Yes |
| main.js API Findings | 14 disclosures |
| Uses BRAT beta releases | No |
| Dependencies | None |
| Dev Dependencies | @codemirror/state, @eslint/js, @types/node, @vitest/coverage-v8, esbuild, eslint, eslint-plugin-obsidianmd, globals, knip, markdownlint-cli2, obsidian, prettier, stylelint, stylelint-no-unsupported-browser-features, tslib, typescript, typescript-eslint, vitest |
main.js API Findings
These findings come directly from Glass Lint's JavaScript and Obsidian rule catalogs applied to the latest release main.js. The confidence column is Glass Lint's definite/possible match certainty.
| Disclosure | Rule Descriptions |
|---|---|
| Clipboard Access | Reads clipboard data, Writes clipboard data |
| Codemirror Integration | Uses CodeMirror extension primitives |
| Editor Behavior | Registers editor extensions |
| Full Vault Access | Enumerates vault files |
| Lifecycle Events | Registers Obsidian lifecycle events |
| Markdown Processing | Uses markdown link helpers |
| Metadata Access | Reads Obsidian metadata cache |
| Network Access | Constructs or references URLs, Uses Obsidian request APIs |
| Platform Branching | Checks Obsidian platform flags |
| Plugin Storage Access | Reads or writes app-scoped storage and secrets, Reads plugin data, Writes plugin data |
| User Interface Access | Registers commands, Registers plugin settings UI, Uses Obsidian modal UI, Uses Obsidian notices |
| Vault Access | Accesses Obsidian vault APIs, Accesses attachment resource paths, Registers vault events |
| Vault Write | Deletes or trashes vault files, Writes vault files |
| Workspace Access | Registers Obsidian workspace events |
| Finding | Type | Confidence | Evidence |
|---|---|---|---|
| Reads or writes app-scoped storage and secrets | Warning | Definite | member_call of "app.loadLocalStorage" (2), member_call of "app.saveLocalStorage" (3) |
| Deletes or trashes vault files | Warning | Definite | member_call of "app.fileManager.trashFile" (2) |
| Reads clipboard data | Info | Definite | member_call of "navigator.clipboard.readText" |
| Writes clipboard data | Info | Definite | member_call of "navigator.clipboard.writeText" |
| Constructs or references URLs | Info | Definite | string_contains of "https://" (47), constructor of "URL" (13), constructor of "URLSearchParams" |
| Uses CodeMirror extension primitives | Info | Definite | import of "@codemirror/state" |
| Registers editor extensions | Info | Definite | member_call of "obsidian.Plugin" |
| Registers Obsidian lifecycle events | Info | Definite | member_call of "obsidian.Plugin" (3) |
| Uses markdown link helpers | Info | Definite | member_call of "app.fileManager.generateMarkdownLink" (5), member_call of "app.metadataCache.fileToLinktext" |
| Reads Obsidian metadata cache | Info | Definite | member_read of "app.metadataCache" |
| Uses Obsidian request APIs | Info | Definite | member_call of "obsidian" (2) |
| Checks Obsidian platform flags | Info | Definite | member_read of "obsidian" |
| Reads plugin data | Info | Definite | member_call of "obsidian.Plugin" (2) |
| Writes plugin data | Info | Definite | member_call of "obsidian.Plugin" (2) |
| Registers commands | Info | Definite | member_call of "obsidian.Plugin" (9) |
| Uses Obsidian modal UI | Info | Definite | class of "obsidian.Modal" (7) |
| Uses Obsidian notices | Info | Definite | constructor of "obsidian.Notice" (13) |
| Registers plugin settings UI | Info | Definite | class of "obsidian.PluginSettingTab", member_call of "obsidian.Plugin" |
| Accesses Obsidian vault APIs | Info | Definite | member_read of "app.vault" (4) |
| Enumerates vault files | Info | Definite | member_call of "app.vault.getFiles", member_call of "app.vault.getFolderByPath" |
| Registers vault events | Info | Definite | member_call of "app.vault.on" |
| Accesses attachment resource paths | Info | Definite | string_contains of "obsidian://" |
| Writes vault files | Info | Definite | member_call of "app.vault.createBinary" |
| Registers Obsidian workspace events | Info | Definite | member_call of "app.workspace.on" (2) |
The above data may not be accurate and contain errors. For more information refer to the page about data collection.
Lines of Code
The plugin has a total of 22559 lines of code. The following chart shows the lines of code split by programming language.
Downloads
The following chart shows the total number of downloads of the plugin over time. The second chart shows the delta of downloads per week, which is the number of new downloads per week. New version releases are marked with vertical lines.
Version History
| Version | Release Date | Note |
|---|---|---|
| 1.0.0 | 2026-08-14 | None |
| 1.0.1 | 2026-08-16 | None |
| 1.0.2 | 2026-08-18 | None |
| 1.0.3 | 2026-08-18 | None |
| 1.0.4 | 2026-08-19 | None |
| 1.0.5 | 2026-08-19 | None |
| 1.0.6 | 2026-08-20 | None |
| 1.0.7 | 2026-08-20 | None |
| 1.0.8 | 2026-08-20 | None |
| 1.0.9 | 2026-08-22 | None |
| 1.0.10 | 2026-08-24 | None |
| 1.0.11 | 2026-08-25 | None |
| 1.0.12 | 2026-08-25 | None |
| 1.0.13 | 2026-08-27 | None |
| 1.0.15 | 2026-08-28 | None |
| 1.0.16 | 2026-09-27 | None |
| 1.0.17 | 2026-09-27 | None |