Open-source project
kushagrasinghx/BitChord avatar
kushagrasinghx/BitChord

BitChord: an Android YouTube Music client built around a module source for FLAC playback

BitChord - A modern YouTube music client with clean aesthetics inspired from Apple Music

1,198 stars91 forksKotlinGPL-3.0

At a glance

What is it?
BitChord is a GPLv3 Android app in Kotlin that plays YouTube Music with Apple Music style visuals, offline downloads and optional lossless audio from a configured module source. It ships as a sideloaded APK, not through an app store.
Who is it for?
Adopt BitChord if you are on Android, comfortable sideloading a signed APK from the Releases page, and want YouTube Music playback with offline downloads, word-synced lyrics and an optional lossless path through a module source you configure yourself. Skip it if you need an app store install, an iOS build, or a client that makes no claims about third-party services.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

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

DEEP OPEN-SOURCE ANALYSIS

The gap BitChord fills for Android listeners

The official YouTube Music app on Android is a closed product. You cannot point it at your own lossless source, you cannot swap in a different lyrics provider, and you cannot keep a downloaded track with embedded metadata in a library you control. BitChord exists for the listener who wants those specific things and is willing to sideload to get them.

The README frames the project as an independent third-party client and repeats that it is not affiliated with, endorsed by, or connected to YouTube or Google. That is not boilerplate. It defines the audience: people who already accept that a third-party client operates in a grey area, and who want the app to be honest about it rather than pretend otherwise. The disclaimer states plainly that BitChord does not host, upload or store copyrighted files, and that it "does not guarantee permanent bypasses or modifications to commercial third-party platform conditions."

The target user is an Android owner with a music library and opinions about it. If you just want to press play on a playlist, the official app is less work and involves fewer unknowns.

How the playback and source layer actually fits together

BitChord is a Kotlin Android application. The repository layout shows an app/ module for the client, a backend/ directory, a native/ directory for native code, and a docs/ folder, built with Gradle through the usual settings.gradle.kts and build.gradle.kts files.

The audio path is the interesting part. According to the README, playback has two tiers: a configured module source that can deliver FLAC or ALAC, with YouTube Music as the fallback. The phrase "configured module source" matters. BitChord does not ship a lossless library. It gives you a place to add one, and the README lists "pluggable sources" as a feature with add, edit, test and health-check operations. So the lossless capability is only as good as the module you point it at, and the health check is there because those sources can go down.

Above that sits a fairly conventional Android media stack: a foreground media session for background playback, a system equalizer hook, per-network quality ceilings for Wi-Fi and mobile data separately, gapless playback with crossfade adjustable from 0 to 12 seconds, and an Automix mode the README labels Beta, described as DJ-style transitions with beat-matching and tempo-stretching. The "Stats for nerds" screen exposes codec, bit depth and sample rate on the now-playing screen, which is the fastest way to confirm whether a track actually came through as lossless or silently fell back.

On the interface side, the README credits binimum's am-lyrics project for the Apple-like lyrics animation. Word-synced highlighting is drawn from multiple sources, and theming is extracted from album artwork into a Material palette. The frosted-glass bars come from Haze. Those are the pieces that produce the look the project is named for.

Installing BitChord from the signed APK

There is no Play Store listing and no package manager command. The README points at the Releases page for the latest signed APK, and notes that sideloading requires enabling "Install unknown apps" for whichever app you use to download it. The current release is v1.6, published on 2026-09-15, following v1.5.2 and v1.5.1 earlier in September.

Download the APK on the device itself, or transfer it over. The permission you need is granted per downloading app, so if you fetch it in a browser, that browser needs the toggle. The README gives no command line install step, so the sideload happens through the Android installer after you tap the downloaded file.

Once inside, the first real task is deciding where audio comes from. If you sign in with a Google account, the README says you get personalized content and YouTube Music playback as the fallback tier. If you want the lossless tier, you go to the source management screen and add a module source, then run the built-in test and health check before trusting it. Only after that does the FLAC/ALAC path have anything to read from.

Two smaller setup steps are worth doing early. The per-network quality ceilings let you keep mobile data on a lower setting than Wi-Fi, which matters if you are streaming lossless. And if you use Last.fm or ListenBrainz, scrobbling is configured in-app rather than through a separate client.

Where BitChord is the wrong tool

The lossless claim is conditional, and that is the biggest thing to understand before installing. BitChord does not provide FLAC or ALAC content. It provides a slot for a module source that does, and the README's own health-check feature exists because such sources fail. If you have no source to configure, the headline audio feature is inert and you are using a YouTube Music client with a nicer interface.

