SlopTube
Lightweight YouTube client for Android written in C++23
![]() |
![]() |
![]() |
| Search | Watch page | Channel |
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
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.
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.
Pull requests are welcome. Read docs/contributing.md first: code is
formatted with the repository's .clang-format, and CI rejects unformatted code.
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.


