Hostile Volume – A game about adjusting volume with intentionally bad UI

Velocifyer 83 points 56 comments March 14, 2026
hostilevolume.com · View on Hacker News

Discussion Highlights (20 comments)

Findecanor

I have encountered the rate-limited spinner (#8) and the self-resizing slider (#5) in real desktop UIs. #3 are almost like Google Maps' zooming buttons. They jump around more, making you click on the map itself or swap in/out.

jupin

Laughed out loud but gave up at level 5

Retr0id

There are two types of volume slider I've encountered thus far, "too logarithmic", and "not logarithmic enough".

dsmason321

Level 17 is NOT bugged. The slider is backward and the volume nonresponsive. Its a planned feature.

tobr

Meanwhile, iPhone is still using this design https://xkcd.com/1884/

jimkleiber

Got an error on Level 17, just a heads up. Love the game, btw.

TheLNL

Finished the game. It was fun to play. I got stuck for a while on the opposite level where the display doesn't update, but was able to go through the rest just fine

xnx

The worst volume control UI in the world (2017): https://news.ycombinator.com/item?id=27819384

graypegg

This is not an issue at all, but when ever I come across something like it, I like to poke at the frontend in dev tools a bit. You can pass most levels with `setVolume(25)` in the web console, since that function is just sitting in the document object. That feels like the ultimate volume UI puzzle heh.

DrSiemer

Plenty of annoyance in here for sure. Looks like 17 cannot be finished on mobile though. Switching to desktop view resets progress.

jonathanlydall

My favourite bad volume control was in Real Player around 1997 where changing the volume in the application actually changed the global volume of Windows.

danjl

...and, of course, there's really no need for a volume control in any app, since there's already a system volume...

Pipe94

somehow i'm amazed and annoyed at the same time

wild_pointer

Hilarious, some of them are easy with the keyboard

LoganDark

These mostly seem to be variations of "takes a long time / is tedious" rather than "annoying/fiddly / takes skill / is creatively bad", which is a little disappointing.

pimlottc

This works for almost all levels: for (i = 0; i < 50; i++) { document.querySelector("#l3-down").click(); }

burgerone

Prwtty neat. Unfortunately wasn't able to solve the UI desync one :/

mdx97

Level 27 is not possible.

apublicfrog

Great fun, well done to the horrible person who made it. Apparently my RSS reader leaves the browswr live in the background, as the audio is still playing. Horrible to do on a mobile device. Worst level by far was 17.

susam

I often write small userscripts to neutralise hostile or annoying UI patterns. I played the 'Hostile Volume' game for a while. Nice game! After a while, I wondered: if this were a real hostile website, could I write a userscript to make each level happy? Here is the script: // ==UserScript== // @name Hostile Volume Winner // @match https://hostilevolume.com/ // ==/UserScript== (function () { const s = document.createElement('script') s.textContent = ` (function () { function visible (id) { return !document.getElementById(id).classList.contains('hidden') } function win () { if (visible('victory-screen')) return if (visible('instructions-modal')) { document.getElementById('start-btn').click() setTimeout(win, 2000) return } setTimeout(function () { document.getElementById('l13-age-input').value = '01011970' window.cancelAnimationFrame(levels[currentLevelIndex].frame) }, 100) window.setVolume(25) setTimeout(win, 3500) } win() })() ` document.body.appendChild(s) })() If you don't have a userscript manager, you can just copy the script between the two backticks and paste it to the web browser's Developer Tools console.

Semantic search powered by Rivestack pgvector
3,471 stories · 32,344 chunks indexed