Actions

Work Header

Rating:
Archive Warning:
Fandoms:
Additional Tags:
Language:
English
Series:
Part 1 of napdragon's AO3 mods
Stats:
Published:
2024-11-09
Words:
399
Chapters:
1/1
Comments:
3
Kudos:
21
Bookmarks:
6
Hits:
272

Tutorial: Hide Video Creators' Real Names In Tags

Summary:

This is a userscript I made to hide video creators' real names in character tags and inside relationship and freeform tags. It can be installed in most desktop browsers and some mobile ones.

This version only has a list of names for Hermitcraft and Life Series fandoms but it can easily be modified to add more.

Minor edits last made on 2026-08-11.

Notes:

I'm not active on social media and I don't want to spend time supporting or updating this script as it already does what I need myself, so I'm just posting it here. I hope it can be helpful as is since the clutter in the Minecraft videoblogging tags seems to be a problem for other fans too.

Installation instructions assume you're proficient in using browsers and browser extensions, if you need further help, you can ask your friends or do your own research.

If you want to learn more about how this script works, here's a JavaScript guide and reference and the Violentmonkey documentation (and the Tampermonkey one). (This script was originally created to work with Tampermonkey, but I've now switched to Violentmonkey because it's open-source, it should work the same in both.)

(See the end of the work for more notes.)

Work Text:

Installing the userscript

  1. Install a browser that supports extensions
  2. Install either the Violentmonkey or Tampermonkey extension (Violentmonkey is open-source while Tampermonkey is more popular. Violentmonkey might not be supported in some browsers - see this issue on GitHub)
  3. Create a new script using the extension's menu
  4. Replace the new script template with the script below
  5. Save the script (Ctrl+S or there's a save button in the menu)

Using the userscript

  1. To add another tag replacement: you can see where the list is, add a line that goes something like .replace('AO3 tag', 'Desired tag')
  2. To remove tags: just remove the line that has the tag, no other edits are needed
  3. If you need to see original tag names, you can hover over them, disable the script or navigate to their pages (it doesn't replace the headers, only links)

The userscript

Click to uncover (it's a bit long)
// ==UserScript==
// @name         [AO3] Declutter video creators' tags
// @version      0.7
// @description  Removes video creators' real (or extra) names from tags
// @homepageURL  https://archiveofourown.org/works/60422266
// @author       napdragon
// @namespace    https://archiveofourown.org/users/napdragon
// @icon         https://archiveofourown.org/favicon.ico
// @match        https://archiveofourown.org/*
// @match        *://insecure.archiveofourown.org/*
// @match        https://archiveofourown.gay/*
// @match        https://archive.transformativeworks.org/*
// @grant        none
// @tag          AO3
// ==/UserScript==

(function() {
  declutter({
    tags: document.querySelectorAll('a.tag')
  })
  const workFilters = document.querySelector('#work-filters')
  if (workFilters) {
    const tagsToDeclutter = workFilters.querySelectorAll('.tags span:not([class])')
    declutter({
      tags: tagsToDeclutter,
      isFilter: true
    })
  }

  function declutter(options) {
    const { tags, isFilter } = options
    for (let tag of tags) {
      const oldTagText = tag.innerText
      const shipSeparator = /&/.test(oldTagText) ? ' & ' : '/'
      if (isFilter) {
        const workCount = / \(\d+\)$/.exec(oldTagText)[0]
        const tagParts = oldTagText.slice(0, -workCount.length).split(shipSeparator)
        tag.innerHTML = tagParts.map(part => removeRealNames(part).trim()).join(shipSeparator) + workCount
      } else {
        const tagParts = oldTagText.split(shipSeparator)
        tag.innerHTML = tagParts.map(part => removeRealNames(part).trim()).join(shipSeparator)
      }
      if (tag.innerText !== oldTagText) {
        tag.title = oldTagText
      }
    }
  }

  function removeRealNames(tagText) {
    return tagText
      .replace('Charles | Grian', 'Grian')
      .replace('Martyn Littlewood | InTheLittleWood', 'Martyn | InTheLittleWood')
      .replace('Scott Major | Smajor1995', 'Scott | Smajor1995')
      .replace('Steffen Mössner | Docm77', 'Docm77')
      .replace('Oliver Brotherhood | Mumbo Jumbo', 'Mumbo Jumbo')
      .replace('Ryan | GoodTimesWithScar', 'GoodTimesWithScar')
      .replace('John Booko | BdoubleO100', 'BdoubleO100')
      .replace('Kris | ZedaphPlays', 'ZedaphPlays')
      .replace('Anthony Viviano | Bigbst4tz2', 'BigB')
      .replace('Anthony | Bigbst4tz2', 'BigB')
      .replace('Daniel M. | VintageBeef', 'VintageBeef')
      .replace('Arek Lisowski | Keralis', 'Keralis')
      .replace('Natalie Arnold | StressMonster101', 'StressMonster101')
      .replace('Katy | FalseSymmetry', 'FalseSymmetry')
      .replace('Viktor | Iskall85', 'Iskall85')
      .replace('Jevin | iJevin', 'iJevin')
      .replace('Pearl | PearlescentMoon', 'PearlescentMoon')
      .replace('Joe Hills | joehillssays', 'Joe Hills')
  }
})()

Notes:

Jevin's, Pearl's and Joe's tags are there just because they're too silly, "Pearl | PearlescentMoon" duh it's literally part of her username... My motivations for making this were only part "I have no idea who any of those people are" and mostly "I'm not reading all of that", long character tags get super annoying.

This script can also be used to replace any character tags with anything for any other purpose, it would be less reliable with other tag types. It might not work for characters whose names have & or /, I don't read fics with anyone whose names are like that and need replacing, so it doesn't account for those.

Obviously feel free to modify and share this code in any way.


Some minor updates I've made since publishing this script:

January 16th, 2025: remembered the archive.transformativeworks.org domain exists and added it to the script metadata too in case someone uses it.

July 15th, 2025: noticed Joe Hills wasn't in the list here (apparently I'd never seen a Joe fanfic before I published this script for the first time... or did the canon tag change since?) so I had to add her... she's #1 in my heart :)

(Didn't note down the exact date): updated the script's name and other places to say "video creators" instead of "content creators", prompted by Joe's whole everything of making art and not "content"

November 24th, 2025: updated the script metadata to look nicer and be more comprehensive and refactored the code a bit.

March 21th, 2026: updated the metadata so the script works in Violentmonkey in Firefox with default settings.

August 11th, 2026: updated the metadata so it only targets the insecure ao3.org subdomain instead of all of them.

Series this work belongs to: