- JavaScript 68.1%
- HTML 16.8%
- CSS 15.1%
| assets | ||
| .DS_Store | ||
| .gitignore | ||
| android-chrome-192x192.png | ||
| android-chrome-512x512.png | ||
| apple-touch-icon.png | ||
| BUILD_VERSION.txt | ||
| DEVELOPMENT.md | ||
| favicon-16x16.png | ||
| favicon-32x32.png | ||
| favicon.ico | ||
| index.html | ||
| pwa-screenshot-narrow.png | ||
| pwa-screenshot-wide.png | ||
| README.md | ||
| site.webmanifest | ||
| sw.js | ||
JoyPlayer
JoyPlayer is a local-first media player built for the web.
It lets you open media directly from your device, manage a temporary playlist in the browser, attach subtitles, and keep playback smooth across desktop and mobile. It is designed to feel like an app, not just a demo player.
What it does
JoyPlayer focuses on playing your own media without forcing an upload step or a server-side library.
You can:
- open local video, audio, image, and subtitle files
- drag and drop files directly into the player
- open an entire folder in supported browsers
- keep a temporary playlist in the current browser
- search, sort, reorder, and remove playlist items
- resume playback from where you left off
- auto-match subtitle files for videos
- control subtitle track, delay, size, and theme
- switch a video into audio-only mode
- use cinema mode, fullscreen, and Picture-in-Picture
- view cover art or a JoyPlayer fallback visual for audio playback
- use media keys and lock-screen / system media controls where supported
- install it as a PWA for an app-like experience
Main features
Local-first playback
Open files from your own device and play them instantly in the browser.
Playlist management
Build a working playlist without needing an account. Reorder items, sort A–Z, search the playlist, and remove individual entries.
Subtitle controls
Load .srt and .vtt subtitles, let the player auto-detect matching subtitle files, and adjust subtitle delay, size, and theme.
Audio-friendly experience
Audio files show cover art when available. When art is missing, JoyPlayer shows a branded fallback visual instead of leaving the stage empty.
Resume memory
JoyPlayer remembers playback progress in the browser so you can continue from the last saved point.
Folder mode
In supported browsers, you can open a folder and re-open that saved library later without rebuilding the list manually.
App-like controls
The player supports media session integration, install prompt handling, keyboard shortcuts, and a focused viewing mode for larger screens.
Supported media
JoyPlayer is built around common browser-playable formats.
Typical use cases:
- Video: common browser-supported formats such as MP4/WebM
- Audio: browser-supported audio files such as MP3 and similar formats
- Images: standard web-friendly image formats
- Subtitles:
.srtand.vtt
Actual playback support still depends on the browser and codec availability.
How to use
1. Open media
Use Open Files to choose one or more media files from your device.
2. Add subtitles
Use Open Subtitle to add subtitle files. Matching subtitle files can also be detected automatically.
3. Play from a folder
Use Open Folder in a supported Chromium-based browser to load a media folder.
4. Manage the playlist
Use the playlist panel to:
- search items
- move them up or down
- remove entries
- sort the list alphabetically
- clear the playlist
5. Control playback
Use the player controls for:
- play / pause
- previous / next
- volume
- speed
- shuffle
- repeat
- fullscreen
- Picture-in-Picture
- audio-only mode
- cinema mode
6. Continue later
JoyPlayer stores resume position and preferences in the browser, so the next visit feels continuous.
Browser support
JoyPlayer works best in modern browsers.
For the best experience, use a Chromium-based browser if you want:
- folder access
- reconnecting a saved library
- persistent folder handle behavior
Other modern browsers can still use regular local file playback, but some advanced file-system features may be unavailable.
Who it is for
JoyPlayer is a good fit for people who want:
- a clean local media player in the browser
- subtitle support without extra setup
- an installable PWA experience
- a local playlist without uploading files anywhere
- a lightweight personal media app for desktop and mobile
Current direction
Right now, JoyPlayer is documented as a local-first player.
Future directions such as saved remote playlists, user accounts, and server-backed libraries can be added later, but they are intentionally out of scope for this version of the README.
Notes
- Your media stays on your device during normal local playback.
- Saved preferences and progress are stored in the browser.
- Some features depend on browser APIs and permissions.
License
Add your preferred license here.