ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
2
If you downloaded this table as an .xlsx file and are NOT using an English-language version of Excel, the formulas may not be created automatically, and the cells may display an error:

#NAME? For example.

In that case, open the “Replace” dialog in Excel and replace TEXTJOIN with the language of your Excel version. Don’t forget to select “Entire workbook” as the replacement range. There are a total of ~750 replacements.
3
4
5
6
7
8
9
Description:
10
11
This sheet lists all genres listed on /genres as of August 22, 2026. If a genre has a subgenre or is a subgenre itself, it is grouped accordingly. The groupings are based solely on parent-subgenre relationships and do not take influences into account. The nine major genres (classical, electronic, folk, jazz, hip hop, metal, pop, punk, and rock) each have their own page in this sheet. Genres without a origin assignment and genres with fewer subgenres share a page, as do genres with a origin assignment and their parent genre/subgenre relationships.
12
13
14
15
16
industrialdeath industrialIn the table, everything to the right of a genre is its subgenre, and everything below it up to the next entry is its subgenre.

“Industrial” is the parent of everything, because everything else is to its right and nothing is below it.
“Death industrial” is just a subgenre, because nothing is to its right and the next entry is immediately below it.
17
electro-industrial
dark electroaggrotech
18
post-industrialebmnew beathard beat
19
epic collage
20
martial industrial
21
power noise
22
23
“Electro industrial” is the parent of “dark electro” and “aggrotech.”
“Post-industrial” is the parent of everything to its right (EBM, newbeat, hard beat) and everything below it (epic collage, martial industrial, power noise), because nothing is listed below it.
The colors are for reference only.
24
25
26
27
A brief background and tutorial on this spreadsheet, along with rdswift’s “Genre Mapper”:
28
29
I created this spreadsheet to sensibly limit the number of genres that MusicBrainz Picard suggests. For example, if I’m not particularly fond of “industrial,” I don’t need 12 tags in my music collection just to describe a handful of industrial songs.

But if I use *industrial*=industrial, I only catch 5 out of 12 entries in the parent genre, which means that 7 entries are still being used. Funnily enough, there are actually 12 entries containing “industrial” at this point, which means I’m pulling 7 tags from other genres and thereby misclassifying songs. With this sheet, I have a good starting point for limiting “genre spam” where I don’t want it.
30
31
32
33
34
35
36
industrialdeath industrialindustrial
(^|;\s*)(industrial|death industrial|electro-industrial|dark electro|aggrotech|post-industrial|ebm|new beat|hard beat|epic collage|martial industrial|power noise)(\s*;|$)=industrial
37
electro-industrial
dark electroaggrotech
electro-industrial
(^|;\s*)(electro-industrial|dark electro|aggrotech)(\s*;|$)=electro-industrial
dark electro
(^|;\s*)(dark electro|aggrotech)(\s*;|$)=dark electro
38
post-industrialebmnew beathard beatpost-industrial
(^|;\s*)(post-industrial|ebm|new beat|hard beat|epic collage|martial industrial|power noise)(\s*;|$)=post-industrial
ebm
(^|;\s*)(ebm|new beat|hard beat)(\s*;|$)=ebm
39
epic collage
40
martial industrial
41
power noise
42
43
(^|;\s*)(post-industrial|ebm|new beat|hard beat|epic collage|martial industrial|power noise)(\s*;|$)=post-industrial
44
45
Since I'm a lazy guy, I've set up two tables on each page. The left one lists the genres. The right one lists the genres that are parent genres, with the completed expressions to copy right next to them (black box). Just click on them, copy the value, paste it into the genre mapper, and you're done.
46
47
48
industrialdeath industrialindustrialdeath industrial
49
electro-industrialdark electroaggrotechelectro-industrialdark electroaggrotech
50
post-industrialebmnew beathard beatpost-industrialebmnew beathard beat
51
epic collageepic collage
52
martial industrialmartial industrial
53
power noisepower noise
54
55
If the goal is to “combine” categories without any overlap, it’s relatively simple. Just copy the underlying subgenres and paste them into an expression—that’s all. Personally, I use:
(^|;\s*)(parentgenre|subgenre|subgenre) (\s*;|$)=parentgenre
(^|;\s*) and (\s*;|$) serve as anchors and ensure that the search term must stand alone. This prevents, for example, “celtic folk” from becoming “folk folk” when “celtic” is replaced by “folk.”

