Open-source project
AHCorn/Bilibili-Auto-Quality avatar
AHCorn/Bilibili-Auto-Quality

Bilibili-Auto-Quality: a userscript that picks the best stream you can play

自动解锁并更改哔哩哔哩视频的画质和音质及直播画质,实现自动选择最高画质、无损音频、杜比全景声。 / Automatically unlock and select highest quality,lossless audio,and Dolby Atmos for Bilibili videos.

659 stars18 forksJavaScriptLicense varies

At a glance

What is it?
Bilibili-Auto-Quality is a JavaScript userscript that selects the highest video and audio quality available to your account, adds a quality panel to the player, and can auto-switch live stream quality. Its author is explicit that it performs no cracking, that it only automates clicking, and that the more aggressive higher quality features are off by default.
Who is it for?
Adopt Bilibili-Auto-Quality if you watch Bilibili in a browser and want the player to pick the best quality your account can actually play without you opening a settings dialog each time, and if you are willing to run a userscript with a panel that modifies the page.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 106 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the script actually claims to do

The repository description is the honest starting point. Bilibili-Auto-Quality automatically selects and changes the quality and audio quality of Bilibili videos as well as live stream quality, implementing automatic selection of the highest quality, lossless audio and Dolby Atmos. The English README sits alongside the Simplified Chinese one, and the project is published on Greasy Fork as a userscript.

The important qualification is stated prominently in a warning block in the usage section. The script implements automatic selection of the highest video and audio quality available to the current user, not letting non-members use member options.

The question of whether the script can crack membership is answered in the FAQ, and the answer is that the script only does simulated clicking and has no cracking function whatsoever. That is a design claim, and it is consistent with the rest of the documentation: the auto quality selection is based on whether the user is a large member, so the script picks the best option in the list the account can see rather than editing a request to ask for a different one.

The repository is small in the way a userscript repository always is. The top level holds Bilibili-Auto-Quality.user.js, the stable userscript, Bilibili-Auto-Quality-Beta.user.js, the beta build, the two README files, and nothing else. The work lives in a single userscript file, and the repository is the source of truth and the issue tracker for a script that people install from a script hosting site.

Where the quality logic came from

The credits at the bottom of the README explain that this is a consolidation of other work rather than a from-scratch project, and the three sources are named.

The higher quality options come from a separate Greasy Fork script covering Dolby Atmos, 8K, HDR and live stream quality PRO. The live stream quality switching logic comes from another script, one for automatically switching live stream quality to the highest, whose code section is linked directly.

The three feature groups in the README map onto those sources. The first is that the higher quality functionality of the Dolby Atmos, 8K, HDR and live quality PRO script has been integrated. The second is that the switching logic from the automatic live quality script was borrowed, to implement the live quality and line selection panel. The third, fourth and fifth are the parts that are genuinely this project's own: automatically choosing the highest quality for the current video based on whether the user is a member, letting the user set their own preferred and fallback quality in the settings panel, and supporting automatic toggling of lossless audio and Dolby Atmos.

That third feature is the most interesting one from a design point of view, because it is the one that has to interact correctly with the site's own idea of who you are. The FAQ devotes a whole entry to the case where the membership state is detected wrongly, and the explanation has two causes: Bilibili may have changed the membership marker for a day-long event, or the user may be blocking or modifying page elements. The script therefore has a developer option to simulate the large member state temporarily.

The author also notes having previously used a related script, one for defaulting Bilibili videos to the highest clarity, which is a reasonable origin story for a script that automates the same choice.

Installing it means enabling developer mode in the browser

The installation path goes through a userscript manager, and the README is specific about which one. On Chrome, the recommendation is to install Tampermonkey from the Chrome Web Store first. On Firefox, the add-on is installed from the Firefox add-ons site. The script itself is then installed from the Greasy Fork page, whose link appears in the repository README, and the Tampermonkey installation panel appears when you click the install button on the script's home page, after which the page closes itself.

There is one non-obvious prerequisite, and it is the step that makes this class of tool possible at all. After installing the userscript manager, you have to open the extension once, and it will show an English prompt that roughly means please enable the browser's developer mode, generally found in the extensions section of the browser menu, with the developer mode button at the top.

The reason a userscript needs that is that developer mode is what allows an extension to inject scripts into pages. Without it, Tampermonkey cannot attach its script to the Bilibili page, and the script silently does nothing.

The verification step is concrete. Once you open a video or a live stream page, you look in the browser's top bar at the extensions area, which some browsers collapse, find the Tampermonkey icon, and notice a red number one in the top left of the icon, indicating that one script is running. Clicking the icon shows the script's name in the popup, with a button for setting audio and video quality underneath. If the script's colour is grey, it is not active, and the fix is to refresh the page and try again. Clicking the button opens the settings panel, where quality and audio can be set. By default the script automatically selects the highest quality and audio, and the panel exists for cases where that is not what you want.

The FAQ is where the real behaviour is documented

The six FAQ entries in the README are more informative than the feature list, and they are the section to read before deciding anything.

On the membership question, the answer is the no-cracking statement quoted earlier. On where the settings panel is, the answer is that from version 4.0 the script by default adds a small television icon to the player control bar, and clicking it opens the quality panel. If the button disappears while other userscripts still load, the advice is to check the console for errors from this script and send the full message back.

On the auto-switch not working, there are two cases. If you are not logged in, the fix is to turn on the not-logged-in mode in the developer options. If you are logged in and the settings panel opens normally but the switch still does not work, the request is to copy the log from the console and send it in.

