There's also a way to do this with site skins! It doesn't actually exclude the tag the way this does, but it doesn't display anything. If there are 2 fics in the page of 20 with the given tag, you will see the 18 remaining fics but the 2 'muted' fics wouldn't have been replaced. I find it more convenient than manually excluding every time because I am such an incredibly picky and incredibly forgetful person.
This is the in depth guide that I am essentially plagiarising, I am just compiling my fave tricks from it. Seriously, refer to this for any context on why these things work and how to figure it out yourself. Najio actually explains it instead of just giving you a bunch of CSS.
for a given tag or ship, select copy link or your browsers equivalent. you should get something like this:
https://archiveofourown.org/tags/Getting%20Together/works
https://archiveofourown.org/tags/Lan%20Zhan%20%7C%20Lan%20Wangji%20*a*%20Wei%20Ying%20%7C%20Wei%20Wuxian
the part that you need is the bolded section. (Whether or not /works is in the copied link depends on if you're copying from a fic directly/the search bar or via the search tags function)
*s* indicates /slash, *a* indicates &ersand, %7C indicates |vertical bar %20 indicates a space. note that ao3 formats names within a relationship tag alphabetically by family name. this is the last name in english and the first name in Japanese, for example. You may have to block two tags, with the name order switched around.
CSS I have found the most use out of:
• excluding a single ship
.blurb:has(a[href$="/tags/Character%20One*s*Character%20Two"]) {
display: none !important;
• excluding every ship for a given character
.blurb:has(a[href*=“*s*Character%20One”]),
.blurb:has(a[href*=“Character%20One*s*”]) {
display: none !important;
• excluding every ship for several characters
.blurb:has(.relationships > a[href*="*s*"]:is([href*=“Character%20Three”],
[href*=“Character%20Four”],
[href*=“Character”%20Five])) {
display: none !important;
• excluding every ship for a given character bar one
.blurb:has(a[href*="Character%20One*s*"]:not(a[href$="/tags/Character%20One*s*Character%20Two"])),
.blurb:has(a[href*="*s*Character%20One"]:not(a[href$="/tags/Character%20Two*s*Character%20One"])) {
display: none !important;
• muting several tags in big swathes (can be used for relationships, characters, fandoms, archive warnings, etc)
.blurb:has(a:is([href*=“tag” i],
display: none !important;
• blocking mega crossovers (>2 fandoms in this example,)
.blurb:has(h5.fandoms):has(a.tag:nth-of-type(3)) {
display: none !important;
• blocking unfinished works
.blurb:has(span.complete-no) {
display: none !important;
Tumblr isn't the best place for formatting all of this, so for more clear guidelines, more tips, and even more specific situations I will once again refer you to najio’s work on this topic. They did all the hard work here.