Watch
1
0
Fork
You've already forked tubeless
0
YouTube, quieter. Hide Shorts, ads, recommendation shelves, comments and more, each with its own switch. No tracking, no requests. https://tubeless.app
  • TypeScript 62.5%
  • HTML 27.5%
  • CSS 5.6%
  • Swift 4.1%
  • JavaScript 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-05 11:27:45 +00:00
assets feat: initial public release 2026-09-06 19:22:36 +01:00
docs docs: retake the README screenshots 2026-11-02 18:07:53 +00:00
entrypoints feat: add a toggle to hide past live streams in feeds 2026-11-05 11:18:23 +00:00
safari/Tubeless chore: release 2.8.0 2026-11-05 11:27:45 +00:00
scripts/screenshots chore(screenshots): filter unsuitable videos and wait for a feed with an ad and Shorts 2026-11-02 18:07:42 +00:00
utils feat: add a toggle to hide past live streams in feeds 2026-11-05 11:18:23 +00:00
.gitignore feat: add a Safari app for macOS, iPhone and iPad 2026-11-01 19:23:07 +00:00
CHANGELOG.md chore: release 2.8.0 2026-11-05 11:27:45 +00:00
LICENSE feat: initial public release 2026-09-06 19:22:36 +01:00
package-lock.json chore: release 2.8.0 2026-11-05 11:27:45 +00:00
package.json chore: release 2.8.0 2026-11-05 11:27:45 +00:00
README.md feat: add a toggle to hide past live streams in feeds 2026-11-05 11:18:23 +00:00
tsconfig.json chore: add a script that captures store, README and website screenshots 2026-11-01 17:51:53 +00:00
wxt.config.ts chore: shorten the manifest description to fit Safari's limit 2026-11-01 19:23:16 +00:00

Tubeless Tubeless

YouTube, quieter.

Firefox Add-ons version Chrome Web Store version Data collected: none Licence: MIT

Install for Firefox · Install for Chrome · tubeless.app

The Tubeless popup open over a YouTube video, with switches grouped under Sidebar, Top bar and Home shelves

Tubeless is a small extension for Firefox and Chrome that hides the parts of YouTube you'd rather not see. Shorts, ads, recommendation shelves, end-screen cards, comments: each one has its own switch in the popup, and one more brings plain YouTube back.

Works on desktop and on Firefox for Android.

What it hides

Without Tubeless With Tubeless
YouTube home page without Tubeless: a sponsored video, a Shorts shelf, Shorts in the sidebar and a row of filter chips The same home page with Tubeless: only a grid of ordinary videos
YouTube watch page without Tubeless: a sponsored product, the recommendations sidebar, the description and a row of action buttons The same watch page with Tubeless: the video, its title and channel, and a trimmed row of buttons

Every switch works on its own, and sensible ones are on from the start. They are grouped in the popup by where they appear:

  • Sidebar: Shorts, Explore, "More from YouTube", and the "You" section (full, minimal or hidden).
  • Top bar: the Create button, the notifications bell and the filter chips.
  • Feeds: on Home, Subscriptions and search results, every shelf at once, or gaming shelves, event, alert and promo banners and feed nudges one by one. Shorts, movies and shows, community posts, Mixes, playlists and podcasts, live streams, past live streams, music videos, member-only videos and Premieres. Channel pages are never filtered.
  • Watch page: a trimmed row of action buttons, the merch and fundraiser shelves, live chat, end-screen cards, the description, comments, the recommendations sidebar and info panels.
  • AI: video summaries, "Ask questions", Ask YouTube in the search bar and custom feed prompts.
  • Ads: sponsored slots, display and companion ads, brand shelves, Premium upsells and the ad overlays on the player. This is cosmetic: an ad that plays inside the video still plays.
  • Popups: survey and feedback prompts, in dialogs and in the feed.
  • Layout: a thumbnail size slider that fits more videos in each row on Home, Subscriptions and channel pages.

One fix is always on and has no switch: YouTube's player leaves an invisible strip across the top of the video that swallows clicks, so clicking there doesn't pause or play. Tubeless lets those clicks through to the video.

Why

I've been a YouTube Premium subscriber for many years. Despite this, my YouTube feed was still cluttered with things I didn't want to see. Shorts all over the place, "Most relevant" sections, "Explore more topics" sections, "How are we doing?" survey blocks, more Shorts, the list goes on.

I tried numerous other extensions. Most helped, but none of them got rid of all of it, so I created Tubeless to solve the problem. I've been using it full time for many months with extensive YouTube browsing, and I'm constantly tweaking it.

Install

Or build from source.

How it works

Tubeless is a thin content script that injects a single <style> element into youtube.com. Every switch in the popup maps to a CSS rule that hides specific elements via display: none, plus one always-on rule that fixes the player's dead click strip. There is no DOM mutation, no MutationObservers, no background workers doing real work, and no remote code.

The full set of selectors lives in utils/selectors.ts, annotated with confidence levels (✓ stable, ? likely-current, ! guess). When YouTube ships a redesign, that's the file to edit.

Privacy

  • No telemetry, no analytics, no network requests.
  • The only permission requested is storage, used to persist your settings (synced through your own browser account on Firefox and Chrome, kept on each device by Safari, and nowhere else).
  • The Firefox manifest declares data_collection_permissions: ['none'].

Reporting a problem

YouTube changes its pages often, and a change can bring back something Tubeless used to hide, or hide something it shouldn't. Email bugs@tubeless.app saying which page it was, what you saw, your browser and the Tubeless version from the popup. A screenshot helps.

Building from source

Requirements: Node 20+ and npm.

npm install
npm run dev         # WXT dev server, opens Firefox with the extension loaded
npm run dev:chrome  # same, for Chrome
npm run build       # unpacked build under .output/firefox-mv3
npm run zip         # produces .output/tubeless-<version>-firefox.zip
npm run zip:chrome  # produces .output/tubeless-<version>-chrome.zip
npm run compile     # TypeScript type-check (no emit)

package-lock.json pins every dependency, so builds are reproducible.

Project layout

entrypoints/
  content.ts          Content script - injects the <style> tag
  background.ts       Firefox-for-Android shim - opens the popup in a tab
  popup/              The toolbar popup UI (HTML/CSS/TS)
utils/
  selectors.ts        Single source of truth for what each toggle hides
  buildCss.ts         Composes the injected CSS from current settings
  settings.ts         Settings schema, defaults, and storage migration
assets/
  icon.svg            Source icon - rasterised to PNG icons at build time
wxt.config.ts         WXT/manifest configuration

Built with WXT.

Licence

MIT.

Tubeless is an independent project, not affiliated with or endorsed by YouTube or Google.