YouTube Alchemy

TimMacy
2024-12-24T17:37:45Z

Toolkit for YouTube with 200+ options accessible via settings panels. Key features include: tab view, playback speed control, video quality selection, export transcripts, prevent autoplay, hide Shorts, disable play-on-hover, square design, auto-theater mode, number of videos per row, display remaining time adjusted for playback speed and SponsorBlock segments, persistent progress bar with chapter markers and SponsorBlock support, modify or hide various UI elements, and much more.

YouTube Alchemy

This toolkit enhances YouTube by customizing the layout and adding more than 200 native-feeling features. Designed to be resource-efficient, it leverages YouTube's built-in elements while using event listeners, timeouts, requestAnimationFrame, requestVideoFrameCallback, requestIdleCallback, and mutation observers strategically to minimize overhead. Additionally, a main settings panel and three sub-panels offer an intuitive interface for customization. YouTube Alchemy is available as a userscript or a browser extension.

🔒 Privacy Policy

YouTube Alchemy operates completely client-side with no external dependencies. It doesn't send data to remote servers or pull resources from third parties. It leverages the browser's built-in Intl APIs, stores settings locally (via GM storage or storage.local), and reads YouTube's DOM to apply enabled features as well as layout changes. The userscript version utilizes standard metadata for updates (@updateURL, @downloadURL) and icon display (@icon). Required permissions: GM.getValue and GM.setValue for the userscript; storage and scripting for the extension; both are limited to https://*.youtube.com/*.

Overview

Main Settings Panel: Manage the Transcript Exporter and export, import, or reset settings to their defaults.

Links in Header Panel: Add custom links next to the YouTube logo and hide the navigation bar.

Features & CSS Panel: Access key features like tab view, playback speed, remove 'Important' section and sort all notifications chronologically, video quality, direction buttons for playlists, prevent autoplay, hide Shorts, set default audio, subtitle, and transcript languages, disable play on hover, square design, auto-theater mode, auto-close chat windows, number of videos per row, modify or hide various UI elements, and much more.

Color Code Videos Panel: Apply customizable borders to videos on the Home page, reflecting their age and status, and highlight the last uploaded video on the Subscriptions page with optional auto-scroll.

Minimum Browser Requirements

Important for Safari Users: This script requires the requestIdleCallback Web API. Activate it under: Settings → Advanced → enable 'Show features for web developers' → Feature Flags → search for 'requestIdleCallback' and ensure it's checked.

ℹ Note: This script is designed primarily for desktop browsers; compatibility and functionality on mobile devices may vary.

Transcript Exporter

Adds buttons to the YouTube header to export a video's transcript to LLMs, with or without a prompt, or to download it as a text file.

Buttons with Color-Coded Interface in the Main Settings Panel

Button One | Green 🎧 Copies the transcript and opens NotebookLM.

Button Two | Blue 💬 Copies the transcript with a prompt for summarizing and opens ChatGPT.

Button Three | Orange Copies Transcript to Clipboard.

Button Four | Red ↓ Downloads the transcript as a text file.

Button Five | Yellow 📜 Click to Load the Transcript Manually.

Button Six | White ⋮ Opens the main settings panel.

Transcript Formatting: Includes timestamps, chapter headers, video title, channel name, upload date, and URL.

Text File Naming Format

Title - Channel.txt (default)

Channel - Title.txt

uploadDate - Title - Channel.txt

uploadDate - Channel - Title.txt

💡 Tip
The URLs for buttons one and two, along with all button icons, are fully customizable. If a button field is left empty, that button won’t be added to the header. The settings button reverts to its default if its field is empty. To modify the labels for NotebookLM and ChatGPT, enter "Label | domain.com" into their respective URL fields—this also updates the icons' hover text.

⚠️ Important
Due to the Same-Origin Policy (SOP) in web development, JavaScript cannot directly interact across different websites: i.e. while the script can copy the transcript to the clipboard from YouTube and open a link (e.g. ChatGPT or NotebookLM), the copied transcript must be pasted manually into the text field via CTRL+V (Windows/Linux) or CMD+V (macOS).

ℹ Note
Status messages for the Transcript Exporter are displayed at the button's location in the YouTube header.

