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.
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:
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.