Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(+1)

If you are willing to use an unofficial chrome extension, there is something coming up on client side that can be used for this. In a way. It works, but I am not ready to release it just yet. On the way there, I made a button for the single exclusion method as a side project.

You can do it by foot already. You activate infinity scroll, browse for unwanted tag 1 scroll down a bit, like 10 pages or so and then execute a bit of javascript. Rinse repeat for unwanted tag 2. The javascript saves a css file you would copy in a user css styling addon and henceforth you would make those games on the list invisible. The extension I am making does this with more bells and whistles, and is actually intended to filter out games you already have in your collections.

That is the rule to put in the user style addon. I use Stylus for that.

@-moz-document url-prefix("https://itch.io/games")
{
content of the saved css(s) here. copy css*.txt cssall.txt in cmd if you want to concatenate files
}

It also works as a bookmarklet, instead of posting the code in console. You create a new empty bookmark and change the url to the code snippet. Change the style to display:none instead of opacity:0.05 if you want to not display the games at all.

The drawback of course is, that it will not catch new games. But having a couple hundred of the most popular games should thin the games out pretty good already. And you could of course combine with the single tag exclusion.

javascript: (() => {
    let game_cell_style = '{opacity:0.05 !important}';
    let css = '';
    let itch_cell_css_start = 'div.game_cell[data-game_id="';
    let itch_cell_css_trail = '"]';
    let link_re = '^https:\/\/[\\w-]+\.\itch\.io\/[\\w+-]+';
    let games_on_page = document.getElementsByClassName("game_cell");
    let temp_link_ar;
    let temp_game_id;
    for (let i = 0; i < games_on_page.length; i += 1) {
        temp_game_id = games_on_page[i].getAttribute('data-game_id');
        if (temp_game_id) {
            temp_link_ar = games_on_page[i].querySelector('.title').href.match(link_re);
            if (temp_link_ar) {
                css += itch_cell_css_start + temp_game_id + itch_cell_css_trail + game_cell_style + '\n';
            }
        }
    }
    console.log(css);
    let blob = new Blob([css], { type: 'text/plain' });
    let filename = 'css.txt';
    let a = document.createElement('a');
    a.download = filename;
    a.href = URL.createObjectURL(blob);
    a.addEventListener('click', () => {
        setTimeout(() => URL.revokeObjectURL(a.href), 300 * 1000);
    });
    a.click();
})();

Uh, I really understood that second part, but thank you, I will use it