Are you a weirdo who likes to listen to slowed, nightcore music? Well, you'll probably like this app.
The app is available at moonlit.wastu.net.
For quick access, you can replace the URL with the Moonlit URL:
- YouTube: Replace
youtube.comwithmoonlit.wastu.netto the URL (example: moonlit.wastu.net/watch?v=JGwWNGJdvx8)
moonlit-demo.mp4
- Pitch Lock & Shifting: Change the speed without affecting pitch, or shift pitch independently (non lite mode).
- Reverb Effect: Add ambiance to your tracks with adjustable reverb.
- Search Support: Search for videos on YouTube for faster access.
- Lyrics Support: View synchronized, syllable-level lyrics while listening to your tracks.
- Client-Side Cookie Management: Use your own YouTube cookies to bypass restrictions (e.g., age-gated content).
- Export Options: Download the original media or export your processed remix as a WAV or MP3 file.
- Self-Hostable: Run with a single Docker container or directly on your host.
docker pull ghcr.io/bgwastu/moonlit:latest
docker run -d \
--name moonlit \
-p 3000:3000 \
-v moonlit-data:/app/data \
ghcr.io/bgwastu/moonlit:latestOpen http://localhost:3000.
Optional environment variables:
| Variable | Description |
|---|---|
ADMIN_PASSWORD |
Enables the admin cookie management page at /admin |
PROXY_URL |
Proxy for all outbound requests (http://, socks5://, socks5h://) |
docker run -d \
--name moonlit \
-p 3000:3000 \
-e ADMIN_PASSWORD=your_password \
-e PROXY_URL=socks5://127.0.0.1:1080 \
-v moonlit-data:/app/data \
ghcr.io/bgwastu/moonlit:latestdocker build -t moonlit .
docker run -d \
--name moonlit \
-p 3000:3000 \
-v moonlit-data:/app/data \
moonlitPrerequisites: Bun, Node.js 24+, Python 3, ffmpeg.
bun install
bun run build
NODE_ENV=production bun run start- Signalsmith Stretch: A massive shoutout to Signalsmith Audio for their open-source time-stretching library. Honestly, I'm too dumb to implement complex DSP algorithms like this by myself, so this library is doing all the heavy lifting! 😅
- Better Lyrics: Thanks to Better Lyrics and the Better Lyrics API for syllable-synced lyrics and TTML timing data.
- LRCLIB: Thanks to lrclib.net for providing additional lyrics when Better Lyrics has no match.
If you like this project, please consider donating. Your support helps me pay for domain and hosting services. Thanks!