| The transcript has to be loaded into the HTML before it can be used. This can take from a few milliseconds up to a couple of seconds—depending on the length of the video.
| YouTube live streams don't have transcripts. Wait until the stream has finished and YouTube's API has processed the video.
| If the creator hasn't included captions (subtitles), YouTube's API processes the video to generate the transcript. This can take a few minutes. If speech recognition fails due to e.g. lack of clear speech or background noise, no transcript will be available.
| If the transcript fails to load, the Transcript Exporter will terminate. Reload the page to retry.

Links in Header

Up to ten links can be added next to the YouTube logo. An empty "Link Text" field won't insert the link into the header. If the left navigation bar is hidden, a replacement icon will prepend the links, while retaining the default functionality of opening and closing the sidebar.

Features & CSS

Offers various options to customize the layout and functionality of YouTube.

General

Move Settings Button into the YouTube Guide

Change Opacity of Watched Videos

Title Case Selection:

uppercase

lowercase

capitalize

normal-case (default)

Video Quality:

Auto (default)

Highest Available

4320p - 8K

2160p - 4K

1440p - QHD

1080p - FHD

720p - HD

480p

360p

240p

144p

Audio Language

Subtitle Language

Transcript Language

Language Options:

Auto (default)

English

Spanish

Hindi

Portuguese

German

French

Italian

Dutch

Polish

Hebrew

Japanese

Korean

Chinese

Indonesian

Swedish

Norwegian

Danish

Finnish

Czech

Greek

Hungarian

Romanian

Ukrainian

Choose Font Size

Adjust Number of Videos per Row

Sidebar Width

Search Bar Position

Minimum Space Below Player in Default Layout When Tab View and Compact Layout Are Enabled

Set Playback Speed for VODs

from 0.25x to 17x with 0.25x increments

defaults to 1x for live videos

works with Shorts

key toggles (changeable):

A (or <): -0.25x

S: toggle 1x/set speed

D (or >): +0.25x

Assign up to 8 Keys to Custom Playback Speeds

Add Additional Playback Speed Buttons

Features

Auto Theater Mode

Cinema Mode

Adds a button to the bottom right in theater mode. Once activated, all UI elements are hidden while the mouse is outside the page.

Max Video Size in Default Layout

Auto Expand Video Description

Prevent Autoplay

Disable Play on Hover

Sort Notifications Chronologically

Restore Homepage Filter Selection

Restore Suggested Videos Filter Selection

Auto Close Initial Chat Windows

"Videos" Tab as Default on Channel Pages

Add RSS Feed Button to Channel Pages

Add Playlist Buttons to Channel Pages

Add Direction Buttons to Playlist Panels

Open Playlist Videos Without Being in a Playlist When Clicking the Thumbnail or Title

Show Trash Can Icon on Owned Playlists to Quickly Remove Videos

Add "Remove Watched Videos" Button to Watch Later Playlist

Sort Comments to "Newest First"

Automatically Open Chapter Panels

Automatically Open Transcript Panels

Automatically Open Comments, Only Works with Tab View Enabled

Automatically Enable Timestamps in Transcript Panels

Highlight Active Section in Transcript Panels

Maintain 1x Playback Speed for Music Videos

Use Enhanced Bitrate for 1080p Videos, Premium Required

Persistent Progress Bar with Chapter Markers and SponsorBlock Support—Even in Fullscreen

Display Remaining Time Under Videos Adjusted for Playback Speed—Even in Fullscreen

To also include skipped SponsorBlock segments, ensure "Show time with skips removed" is enabled in SponsorBlock settings under "Interface."

Compact Version for Remaining Time

Hide Remaining Time and Chapters in Fullscreen

Layout Changes

Tab View on Video Page

Toggle Theater Mode by Clicking the Active Tab

Show Chapters Under Videos, Only Works with Tab View Enabled

Compact Layout

Max Panel Height in Default View

Disable Animation When Switching Between Theater mode and Default view

Hide Comments Section

Hide Suggested Videos

Square and Compact Search Bar

Square Design

Square Avatars

Disable Ambient Mode

Hide Shorts

Redirect Shorts to Standard Video Pages

Hide Ad Slots on the Home Page

Hide "X products" Text Under Videos

Hide Product Suggestion Under Videos

Hide "Pay to Watch" Featured Videos on the Home Page

Hide "Free with ads" Videos on the Home Page

Hide Members Only Featured Videos on the Home Page

Hide "Explore more topics" on the Home Page