In this case, you can simply use the expressions from this table.
56
57
58
59
60
61
industrialdeath industrial
62
electro-industrialdark electroaggrotech
63
post-industrialebmnew beathard beat
64
epic collage
65
martial industrial
66
power noise
67
68
If there are overlaps when combining genres—as in our “industrial” example, where you also want to keep “electro-industrial” and “ebm” as genres—you can also use the expressions in the table. However, you must first add the subgenres to the Genre Mapper, then the parent genres. Additionally, the subgenres must be removed from the expressions of the parent genres.

In our example, I first copy “ebm” and “electro-industrial” into the Genre Mapper, and place “industrial” below them. Then I remove “ebm” and “electro-industrial” from the expression for “industrial.”

(If you follow the steps I suggest below, you won't need to delete any subgenres from the expressions. But you still need to group the subgenres before the overarching genres.)
69
70
71
72
73
74
industrialdeath industrialindustrial
(^|;\s*)(industrial|death industrial|electro-industrial|dark electro|aggrotech|post-industrial|ebm|new beat|hard beat|epic collage|martial industrial|power noise)(\s*;|$)=industrial
industrial foo bar death industrial foo bar electro-industrial foo bar dark electro foo bar aggrotech foo bar post-industrial foo bar ebm foo bar new beat foo bar hard beat foo bar epic collage foo bar martial industrial foo bar power noise
75
electro-industrial
dark electroaggrotech
electro-industrial
(^|;\s*)(electro-industrial|dark electro|aggrotech)(\s*;|$)=electro-industrial
electro-industrial foo bar dark electro foo bar aggrotech
dark electro
(^|;\s*)(dark electro|aggrotech)(\s*;|$)=dark electro
dark electro foo bar aggrotech
76
post-industrialebmnew beathard beatpost-industrial
(^|;\s*)(post-industrial|ebm|new beat|hard beat|epic collage|martial industrial|power noise)(\s*;|$)=post-industrial
post-industrial foo bar ebm foo bar new beat foo bar hard beat foo bar epic collage foo bar martial industrial foo bar power noise
ebm
(^|;\s*)(ebm|new beat|hard beat)(\s*;|$)=ebm
ebm foo bar new beat foo bar hard beat
77
epic collage
78
martial industrial
79
power noise
80
81
post-industrial foo bar ebm foo bar new beat foo bar hard beat foo bar epic collage foo bar martial industrial foo bar power noise
82
83
If you're not interested in the expressions but just want the subgenres in a single line to copy, you'll find them in the blue box. If you've downloaded the sheet, you can insert the desired delimiter here (the default is a pipe):
84
|
85
86
Suggestion on how to setup your Genre-Merger/Genre-Filter:
87
88
As I said, I’m lazy, but I still like things to be neat and organized. That’s why I created this spreadsheet mainly for myself. I tried to be impartial, but I did take some liberties—for example, I put “garage punk” on the “Punk” sheet, though I didn’t make it a subcategory.

Below, I’ll describe how I managed to get the flood of genres under control with relatively little effort using this spreadsheet, the Genre Mapper, and a small script. It took me about 1-2h.
89
90
91
92
93
94
95
First Step:
96
97
Under “Options - Genres,” I've enabled genres, fallback, and folksonomy. Under “Tags to include or exclude,” I've entered a complete list from the current /genre page (+disco for example. The "+" is used to flag the genre as allowed, a copy of /genre is in the ‘Worksheet’ sheet), preceded by a -* to exclude all other tags. I use “minimal and maximal genre usage” quite flexibly and adjust it depending on the desired result.
98
99
100