Skip to content
NaySurGithubPublic

About

Lightweight YouTube client for Android written in C++23 (NativeActivity, Dear ImGui, InnerTube). No Kotlin, no Gradle. Unofficial, not affiliated with YouTube.

Resources

Contributing

Stars

4 stars

Watchers

2 watching

Forks

Repository files navigation

SlopTube
SlopTube
Lightweight YouTube client for Android written in C++23

C++23 Platform Dear ImGui
CI License

Searching for MrBeast: the channel, then its videos Watching a MrBeast video with its channel, actions and comments MrBeast's channel page with its shelves
Search Watch page Channel

What is this?

SlopTube is a native YouTube client for Android. There is no Kotlin and no Gradle: the app is a NativeActivity in C++, with a few hundred lines of Java only where Android delivers events to Java classes alone (the media session, the playback service, notifications). It talks to YouTube through InnerTube, the API behind the official apps, signs in with a real Google account and draws an interface close to the official app's with Dear ImGui on OpenGL ES. It is built to stay smooth on a low-end phone (Helio G80): nothing is drawn while nothing moves, and video goes from the hardware decoder to the screen without a copy.

  • Feeds - Home with Shorts shelves and community posts, Subscriptions, history, playlists, and channels with their Videos, Shorts, Live and Playlists tabs
  • Search - suggestions while typing, past searches, and filters (date, type, duration, live, HD, 4K, subtitles, popularity)
  • Account - Google sign-in with a device code, several accounts, likes, subscriptions, comments and replies, saving to playlists
  • Player - hardware decoding up to 1080p60, quality choice, playback speed, 2x while holding, seek previews, chapters, precise seeking, seek undo, fullscreen with pinch to zoom, mini player, autoplay, and the official app's haptic feedback
  • Background - playback goes on with the screen off or in other apps, with the media notification, lock screen, headset and Bluetooth controls, and picture-in-picture
  • Live - broadcasts in progress at every quality, rewinding up to 12 hours, and the live chat
  • Notifications - new uploads of your subscriptions (opt-in, in Settings)
  • Updates - new versions are offered in the app and install in two taps
  • Easy to use - a bigger text and button size (also following the phone's text size), plain error messages with Retry, and an app that keeps going when something fails
  • Shorts - vertical pager with the next short preloaded, so swiping is instant, and double tap to like
  • Subtitles - every track, with machine translation
  • Downloads - videos with their subtitles, watchable offline
  • Text - every script, Arabic shaping, right-to-left text and colour emoji
  • Languages - English and French, following the phone

Downloads

Download the app from the website, which also has step-by-step install instructions. Signed APKs are published on the releases page. Every push to main also builds a debug-signed APK, available from the latest CI run. Both need Android 11 or newer on a 64-bit ARM phone. The two are signed with different keys, so switching from one to the other needs an uninstall first.

Building

Requires CMake 3.28+, Ninja, the Android SDK (platform 35, build-tools 35.0.0), the NDK r27 or newer and JDK 17. The first configure needs network access to fetch the dependencies.

cmake --preset android-release
cmake --build --preset android-release
cmake --build build/android-release --target apk-install

sloptube-cli, a desktop driver for the same core library, builds with the host-debug preset and needs libcurl. The documentation covers the toolchain, the architecture, the InnerTube endpoints, the media pipeline and the interface.

Contributing

Pull requests are welcome. Read docs/contributing.md first: code is formatted with the repository's .clang-format, and CI rejects unformatted code.

Licensing information

SlopTube is licensed under the GNU General Public License v3.0 or any later version. Third-party components and their licences are listed in THIRD_PARTY_NOTICES.md.

SlopTube uses YouTube's private InnerTube API, which can change or stop working at any time. Downloading videos may be against YouTube's Terms of Service; you are responsible for how you use the app and for respecting the rights of content creators. The screenshots show publicly available videos for illustration only.

NOT AN OFFICIAL YOUTUBE PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH GOOGLE LLC OR YOUTUBE. All brands and trademarks belong to their respective owners.

About

Lightweight YouTube client for Android written in C++23 (NativeActivity, Dear ImGui, InnerTube). No Kotlin, no Gradle. Unofficial, not affiliated with YouTube.

Resources

Contributing

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages