Domdhi logoDOMDHI.OS
MEDIA

Tach v1.2: Volume Boost and a Loudness Normalizer

Tach sets one default video speed on every site and defends it. v1.2 adds the other half: a volume boost up to 300% and a loudness normalizer, with no new permission. Also in this release train: a dial that went to 4.0x when you tried to slow down, and four YouTube cleanup defaults, including an ad skipper that is a seek, not a click.

DDominic BacaSOLO ENGINEER · DOMDHI.OS2026.10.255 MIN READ
MEDIA// FIG.01

Changing the speed on YouTube takes a gear icon and two submenus. Every video. Past 2x it's a Premium feature now. Tach goes to 4.0x on YouTube anyway.

Other players are worse. Some don't have a speed control at all, and some reset to 1.0x the second the next video loads. The brief I wrote for Tach in March was one sentence long: set the speed once, and make every page respect it.

The other two itches came with it. Getting a transcript out of YouTube is a pain in the ass, so there's a Copy Transcript button. And live chat sitting on top of a fullscreen video is bullshit, so Tach has hidden chat in fullscreen, on by default, since 1.0.

v1.2.0 is out on the Chrome Web Store and adds the other half of watching things faster: sound. This is what Tach is, what's new, and the one thing in it that's a hack and says so.

What it does

You pick a default speed, 0.1x to 4.0x. Tach applies it to every HTML5 video on every site, including the ones that load after the page does. If a page tries to reset the rate, Tach sets it back.

That's the core. The rest is control:

  • A tachometer popup. A dial with a needle that goes into the redline past 1x, a throttle slider, +/- steps, and presets you can edit. A REDLINE button jumps to whatever overdrive speed you've set.
  • Per-site memory. YouTube at one speed, your lecture site at another. It sticks per domain, capped at 100 sites.
  • Keyboard shortcuts. Faster, slower, reset. No popup, no submenu.
  • A 0.01x floor. Frame-by-frame crawl when you need the exact moment, then back up to 4.0x to power through the slow parts.
  • Copy Transcript. One click puts a YouTube video's transcript on your clipboard, with timestamps if you want them.

New in 1.2: volume boost and a normalizer

Quiet video is the problem speed can't fix. 1.2 adds two controls to the popup.

Volume boost, 100% to 300%. A slider in 10% steps. There is no global default boost, on purpose: a boosted default means a loud surprise on the next video you open. Boost lives in the tab you set it in. Flip "Remember volume for this site" and that domain gets its boost every time, in the same 100-site list as your per-site speeds.

A loudness normalizer: Off, Light or Strong. It evens out the loud parts and the quiet parts so you aren't riding the volume key. It's one global setting. Change it in the popup or in Options and every open tab picks it up live.

A limiter sits at the end of the chain, always on, so boosted audio doesn't clip into distortion.

It's built on Web Audio inside the content script Tach already runs. That means no new permission, so installed copies auto-update without Chrome disabling the extension to ask you to re-accept anything. And if you only use Tach for speed, you never touch Web Audio at all: the audio graph is built lazily, only when a boost is above 100% or the normalizer is on.

Routing a video through Web Audio can silence it if the browser won't let the page's audio be processed, so Tach checks first and leaves a video alone rather than break it. The popup tells you when it does.

The bug in the dial (1.1)

Drag the needle past the slow end and keep going down, below the baseline of the arch, and the speed jumped to 4.0x.

The angle went negative, the code clamped it to 0 degrees, and 0 degrees is the fast end. So the harder you tried to slow down, the faster it went. lol. It now snaps to whichever end of the arch is nearest (gaugeSpeedFromAngle).

The second fix is smaller and stupider. I had scrollbar-gutter: stable both-edges on the 300px popup root, which pushed everything about 10px right and clipped the edge. Chrome sizes the popup window to the root width and ignores gutters, so the gutter was lying. Scrolling now lives on body, the scrollbar lane is measured at runtime, and the content is 268px wide with 16px on each side whether the scrollbar is there or not.

YouTube cleanup, and the part that's a hack (1.1)

v1.1.0, out on October 24, splits live chat out from comments and adds two new hides: games and extras (Playables, community-post shelves, and the shelves titled "Breaking news", "Playables" or "Latest YouTube posts"), and sponsored tiles in feeds, search results and the watch sidebar. The sponsored selector was checked against the live home feed.

Four settings default on:

Setting Default
Hide live chat ON (new)
Hide games & extras ON (new)
Hide sponsored tiles ON (new)
Skip YouTube ads ON (was OFF)

Hide comments stays off.

If you never touched these settings, an unset setting resolves to its default, so you get the new behavior the moment an update lands. If you turned one off explicitly, it stays off. Every one of them is a toggle under Options > YouTube Cleanup.

Now the hack. Skipping a video ad is not a click. I tried the click. YouTube's skip button rejects synthetic clicks, because it wants a trusted gesture and a content script can't forge one. I tried cranking the ad's playback rate, and YouTube reset it to 1 within about 600ms. The only thing that worked was seeking the ad to its end, which finishes the creative and walks through back-to-back ad pods to the video you came for.

So that's what Tach does. It polls twice a second, sees an ad is showing, and jumps to the last 0.1 seconds. It works today. YouTube controls that page and I don't, so it's a cat-and-mouse feature. If it breaks, it breaks on their side first and mine second, and the toggle is there for a reason.

Private, and you can check

Tach sends nothing, anywhere. Not "we don't sell it." There is no network code, and the audio processing happens in your browser.

grep -rn "fetch\|XMLHttpRequest\|http://\|https://" src/

That returns the same-page DOM and a link to domdhi.com. That's it.

Permissions are storage (your settings, synced through your browser account, never to me), clipboardWrite (the Copy Transcript button), and <all_urls> for one job: reading and setting the playback rate and audio of <video> elements. It doesn't read page content, form input, or history. Neither 1.1 nor 1.2 added a permission, so updating doesn't trigger a new-permissions prompt and nothing gets disabled waiting on you.

The code is MIT. The Tach and Domdhi names and the visual identity are not, so forks have to rebrand.

Get it

Tach on the Chrome Web Store works in Chrome, Brave and Edge. The source is at github.com/Domdhi/Domdhi.Tach.

Pick a number. The page doesn't get a vote.

GET_TRANSMISSIONS

Raw signal on finance, freedom, fitness, and tech. No spam. Unsubscribe anytime.

D
Dominic Baca

One engineer building Domdhi.OS in public — money, freedom, and the occasional 2am migration. Every number live, every commit public.

FOLLOW THE LOGS →
// NEXT IN THE LOGS