{"id":16275015,"url":"https://github.com/sv443/betterytm","last_synced_at":"2026-03-14T22:22:44.790Z","repository":{"id":37433200,"uuid":"411788750","full_name":"Sv443/BetterYTM","owner":"Sv443","description":"Enhancements for YouTube Music and YouTube","archived":false,"fork":false,"pushed_at":"2026-02-20T12:38:05.000Z","size":29525,"stargazers_count":74,"open_issues_count":38,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-20T16:48:48.636Z","etag":null,"topics":["browser-extension","enhancement","extension","qol","quality-of-life","return-youtube-dislikes","sponsorblock","userscript","userscripts","youtube","youtube-music","yt","ytmusic"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sv443.png","metadata":{"files":{"readme":"README-summary.md","changelog":"changelog.md","contributing":"contributing.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"Sv443","ko_fi":"Sv443","custom":["paypal.me/Sv443"]}},"created_at":"2021-09-29T18:33:07.000Z","updated_at":"2026-02-08T23:40:10.000Z","dependencies_parsed_at":"2023-09-26T15:52:47.129Z","dependency_job_id":"588ebf10-2b49-43c7-99e8-445e658ed305","html_url":"https://github.com/Sv443/BetterYTM","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/Sv443/BetterYTM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sv443%2FBetterYTM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sv443%2FBetterYTM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sv443%2FBetterYTM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sv443%2FBetterYTM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sv443","download_url":"https://codeload.github.com/Sv443/BetterYTM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sv443%2FBetterYTM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30202547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["browser-extension","enhancement","extension","qol","quality-of-life","return-youtube-dislikes","sponsorblock","userscript","userscripts","youtube","youtube-music","yt","ytmusic"],"created_at":"2024-10-10T18:31:33.945Z","updated_at":"2026-03-06T23:09:00.701Z","avatar_url":"https://github.com/Sv443.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Sv443","https://ko-fi.com/Sv443","paypal.me/Sv443"],"categories":[],"sub_categories":[],"readme":"\u003c!-- \u003c{{HEADER}}\u003e --\u003e\n\u003c!-- THIS IS GENERATED CONTENT - DO NOT MODIFY DIRECTLY --\u003e\n\u003ch1\u003e\u003cimg src=\"https://raw.githubusercontent.com/Sv443/BetterYTM/main/assets/images/logo/logo_128.png\" width=\"96\" height=\"96\" /\u003e\u003cbr\u003eBetterYTM\u003c/h1\u003e\n\n### Lots of configurable layout and user experience improvements for YouTube Music™ and YouTube™\n\n\u003ch4\u003eWith translations for: \u003cabbr title=\"Portuguese (Brazil)\"\u003e🇧🇷\u0026nbsp;BR\u003c/abbr\u003e, \u003cabbr title=\"Chinese (Simplified, China)\"\u003e🇨🇳\u0026nbsp;CN\u003c/abbr\u003e, \u003cabbr title=\"German (Germany)\"\u003e🇩🇪\u0026nbsp;DE\u003c/abbr\u003e, \u003cabbr title=\"Spanish (Spain)\"\u003e🇪🇸\u0026nbsp;ES\u003c/abbr\u003e, \u003cabbr title=\"French (France)\"\u003e🇫🇷\u0026nbsp;FR\u003c/abbr\u003e, \u003cabbr title=\"Hindi (India)\"\u003e🇮🇳\u0026nbsp;IN\u003c/abbr\u003e, \u003cabbr title=\"Japanese (Japan)\"\u003e🇯🇵\u0026nbsp;JP\u003c/abbr\u003e\u003c/h4\u003e\n\n---\n#### [**Features**](#features) • [**Installation**](#installation) • [**Integrations**](#integrations) • [**Plugins**](#plugins) • [**Support**](#support) • [**Privacy**](#privacy) • [**Development**](#development) • [**Attributions**](#attributions) • [**Disclaimers**](#disclaimers)\n\u003c!-- END OF GENERATED CONTENT --\u003e\n\u003c!-- \u003c/{{HEADER}}\u003e --\u003e\n\n\u003cbr\u003e\n\n### Features\nAll of these can be toggled and configured in the configuration menu.\n- Layout \u0026 User Experience:\n  - Show the approximate amount of likes and dislikes on songs (powered by returnyoutubedislike.com)\n  - Open any song's lyrics on genius.com which generally has higher quality than YouTube's providers\n  - Set a custom size and step resolution for the volume slider and show a percentage label next to it\n  - Quick actions on songs in a queue, to quickly open their lyrics or remove them from the queue\n  - Quickly scroll to the currently active song in the queue by clicking a button\n  - Remember the time of the last played song to resume playback after reloading or reopening the tab\n  - Improve clickability of song titles and thumbnails when wanting to open them in a new tab\n  - Remove the tracking parameter from URLs in the share menu\n  - Automatically close permanent notifications\n  - Shrink the dead space on the /watch page\n- Input \u0026 Interaction:\n  - Auto-like songs and videos of your favorite creators on both YT and YT Music\n  - Use arrow keys to skip forward or backward and control volume\n  - Press number keys to skip to a percentage of the currently playing song\n  - Custom hotkeys that allow you to switch between YT and YTM, like or dislike, open the lyrics, and more\n  - Prevent the \"unsaved data\" popup that sometimes appears before leaving the site\n  \n... and these are just the notable features, there are many more smaller features, improvements and fixes!\n\n\u003cbr\u003e\n\nTo toggle and configure features, after installing the userscript, click the \"BetterYTM\" text under the logo to open the configuration menu.  \nIf you disabled the watermark, you can still open it by clicking your avatar in the top right corner on YTM or through the left sidebar on YT.  \n  \nMy work relies on donations, so if you like this userscript please consider [supporting development ❤️](https://github.com/sponsors/Sv443)\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Installation\nNote: by installing BetterYTM, you agree to the [license terms](./LICENSE.txt), [disclaimers](#disclaimers) and [privacy notice.](#privacy)\n1. **Install a userscript manager browser extension - I really recommend Violentmonkey ([Firefox](https://addons.mozilla.org/en-US/firefox/addon/violentmonkey/), [Chrome](https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag), [Edge](https://microsoftedge.microsoft.com/addons/detail/violentmonkey/eeagobfjdenkkddmbclomhiblgggliao?hl=en-GB\u0026gl=DE)).**  \n  \u003csub\u003eOther extensions are known to not work as expected, especially in isolated contexts like with FireMonkey or the Brave browser (\u003ca href=\"https://github.com/Sv443/BetterYTM/issues/115#issuecomment-2468374348\" target=\"_blank\"\u003emore info here\u003c/a\u003e).\u003c/sub\u003e\n\n2. **Then, [visit the Releases page](https://github.com/Sv443/BetterYTM/releases) and click the install button on the latest release.**  \n  \u003csub\u003eNote: the `unsafeWindow` grant is required due to limitations in some browsers (\u003ca href=\"https://github.com/Sv443/BetterYTM/issues/18#show_issue\" target=\"_blank\"\u003emore info here\u003c/a\u003e).\u003c/sub\u003e\n\n\u003cbr\u003e\n  \nIf you want to install the latest (potentially unstable) development build, [look for the latest pull request](https://github.com/Sv443/BetterYTM/pulls?q=sort%3Aupdated-desc+is%3Apr+is%3Aopen) and click the install button there.  \nPlease make sure to manually remove and reinstall the userscript once the next release is out to avoid any issues.\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Integrations\nBetterYTM integrates with other extensions and tools to adjust their behavior and provide a smoother experience:\n- [Dark Reader](https://darkreader.org/) (disabled fully or partially)\n- [Enhancer for YouTube](https://www.mrfdev.com/enhancer-for-youtube) (BYTM respects the set theme)\n- [Return YouTube Dislike](https://returnyoutubedislike.com/) (shows approx. like and dislike counts)\n- [SponsorBlock](https://sponsor.ajay.app/) (compatibility adjustments)\n- [ThemeSong](https://github.com/KristofferTroncoso/ThemeSong) (BYTM respects the set theme)\n- [Apple Music](https://music.apple.com/) (album artworks for thumbnail overlay)\n  \nTo find out more about these integrations, [click here](./src/dev/integrations.md)\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Plugins\nBetterYTM supports plugin userscripts that can be installed in parallel and can make use of BetterYTM's pre-existing API.  \n  \n\u003c!-- \u003c{{PLUGINS}}\u003e --\u003e\n\u003c!-- THIS IS GENERATED CONTENT - DO NOT MODIFY DIRECTLY --\u003e\n\u003csup\u003e\n\nRefer to the [plugin creation guide](./contributing.md#developing-a-plugin-that-interfaces-with-betterytm) for more information or check out the [official plugin template](https://github.com/Sv443/BetterYTM-Plugin-Template) for a quick start on creating a plugin.\n\n\u003c/sup\u003e\n\nCurrently there are no available plugins, but you can [submit an issue using the plugin submission template](https://github.com/Sv443/BetterYTM/issues/new/choose) so it will be listed here.  \n\n\u003c!-- END OF GENERATED CONTENT --\u003e\n\u003c!-- \u003c/{{PLUGINS}}\u003e --\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Support\nIf you have any questions, issues, or feature requests, please [open an issue here.](https://github.com/Sv443/BetterYTM/issues/new/choose)  \nYou can also join my Discord server and ask your questions there or just hang out with other community members and me:  \n  \n[![Discord](https://img.shields.io/discord/565933531214118942)](https://dc.sv443.net/)\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Privacy\nBetterYTM does not collect any data about you that isn't strictly necessary for its features to work.  \nYour userscript manager extension's storage API is used to store all settings and data locally on your device.  \nOpen its settings to see and manage this data or remove the userscript to automatically delete all data.  \n  \nBetterYTM makes use of external services and APIs to provide some of its features, which may collect data about you.  \nIn every case, only the bare minimum of data is sent to these services and only when necessary.  \nThis data includes the version of the userscript, your IP address, and the ID, title and author of the video you're watching.  \n  \nFind more info about the privacy of these services here:\n- [Return YouTube Dislike - Security FAQ](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md)\n- [SponsorBlock - Privacy Policy](https://gist.github.com/ajayyy/aa9f8ded2b573d4f73a3ffa0ef74f796#requests-sent-to-the-server-while-using-the-extension)\n- [geniURL - Privacy Policy](https://sv443.net/privacypolicy/en)\n\n\u003cbr\u003e\u003cbr\u003e\n\n### Development\nThis project is based on my extensive template for making a userscript with TypeScript and many modern language and convenience features.  \n[Check it out here](https://github.com/Sv443/Userscript.ts) if you want to make your own userscripts!  \n  \n**For information on how to set this project up locally, contribute to it, or create plugins for BetterYTM, see [the contributing guide](https://github.com/Sv443/BetterYTM/tree/main/contributing.md)**  \n  \n\u003e Note: Each folder contains a README.md file with further information about the contents. If you want to know more about a specific part of the project, please refer to these files.\n\n\u003cbr\u003e\u003cbr\u003e\n\n### Attributions\nThis userscript depends on these projects:\n- [@sv443-network/userutils](https://github.com/Sv443-Network/UserUtils)\n- [compare-versions](https://npmjs.org/package/compare-versions)\n- [Cousine font](https://fonts.google.com/specimen/Cousine)\n- [DOMPurify](https://github.com/cure53/DOMPurify)\n- [Marked](https://npmjs.org/package/marked)\n- [Nano Events](https://github.com/ai/nanoevents)\n- [tslib](https://npmjs.org/package/tslib)\n  \nFor development dependencies, please refer to `devDependencies` in [`package.json`](https://github.com/Sv443/BetterYTM/tree/main/package.json)\n  \n#### Icon attributions\n- Most icons are from [Material Icons](https://fonts.google.com/icons)\n- For external icon attributions, see [`assets/images/external/`](https://github.com/Sv443/BetterYTM/tree/main/assets/images/external/)\n\n\u003cbr\u003e\u003cbr\u003e\n\n### Disclaimers\n- I am not affiliated with or endorsed by YouTube, Google, Alphabet, Genius, or anyone else.\n- I don't own and have not modified any third party icons, I just re-host them as they are [here](https://github.com/Sv443/BetterYTM/tree/main/assets/images/external/) for ensured availability and compatibility.\n- I do not intend to ever collect any data about the end user. Everything in this script is done and stored locally on your device or on the site the script runs on.  \n  Do note that requests to external services may collect data about you, to the extent that those services do (which usually boils down your IP address and the videos you're watching).\n- This script comes as-is, so I can't guarantee this software is without flaws. If something bad happens, I don't accept blame. I will however gladly accept your [bug reports and feature requests](https://github.com/Sv443/BetterYTM/issues/new/choose) or [contributions to the code or translations.](https://github.com/Sv443/BetterYTM/blob/main/contributing.md)\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\nMade with ❤️ by [Sv443](https://github.com/Sv443)  \nIf you like this userscript, please consider [supporting me](https://github.com/sponsors/Sv443)  \n  \n© 2022 Sv443 - [AGPL-3.0](https://github.com/Sv443/BetterYTM/tree/main/LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsv443%2Fbetterytm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsv443%2Fbetterytm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsv443%2Fbetterytm/lists"}