Hide "Latest posts from . . ." on Search Pages

Modify or Hide UI Elements

Hide "Voice Search" Button

Hide "Create" Button

Hide "Notification" Button

Hide Notification Badge

Hide Own Avatar in the Header

Hide YouTube Brand Text in the Header

Keep Country Code Visible and Choose Color

Small Subscribed Button Under Videos—Displays Only the Notification Icon

Hide the Join Button Under Videos and on Channel Pages

Display Full Titles

Custom Selection Color for Light and Dark Mode

Choose Progress Bar Color

Pure Black-and-White Background

No Frosted Glass Effect

Hide Video Scrubber

Hide Video End Cards

Hide End Screens

Less Intrusive Bottom Gradient

Hide "Play Next" Button

Hide "Airplay" Button

Move "Save" Button into Menu

Hide "Ask" Button

Hide "Share" Button

Hide "Share" Button Only under Videos

Hide Hashtags under Videos

Hide Blue Info Panels

Hide "Add Comment" Textfield

Hide Comment "Reply" Button

Hide "YouTube Playables" on the Home Page

Hide "Breaking News" on the Home Page

Hide "YouTube Playlists" on the Home Page

Hide "Latest YouTube posts" on the Home Page

Hide Fundraiser Icons and Panels

Hide Mini Player

Hide "Add to queue" Button on Hover

Hide Right Sidebar on Search Pages

Hide "Most relevant" on Subscriptions Page

Hide Watched Videos

Hide Watched Videos Regardless of Progress Everywhere

Hide Watched Videos Regardless of Progress Only on the Home Page

Pick a Percentage to Hide Videos on

Home Page

Subscription Page

Channel Pages

Playlists

Video Pages

Search Pages

Hide UI Elements in the Left Navigation Bar

Hide "Home" Button

Hide "Subscriptions" Button

Restore Order: Home > You > Subscriptions

Hide "You" Button

Hide "History" Button

Hide "Playlists" Button

Hide "Your Videos" Button

Hide "Your Courses" Button

Hide "Your Podcasts" Button

Hide "Watch Later" Button

Hide "Liked Videos" Button

Hide "Downloads" Button

Hide "Subscriptions" Section

Hide "Subscriptions" Title

Hide "Show More" Button

Hide "Explore" Section

Hide "Explore" Title

Hide "Trending" Button

Hide "Music" Button

Hide "Movies & TV" Button

Hide "Live" Button

Hide "Gaming" Button

Hide "News" Button

Hide "Sports" Button

Hide "Learning" Button

Hide "Fashion & Beauty" Button

Hide "Podcasts" Button

Hide "More from YouTube" Section

Hide "More from YouTube" Title

Hide "YouTube Premium" Button

Hide "YouTube Studio" Button

Hide "YouTube Music" Button

Hide "YouTube Kids" Button

Hide Penultimate Section

Hide "Settings" Button

Hide "Report History" Button

Hide "Help" Button

Hide "Send Feedback" Button

Hide Footer

Color Code Videos

On Home Page

Adds customizable borders to videos to visually indicate their age and status, and offers the option to hide watched videos.

On Subscriptions Page

Adds a customizable border to the last uploaded video to highlight it on subsequent visits, with the option to auto-scroll to it.

Supported Languages

The script works with YouTube UI set to the following languages: English, Spanish, Hindi, Portuguese, German, French, Italian, Dutch, Polish, Hebrew, Japanese, Korean, Chinese, Indonesian, Swedish, Norwegian, Danish, Finnish, Czech, Greek, Hungarian, Romanian, and Ukrainian.
Support is a work in progress. Other languages may have limited functionality.

License

The code in YouTubeAlchemy.js is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details. The README.md and all images are Copyright © 2025 Tim Macy. All rights reserved.

Read Aloud Speedster

This script integrates intuitive playback speed controls into the chatbox interface. Clicking the speed display opens a popup menu to set a preferred default playback speed and the option to toggle the square design. Additionally, the icons under Chat's responses are color-coded, and bold text is highlighted in color.

Install It from the Official Repository

Disclaimer

YouTube Alchemy is an independent, private project. It's not affiliated with, endorsed by, sponsored by, or in any way officially connected to YouTube, Google LLC, or Alphabet Inc. "YouTube" and the YouTube logo are trademarks of Google LLC; all other trademarks are the property of their respective owners.