On the higher quality options not taking effect, the answer explains that to avoid compatibility problems the script no longer enables those features by default, and that you can turn them on yourself in the settings panel for them. It also notes that because the author does not pay particular attention to the availability of those higher quality options, users can instead use the other script directly, whose code for those options this one is based on but which may not be updated as promptly. A warning follows: do not enable those features in both scripts at the same time.

The last two entries are about side effects and contributions. On whether the script affects things it does not mention, such as keyboard shortcuts, the answer is that you can right-click the script or read the source in the project's code section, that switching shortcuts is not affected, and that you can try turning the script off. And on suggestions for improvements, the answer is that ideas will be adopted in later updates as long as they fit the script's positioning and are practical enough.

Live stream quality, the panel icon and the update plan

Three smaller mechanisms are worth separating out because they are the parts you interact with most.

The live stream part of the script is a quality and line selection panel, and the switch logic is borrowed from the other project, which is why the line selection exists as a concept at all: on a live stream the available renditions and the server's assigned line can differ, and picking the highest quality is not always the same as picking the best line.

The player icon arrived in version 4.0, and the small television icon in the player control bar is now the default way to open the settings.

The update plan section is a single item, the live stream locked decoding strategy, with a link to a discussion thread on the Greasy Fork script page. The framing is that if the problem or feature you have reported is already listed below, you can wait for the subsequent update. That is a small but telling piece of project management: a public roadmap of exactly one item, tracked in a discussion rather than in an issue tracker, which is where a userscript's users actually talk.

The project also notes that the documentation in the README is temporary and will be moved to the website soon, which for a project that already points at a Greasy Fork page and a separate documentation site suggests the README is being treated as a temporary home rather than the canonical source.

Where this script is the wrong answer

The first limitation is that it is a userscript, which means it depends on the page structure of a site you do not control. Bilibili changes its player markup, its quality menu and its membership markers regularly, and every one of those changes is a break. The FAQ's own entries describe the failure modes: the membership marker changing for a day, the panel disappearing when the page structure shifts, and the console carrying an error. The project handles this by asking for logs and by keeping a beta build alongside the stable one, which is a reasonable practice but also an admission of the maintenance cost.

The second limitation is the browser developer mode requirement. Enabling it lets extensions inject code into every page you visit, and a userscript that runs on a site with your account logged in is running with your session. For a script whose only job is to pick a quality setting, that is a large amount of privilege for a small amount of function, and it is the trade every userscript makes.

The third limitation is scope. This script does one thing, and the repository says so. It is not a download manager, it is not a danmaku tool, it is not an ad blocker, and it does not touch playback speed or subtitles. If your reason for wanting quality control is that you want the video files, this is the wrong tool and the answer is a separate downloader.

The real alternative, and the honest comparison, is the built-in behaviour plus the higher quality features turned on. Bilibili's own player has a quality menu, and the setting you want may already be reachable by hand; the value of this script is that the choice is made for you, automatically, on every video, with a fallback order you configure. The alternative is a browser extension that handles a different part of the problem, such as a downloader, which leaves quality selection as a manual step but does not require modifying the page. And the third option is the one the project itself points at, the separate script that focuses on those higher quality options and is updated more promptly, which is a reasonable trade if those higher quality options matter more to you than the automatic selection.

Editorial conclusion

Adopt Bilibili-Auto-Quality if you watch Bilibili in a browser and want the player to pick the best quality your account can actually play without you opening a settings dialog each time, and if you are willing to run a userscript with a panel that modifies the page. Do not adopt it if you need more than quality selection, since the documented feature set is narrow, and do not read it as a way to reach member-only streams, because the author states it only automates clicking and selects among the options the current account has. Before installing, decide whether you want those higher quality features enabled at all, since they are off by default for compatibility reasons, and enable the browser developer mode the script requires, which is the step that gives a userscript broad access to the page.

Frequently asked questions

What does Bilibili-Auto-Quality do?

It is a JavaScript userscript that selects the highest video and audio quality available to the current account, adds a quality and audio settings panel to the player, and can auto-switch live stream quality and line. The author states that it performs no cracking and only automates clicking.

Does Bilibili-Auto-Quality give non-members member-only video quality?

The documentation is explicit that the script selects the highest quality available to the current user and does not let non-members use member options, and the FAQ repeats that it only does simulated clicking with no cracking function. Separate features for Dolby Atmos, 8K and HDR exist but are off by default for compatibility reasons.

How do I install Bilibili-Auto-Quality?

Install the Tampermonkey userscript manager from the Chrome Web Store or the Firefox add-ons site, open the extension once and enable the browser's developer mode as its prompt asks, then install the script from its Greasy Fork page. After that, a video or live page shows a red 1 on the Tampermonkey icon, and a settings button opens the quality panel.

Where is the quality settings panel in Bilibili-Auto-Quality?

From version 4.0 the script adds a small television icon to the player control bar, and clicking it opens the quality panel. If the button disappears while other scripts still load, the documentation asks you to check the console for errors from this script and send the full message back.

Is Bilibili-Auto-Quality still maintained?

The repository is not archived and the last push was on 2026-07-09, with no GitHub releases. The project keeps a stable userscript and a beta build, asks for console logs when something fails, and tracks a live stream decoding item as its public update plan.

Official sources

  1. AHCorn/Bilibili-Auto-Quality on GitHub
  2. Issues
  3. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ahcorn-bilibili-auto-quality.svg)](https://hysenlabs.com/projects/ahcorn-bilibili-auto-quality)

Was this useful?