YT Levelr

A Firefox and Chrome extension that automatically equalizes the volume of YouTube videos, especially podcasts where every producer has their own idea of what the correct levels should be.

YT Levelr is a Featured extension on the Chrome Web Store and is available for both Firefox and Chromium-based browsers.

popup-screenshot

Features

Installation

Firefox

Get the Add-on from Firefox Add-on Store

Install from the official Firefox Add-on Store.

Chrome

Get the Add-on from Chrome Web Store

Install from the official Chrome Web Store.

To install manually:

  1. Download and unzip the latest release from GitHub Releases
  2. Go to chrome://extensions/, enable Developer mode
  3. Click “Load unpacked” and select the unzipped folder

How It Works

YT Levelr uses the Web Audio API to intercept audio output from YouTube’s video element and applies automatic gain correction:

  1. Audio Interception: Creates a source node from YouTube’s video element
  2. RMS Measurement: Continuously measures Root Mean Square (RMS) amplitude of the audio
  3. Gain Calculation: Compares measured level against your target level (default: -22 dBFS)
  4. Smooth Transitions: Applies gain changes with asymmetric attack/release times to protect against sudden loud sounds
  5. Locking: After 30 seconds, gain locks and only drift correction applies

Strategy Details

Usage

  1. Install the extension
  2. Reload any open YouTube tabs
  3. Play a video - the extension starts measuring immediately
  4. Click the icon to adjust target level (-30 to -12 dBFS recommended)
  5. After 30 seconds, gain locks for consistent levels

Re-measuring

Click “re-measure current video” in the popup if:

Visual Indicators

The popup displays real-time information:

Limitations

Optimized Content Types

Known Limitations

Browser Compatibility

Privacy

YT Levelr is privacy-first:

See Privacy Policy for complete details.

Technical Details

Architecture

graph TD
    A[YouTube Video Element] --> B[MediaElementSource<br/>audio interception]
    B --> C[DynamicsCompressor<br/>transient control]
    C --> D[GainNode<br/>adjustment]
    D --> E[AnalyserNode<br/>RMS measurement]
    E --> F[Destination<br/>output]

    classDef audioNode fill:#e1f5fe
    class B,C,D,E,F audioNode

Audio Processing Pipeline

  1. Input: Captures audio from YouTube’s video element
  2. Compression: Gentle dynamics compression to tame transient peaks
  3. Gain Adjustment: Applies calculated gain based on RMS measurement
  4. Analysis: Continuously measures output level for feedback
  5. Output: Delivers normalized audio to speakers

State Management

Storage

The extension stores only two user preferences locally:

These values never leave your browser.

Contributing

Contributions welcome. See the GitHub repository for:

License

YT Levelr is open source. See the GitHub repository for licensing details.

Support


Homepage: https://github.com/AndyP2/yt-levelr