Movies, series and anime in one native Android app.
Browse what's trending, pick up where you left off, and watch with a real player: quality switching, subtitles, dubs, downloads and picture-in-picture.
![]() Home |
![]() Curated shelves |
![]() Title page |
![]() Cast, trailers and more like this |
![]() Player |
![]() Playback settings |
![]() Search |
![]() Search results |
![]() History |
![]() Saved |
![]() Downloads |
Discover
- A Home screen with a trending carousel, a top 10, new episodes this week, and popular movies, series and anime
- Search that runs as you type, with filters, genres, trending picks and recent searches
- Title pages with seasons and episodes, cast, trailers and similar titles
Watch
- Continue watching: resume from the exact spot, and the next episode is lined up for you
- Auto-play the next episode, and watched marks on episodes you've finished
- Switch quality in the player (up to 4K where the source has it)
- Subtitles in many languages, from the stream or from OpenSubtitles
- Pick the audio: original, dub, or another language when a source carries it
- A mini player keeps the video going while you browse, and picture-in-picture works outside the app
Keep
- Download a single episode or a whole season, with pause, resume and retry, and play it offline
- Saved and History, each with its own search, filters and sorting
- In-app updates: check GitHub for a new release, then download and install it without leaving the app
Feel
- Material 3 Expressive design with dynamic color on Android 12 and up
- A themed app icon that follows your wallpaper colors
- Layouts built for phones, tablets and landscape
OpenStream doesn't host any video. Titles and artwork come from TMDB. Streams come from source extensions listed in a JSON catalog. The app checks every installed source in parallel, ranks the results, and plays the best one. If a source fails, it moves on to the next.
Not every title is available yet, and coverage grows as sources are added. Want to add one? See the extension contributor guide and the catalog format.
You need Android Studio (or JDK 17 and the Android SDK) and a free TMDB API key.
git clone https://github.com/Ivorisnoob/OpenStream.git
cd OpenStream
echo "TMDB_API_KEY=your_key_here" >> local.properties
./gradlew installDebugWithout a key the app falls back to TMDB's DEMO_KEY, which is heavily rate-limited.
| Area | What's used |
|---|---|
| UI | Jetpack Compose, Material 3 Expressive (1.5.0-alpha29) |
| Language and build | Kotlin 2.3, AGP 9 with built-in Kotlin, Gradle version catalog |
| Architecture | Single activity, Navigation Compose, MVVM with StateFlow, Hilt |
| Data | Retrofit, OkHttp, kotlinx-serialization, Room, Coil 3 |
| Playback | Media3 ExoPlayer (HLS and MP4), a Media3 download service, and a hidden WebView fallback for web sources |
Architecture notes and conventions are in CLAUDE.md.
Bug reports, fixes and new sources are all welcome. Start with CONTRIBUTING.md.
- TMDB for metadata and artwork. This product uses the TMDB API but is not endorsed or certified by TMDB.
- OpenSubtitles for subtitles
- Material 3 Expressive for the design system