The legal position is also explicit rather than hidden. The disclaimer says the user is "entirely responsible for ensuring their usage aligns with their local copyright laws and YouTube Terms of Service," and it declines to guarantee ad-blocking behaviour. That is a real constraint, not a formality. Anyone who needs a client whose compliance story is settled should not be here.

Distribution is another boundary. There is no store build, so every update is a manual APK download and install, and the README's contributing note says pull requests should target the latest branch rather than main. That branch split is a hint about the project's release rhythm: main is not where the release line lives.

Finally, this is Android only. The README lists no iOS, desktop or web target, and the repository is a Gradle Android project. If you listen across platforms, BitChord covers one of them.

How BitChord differs from the official app and from local-only players

Against the official YouTube Music app, the difference is control. The official client decides your audio quality, your lyrics source and your download format. BitChord exposes all three: quality ceilings per network type, word-synced lyrics from multiple sources, and downloads with embedded metadata. The official app also integrates with the platform in ways a sideloaded client cannot, and it updates itself. BitChord trades that convenience for configurability, and the README's disclaimer is the price tag on the trade.

Against a local-only player such as a library-first Android music app, the difference runs the other way. A local player reads files you already own and never touches a network service. BitChord's primary mode is streaming from YouTube Music with a local library integration layered on top. If your collection is entirely on-device and you have no interest in YouTube Music, a local player has fewer moving parts and no disclaimer to read.

The nearest comparison inside BitChord's own category is any third-party YouTube Music client that also supports pluggable audio sources. The distinguishing detail here is that BitChord treats the source as a first-class object with test and health-check operations, rather than a hardcoded endpoint. That design choice is what makes the lossless feature maintainable, and also what makes it dependent on an ecosystem the project does not control.

Maintenance, releases and what GPLv3 means here

The last push to the repository was on 2026-09-15, the same day v1.6 was released, and the project is not archived. Three releases landed in September 2026: v1.5.1 and v1.5.2 on 2026-09-05, then v1.6 on 2026-09-15. That cadence suggests fixes ship quickly, but the README documents no deprecation policy, no supported-version window and no rollback procedure for a bad APK. If v1.6 misbehaves on your device, the README does not tell you how to revert; the Releases page is where older assets would be.

Upgrade cost is manual by design. Each new version is a signed APK you download and install over the previous one. Sideloaded apps do not auto-update, so staying current means checking the Releases page. That is a recurring task, not a one-time setup step.

The licence is GPL-3.0, and the README's own summary is the clearest statement of what that implies: the licence does not let anyone forbid others from selling or redistributing copies, but any distribution must come with the Corresponding Source under the same licence. For an individual user this changes nothing about daily use. For anyone planning to fork BitChord, bundle it, or ship a modified build, the copyleft obligation is the operative fact, and it applies to the whole distributed work. This is not legal advice; read the LICENSE file and, if you are distributing, get proper counsel.

Editorial conclusion

Adopt BitChord if you are on Android, comfortable sideloading a signed APK from the Releases page, and want YouTube Music playback with offline downloads, word-synced lyrics and an optional lossless path through a module source you configure yourself. Skip it if you need an app store install, an iOS build, or a client that makes no claims about third-party services. Before installing, check the Releases page for the current signed APK, read the disclaimer for what the project does not promise about ad blocking or platform terms, and confirm whether the module source you intend to use is one you are allowed to use.

Frequently asked questions

How do I install BitChord on Android?

Download the latest signed APK from the Releases page and enable "Install unknown apps" for whichever app you use to download it, as the README instructs. There is no app store listing, so installation is a manual sideload.

Does BitChord really play FLAC or ALAC lossless audio?

It can, but only through a module source you configure yourself. The README describes Hi-Res lossless audio as FLAC/ALAC from a configured module source, with YouTube Music as the fallback, so without a working source the lossless path has nothing to read from.

What licence is BitChord released under?

GPL-3.0. The README notes that the licence does not let anyone forbid others from selling or redistributing copies, but any distribution must come with the Corresponding Source under the same licence.

Does BitChord block ads on YouTube Music?

The README explicitly declines to guarantee that. Its disclaimer states that while BitChord focuses on a clean listening environment, it does not guarantee permanent bypasses or modifications to commercial third-party platform conditions.

Official sources

  1. kushagrasinghx/BitChord on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes