What I’m trying to do
I often copy block of texts into Obsidian (from Facebook posts etc). When I copy often hashtags from the source gets copied into my notes (unintentionally) and it adds to the hashtags in the vault. This becomes a big inconvenience and I have to spend time to hunt down such unintended hashtags to keep clean. Is there a way to handle this? I feel it will be nice to have an option ‘Paste without hashtags’ as it appears to be an issue which many would face.
Things I have tried
I tried Find ‘#’ and Replace with none. But I am looking for a better solution so that I don’t have to do this everytime.
Thank you!
A hacky way would be to mark the pasted text as code (Basic formatting syntax - Obsidian Help), but I wouldn’t want to do that because the text isn’t code.
There might be a plugin that could help, tho I don’t know one offhand and searching might be hard. For starters here is a search for paste tag and a broader one for paste. I didn’t dig deeply but it looks like Paste Transform could work. Paste transform - Obsidian Plugin
This doesn’t answer your question, but If you replace with \# instead of none, that will “escape” the symbols so they aren’t treated as tag markers.
@CawlinTeffid is completely right about replacing # with \# instead of deleting it. This works nicely because the backslash is a standard Markdown escape character. In reading view, you still see a normal #, so the text looks exactly like the original. You only see the backslash when you edit that specific line.
The reason there is no built-in fix is that Obsidian does not have a paste hook. You have to either fix it manually after pasting or create your own custom paste command.
If you use Templater, this takes a minute to set up and works perfectly. Just create a template file with this code:
<%*
const text = await tp.system.clipboard();
tR = text.replace(/(^|\s)#(\w)/g, "$1\\#$2");
%>
Then go to Settings → Templater → Template hotkeys, add this template, and bind it to a shortcut like Ctrl+Shift+V. From now on, this shortcut pastes your clipboard with all hashtags safely escaped. Your standard paste still behaves normally when you actually want real tags.
- If you prefer to delete the hashtags entirely instead of escaping them, just change the replacement string in the code to
"$1".
- The regex pattern
(^|\s)#(\w) does some heavy lifting here. It only matches a # at the beginning of a line or after a space, which is exactly how Obsidian detects tags. It safely ignores URLs like [example.com/page#section](https://example.com/page#section) or words like C#.
It is worth deciding if you want those hashtags gone completely, or if you want them as text. If a pasted post says #hiring, that word is probably part of the context. Escaping it keeps the meaning but keeps your tag pane clean. Deleting it destroys that information. I always recommend escaping because it is the safest option you will not regret later.