1 Installation

  1. Install Obsidian from obsidian.md
  2. Enable community plugins under Settings, Community plugins
  3. Install Better Paste: click Browse, search for "Better Paste", then Install

2 What it does

Six examples. Every rule has its own toggle, so turn off what you do not need.

2.1 Images from Safari

Copy an image in Safari, paste it into Obsidian, and you get a web link instead of the image. Annoying! Better Paste saves the actual image into your vault:

![](https://images.example.com/2026/05/skyline-8f21a.jpg?auto=format&w=2400)

becomes

![[skyline-8f21a.jpg]]

2.2 Tracking parameters

Links you copy from newsletters and social apps drag a lot of tracking junk along. Better Paste cleans it off:

https://www.theverge.com/2026/1/9/story?utm_source=newsletter&utm_medium=email&fbclid=IwAR2x9

becomes

https://www.theverge.com/2026/1/9/story

Paste a bare URL and it turns into a Markdown link with the real page title:

https://obsidian.md

becomes

[Obsidian - Sharpen your thinking](https://obsidian.md)

The URL is pasted right away and updates when the title arrives, so nothing blocks.

2.4 Terminal output

Terminals break long lines at the window edge. Better Paste strips the escape codes and joins the lines back together:

npm warn deprecated inflight@1.0.6: This module is not supported and leaks memory. Do
  not use it. Check out lru-cache instead.

becomes

npm warn deprecated inflight@1.0.6: This module is not supported and leaks memory. Do not use it. Check out lru-cache instead.

2.5 AI text

Chatbot text comes with curly quotes, long dashes and invisible characters. Better Paste turns it into plain text:

“It works,” she said — finally.

becomes

"It works," she said - finally.

The invisible characters (zero-width spaces and friends) are removed at the same time.

2.6 Commas and quotes

Prefer your commas outside the quotation marks? Better Paste can move them for you:

She called it "finished," then left.

becomes

She called it "finished", then left.

Or inside, or leave them alone. No change is the default.


3 Settings

Eighteen settings. Here are the ones you will actually look for.

3.1 Behavior

  • Clean up every paste: the master switch. Turn it off to use only the commands, or to clean only notes marked with bp: true (see section 4).
  • Show a notice when a paste is changed: a one line summary of what was fixed.

3.2 Images

  • Save pasted images into the vault: covers Safari's "Copy image", pictures inside copied web content, and pasted image URLs. Images land wherever your attachment settings point, named after the source file, so no more image.png.
  • File names: add your own format, like {{name}}-YYYY-MM-DD.

Alt text survives the download, and if a download fails the original link stays in your note. Images over 50 MB or slower than 30 seconds are left as links.

  • Fetch titles for pasted links: on by default, see example 2.3 above.
  • Clean pasted links and Which parameters to remove: strip every parameter except what site rules keep, or be careful and only strip known trackers.
  • Site rules: 33 sites built in, with a live tester. This is why a YouTube link keeps its video ID while the tracking junk is stripped:
https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLxAbC123&si=8f2a1c&utm_source=share&t=42
https://www.amazon.com/dp/B0CHX1W1XY/ref=sr_1_3?crid=2ABCDE&keywords=usb+hub&qid=1735689600&sr=8-3
https://www.google.co.uk/search?q=obsidian+plugins&client=safari&sca_esv=9f1&sourceid=chrome

becomes

https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLxAbC123&t=42
https://www.amazon.com/dp/B0CHX1W1XY/ref=sr_1_3
https://www.google.co.uk/search?q=obsidian+plugins

A site rule looks like this:

youtube.com | v, t, list, index, start     keep only these parameters
gitlab.com                                 keep every parameter
google.* | q, tbm, hl                      any top-level domain
mine.example | id                          your own rule

Subdomains are covered automatically, google.* matches google.com and google.se alike, and only your own edits are saved, so new rules in future releases still reach you.

3.4 Terminal text

  • Clean up terminal output: see example 2.4 above.
  • Terminal text handling: choose when lines are rejoined (only indented lines is the default and the safe choice), turn bullets into Markdown lists, and try it all in a live tester.

3.5 Text processing

  • Trim surrounding whitespace: removes blank lines and stray spaces around the paste. Blank lines in the middle stay.
  • Commas and quotes: inside, outside, or no change (the default).
  • AI cleanup: invisible characters: removes zero-width spaces and turns non-breaking spaces into normal ones. Emoji, Persian and Arabic joiners, and CJK spacing are left alone.
  • AI cleanup: dashes and quotes: turns long dashes into - and curly quotes into straight ones.

3.6 Frontmatter

  • Note property (default bp) and Image width property (default bp-image-width): the two per-note properties from section 4. Rename them if they collide with something in your vault, or leave one blank to turn it off.

4 Per-note control

Add bp: false to a note's frontmatter and Better Paste leaves that note alone. Perfect for logs and transcripts:

---
bp: false
---

It works the other way too: bp: true cleans a note even when Clean up every paste is off.

Clean up every paste No bp property bp: true bp: false
On cleaned cleaned left alone
Off left alone cleaned left alone

And bp-image-width sets the width of images pasted into that note:

---
bp-image-width: 400
---

Images come out as ![[picture.png|400]], Obsidian's own size syntax. 400x300 works too.


5 Commands

Four commands, ready for your own hotkeys (Settings, Hotkeys):

  • Paste: paste through the rules, even in a note that opted out.
  • Paste without processing: paste exactly what is on the clipboard.
  • Clean up selection: run the text rules on selected text.
  • Toggle automatic cleanup: flip the master switch.

6 Good to know

  • Pasting into code blocks, inline code or frontmatter changes nothing, and fenced code inside a paste comes through untouched.
  • Screenshots and other bitmap-only pastes are left to Obsidian, which already saves them fine.
  • Rich content (HTML) is converted to Markdown by Obsidian first; Better Paste then cleans the links and downloads the images in the result.

7 Languages

Better Paste speaks 21 languages: Arabic, Chinese (Simplified), Chinese (Traditional), Dutch, English, French, German, Indonesian, Italian, Japanese, Korean, Persian, Polish, Portuguese, Portuguese (Brazil), Russian, Spanish, Thai, Turkish, Ukrainian and Vietnamese. It follows the language Obsidian is set to (switching takes effect after a restart).


8 Privacy

Better Paste runs locally and makes network requests in exactly three cases:

  • downloading an image you pasted
  • fetching the title of a link you pasted (turn off Fetch titles for pasted links to stop this)
  • loading the artwork for the welcome and What's new dialogs from GitHub

No telemetry, no analytics, and nothing is ever uploaded. Settings live in .obsidian/plugins/better-paste/data.json and stay in your vault.

Every release is checked with TypeScript, ESLint with the official Obsidian ESLint plugin, Stylelint, Prettier, Vitest and a dead code check. Warnings fail the build.


9 About

I'm Johan Sanneblad. I have a PhD in Software Development and have worked with innovation development for companies like Apple, Electronic Arts, Google, Microsoft, Lego, SKF, Volvo Cars, Volvo Group and Yamaha. I also build Notebook Navigator, the most popular file explorer plugin for Obsidian.

Feel free to connect with me on LinkedIn!


10 Questions or issues?

Open an issue on the GitHub repository. For paste bugs, the most useful thing you can include is what was on your clipboard: open https://dynalist.io/clipboard in the app you copied from, paste there, and include what it prints.

Pull requests are not accepted; contribute ideas as feature requests instead. See CONTRIBUTING.md for details.


11 License

GNU General Public License v3.0. See LICENSE.