*Last updated: March 9, 2026*Stream music and podcasts from anywhere. Generate smart playlists with AI, search songs, albums, artists, podcasts or paste URLs from Spotify, SoundCloud, Bandcamp, Archive.org, Phish.in, and more.
💖 Support Freedify! If you enjoy using Freedify and want to support its ongoing development and new features, please consider making a donation: Donate on Pally.gg. Any amount is incredibly appreciated and helps keep the music playing!
Important
New to Freedify? check out our Visual Deployment Guide for easy step-by-step setup instructions (Localhost, Railway, & Render).
The fastest way to run Freedify. Requires Docker installed.
docker run -d -p 8000:8000 biohaphazard/freedify:latestOpen http://localhost:8000 and start streaming! 🎵
ARM64 Supported: Works on Raspberry Pi, Apple Silicon (M1/M2/M3), and ARM servers!
- Lossless FLAC - Direct 16-bit FLAC streaming from Tidal (HiFi)
- Hi-Res Audio - True 24-bit/192kHz support powered by multiple Tidal proxy APIs
- Hi-Res Mode Toggle - Click the HiFi button to switch between:
- Hi-Res Mode (Cyan) - Prioritizes 24-bit lossless when available
- HiFi Mode (Green) - Standard 16-bit lossless streaming
- HI-RES Album Badge - Cyan "HI-RES" sticker on album cards indicates 24-bit availability
- Audio Quality Display - Album modal shows actual bit depth (e.g., "24bit / 96kHz")
- Direct Stream - No more MP3 transcoding! Fast, pure lossless audio.
- Fast Playback - Audio starts in ~5 seconds (streams progressively, no transcode wait)
- Format Indicator - Badge next to artist shows FLAC (green/cyan), AAC (green), or MP3 (grey)
- EQ Compatible - Full equalizer support even with lossless streams
- Seek Support - Instant seeking/skipping even while streaming Hi-Res
- Gapless Playback - Seamless music transitions (default) with optional 1-second crossfade
- Music Discovery - Click Artist name to search or Album name to view full tracklist instantly
- Tidal-powered - Lightning fast search for tracks, albums, and artists with no rate limits
- YouTube Music - Search YT Music catalog via More → YT Music
- Jamendo Fallback - 600K+ independent/Creative Commons tracks (auto-fallback if main sources miss)
- Live Show Search - Search "Phish 2025" or "Grateful Dead 1977" to find live shows
- Setlist.fm - Search concert setlists via More → Setlists, auto-matches to audio sources
- Added Setlist Detail Modal to preview shows before listening
- Podcast Search - Search and stream podcasts via PodcastIndex API
- Episode Details - Click any episode to see full title, description, and publish date
- Concert Search - Find upcoming shows via More → Concert Search (Ticketmaster + SeatGeek)
- URL Import - Paste links from Spotify, Bandcamp, Soundcloud, Archive.org, Phish.in
- My Podcasts - Dedicated page to save and organize your favorite shows
- Episode Resume - Automatically saves playback position for episodes and resumes where you left off
- Mark as Played - Keep track of finished episodes with ✅ toggles
- History & Tags - View recently played episodes and organize favorites with custom tags
- Queue & Download - Episodes seamlessly integrate with the player queue and can be downloaded
- Important Note: Streaming audiobooks currently requires a Premiumize.me account for caching the torrents. If you use Real-Debrid, All-Debrid, or another service, we invite you to fork Freedify and submit a PR to add support for your preferred debrid service (as we currently lack accounts to test them with)!
- My Books - Audiobook bookshelf to save, organize, and resume your audiobooks
- AudiobookBay Search - Search and download audiobooks via AudiobookBay + Premiumize integration
- Book Info Modal - Click any book for cover art, description, chapters, and play/resume controls
- Goodreads Reviews - Integrated ratings, genres, and top community reviews from Goodreads
- Resume Playback - Cached audiobook tracks resume where you left off — even from the bookshelf
- Google Drive Sync - Audiobook favorites, cached tracks, and progress sync across devices
- Add to Playlist - Click the heart icon on any track to add it to a playlist
- Create Playlists - Create new playlists on the fly from the Add to Playlist modal
- Playlists Tab - Click More → Playlists to view all saved playlists
- Delete Songs - Remove individual songs from any playlist
- Import Playlists - Import M3U, CSV, or JSON playlist files via More → Import Playlist
- Export Playlists - Export any playlist or queue as M3U, CSV, or JSON via the 📤 button
- Google Drive Sync - Playlists, Library, and History sync to Google Drive
- Local Backup - Also stored in browser localStorage (survives restarts)
- Delete Playlists - Hover over playlist and click 🗑️ to remove
- Star to Save - Click ★ on any track to save to your Library (separate from playlists)
- Quick Access - Library section on dashboard shows your starred tracks
- Full Library View - Click "See All" to browse your entire collection
- Synced - Library syncs to Google Drive alongside playlists
- Sync Modal - Click ☁️ or press
Shift+Sto open the Drive Sync panel - Granular Control - Choose to sync:
- Everything (Playlists + Queue)
- Playlists Only (keeps cloud queue unchanged)
- Queue Only (keeps cloud playlists unchanged)
- Cross-Device Resume - Start listening on one device, continue on another
- Smart Merge - Partial uploads preserve existing cloud data
- Save Tracks - Save audio directly to your "Freedify" folder
- Privacy - Uses Drive appDataFolder (hidden from Drive UI)
- Smart Playlist Generator - Create custom playlists instantly by describing a vibe, genre, or activity.
- AI Radio - Infinite queue recommendations based on your seed track (prevents genre drift)
- DJ Mode - AI-powered mixing tips (transition technique, timing, key compatibility) - accuracy undetermined
- Mix Analysis - Learn how to mix compatible tracks by Key and BPM
- Phish.in - Search by year/month (e.g., Phish 2025 or Phish 2024/12)
- Archive.org - Grateful Dead, Billy Strings, Ween, King Gizzard
- Direct URLs - Paste any phish.in or archive.org show URL
- Scrobbling - Automatically tracks what you listen to (triggers after 50% duration or 4 minutes)
- Recommendations - "For You" section (via More → For You) offers personalized tracks based on your history
- Stats Dashboard - See your total scrobbles and top artists this week in the For You section
- Easy Setup - Configure via
LISTENBRAINZ_TOKENenvironment variable
- One-Click Connect - Authenticate via the Last.fm popup (More → Connect Last.fm)
- Auto-Scrobble - Tracks are scrobbled after 50% duration or 4 minutes
- Now Playing - Real-time "Now Playing" status updates on your Last.fm profile
- Session Persistence - Stay connected across page reloads
- Similar Artists - Discover related artists via the Artist Bio modal (powered by Last.fm)
- Click to Explore - Click the artist name in the player bar to open the bio modal
- Wikipedia Bio - Artist biography pulled from Wikipedia via MusicBrainz
- Social Links - Instagram, X/Twitter, Bandcamp, SoundCloud, YouTube, Spotify, and more
- Genres & Tags - Top genres from MusicBrainz community tags
- Similar Artists - Scrollable list of related artists (click to explore)
- Artist Image - High-quality photos from fanart.tv with Wikipedia fallback
- Lyrics Modal - Press L or click 📝 in player controls to view lyrics
- About Tab - Song descriptions, release date, writers, and producers
- Powered by Genius - Searches and scrapes lyrics from Genius.com
- Fullscreen Access - Lyrics button available in fullscreen mode too
- Volume Control - Slider + mute button (volume remembered between sessions)
- Repeat Modes - Off / Repeat All / Repeat One
- Shuffle - Shuffle playlist or current queue
- Fullscreen Mode - Click album art to expand
- Mini Player - Pop-out window for always-on-top playback control
- Album Art Colors - Player background tints to match the current album art
- Always-on-Top - Built with the latest Document Picture-in-Picture API to stay visible over other windows
- Scrolling Marquee - Animated artist and track names for long titles
- Full Control - Play, pause, skip, and volume adjustment directly from the mini window
- Retro Aesthetic - Winamp-inspired classic display for a nostalgic feel
- Automatic Sync - Seamlessly stays in sync with the main player state
- Quick Access - Press V or click 🎬 in fullscreen to find official music video
- YouTube Search - Opens YouTube with optimized search for official video
- Fullscreen Overlay - Click 🌈 in "More" menu or
Alt+V - MilkDrop Integration - Powered by Butterchurn with hundreds of psychedelic presets
- Next Preset - Cycle through visuals with button or
Nkey - Basic Modes - Bars, Wave, Circular, and Particles
- Audio-Reactive - Responds to frequency data in real-time
- Save to Drive - Direct save to Google Drive (FLAC/AIFF/MP3)
- Single Tracks - Download locally as Artist - Song.ext
- Full Albums/Playlists - Batch download as Artist - Album.zip
- Large Playlists - Playlists over 50 songs are automatically split into multiple ZIP parts (e.g., "Playlist (Part 1).zip") to ensure reliability.
- Multiple Formats - FLAC (Hi-Res), WAV (16/24-bit), AIFF (16/24-bit), ALAC, 320kbps MP3
- Current Track - Press ⬇ on player bar or fullscreen to download now playing
- MusicBrainz Metadata - Downloads enriched with release year, label, and high-res cover art
- Drag to Reorder - Drag tracks to rearrange
- Add All / Shuffle All - From any album or playlist
- Smart Preloading - Next track buffers automatically for gapless play
- Auto-Queue - Click any track in an album/playlist to queue and play all following tracks automatically
- Queue Persistence - Queue survives page refresh (saved to localStorage)
- Volume Memory - Volume level remembered between sessions
- Personalized Home - Home screen shows recent albums, artists, library, and playlists
- Quick Resume - Click any item to instantly start playing
- Smart History - Tracks last 50 played songs automatically
- Cross-Device - History and library sync via Google Drive
Freedify supports Spotify playlist URLs. To import your Apple Music playlists, use a free transfer tool:
| Tool | Link | Free Limit |
|---|---|---|
| Soundiiz | soundiiz.com | 200 songs |
| TuneMyMusic | tunemymusic.com | 500 songs |
| FreeYourMusic | freeyourmusic.com | Desktop app |
Steps: Transfer playlist to Spotify (free account works!) → Copy Spotify URL → Paste in Freedify → Stream in lossless!
To enable Google Drive Sync and AI features (Smart Playlist, AI Radio, DJ Mode), you need to set up a Google Cloud Project.
- Go to Google Cloud Console
- Click the project dropdown (top-left) → New Project
- Name it (e.g., "Freedify") → Create
- Select your new project from the dropdown
- Go to APIs & Services → Library
- Search for and Enable each of these:
- Google Drive API (for cloud sync)
- Generative Language API (for Gemini AI features)
- Go to APIs & Services → Credentials
- Click + CREATE CREDENTIALS → OAuth client ID
- If prompted, configure the OAuth consent screen:
- Choose External (unless you're a Google Workspace user)
- Fill in App name, support email
- Add Scopes:
../auth/drive.appdata,../auth/drive.file - Add your email as a Test User (required during testing)
- Save and continue
- Back in Credentials, create an OAuth client ID:
- Application type: Web application
- Name: "Freedify Web"
- Authorized JavaScript origins: Add your domains, e.g.:
http://localhost:8000(for local dev)https://your-app.up.railway.app(for production)
- Authorized redirect URIs: (optional, not needed for implicit flow)
- Click Create
- Copy your Client ID (looks like
123456789-abc.apps.googleusercontent.com) - Set it as
GOOGLE_CLIENT_IDenvironment variable
- In Google Cloud Console, go to APIs & Services → Credentials
- Click + CREATE CREDENTIALS → API key
- Copy the generated API key
- (Optional) Click Edit API key to restrict it to "Generative Language API" only
- Set it as
GEMINI_API_KEYenvironment variable
| Variable | Purpose |
|---|---|
GOOGLE_CLIENT_ID |
OAuth2 Client ID for Google Sign-In (Drive Sync) |
GEMINI_API_KEY |
API Key for Gemini AI (Smart Playlist, AI Radio, DJ Mode) |
Note: For local development on
localhost, you may see a "This app isn't verified" warning during sign-in. Click Advanced → Go to Freedify (unsafe) to proceed. For production, submit your app for verification in the OAuth consent screen settings.
- PWA Support - Install on your phone's home screen
- Responsive Design - Works on any screen size
- Lossless on the Go - Streams pure FLAC by default (podcasts/live archives fall back to MP3)
- Lock Screen Controls - Play/pause/skip from lock screen (Note: Chrome on Android provides the best compatibility for lock screen and headphone controls)
| Key | Action |
|---|---|
| Enter | Play/Pause |
| ← / → | Previous/Next track |
| Shift+← / Shift+→ | Seek -/+ 10 seconds |
| ↑ / ↓ | Volume up/down |
| M | Mute/Unmute |
| S | Shuffle queue |
| R | Cycle repeat mode |
| F | Toggle fullscreen |
| Q | Toggle queue |
| E | Toggle EQ |
| P | Add to Playlist (Global) / Prev Preset (Visualizer) |
| H | Toggle HiFi/Hi-Res |
| D | Download current track |
| A | Toggle AI Radio |
| L | Open Lyrics |
| V | Find Music Video |
| Shift+V | Toggle Visualizer |
| N | Next Preset (Visualizer) |
| ESC | Exit Visualizer |
| Shift+S | Sync to Drive |
| ? | Show shortcuts help |
Below are the 5 main ways to deploy Freedify, ordered by preference.
Best for: Fastest performance, testing, and zero cost.
# Install dependencies
pip install -r app/requirements.txt
# Install FFmpeg (required for transcoding podcasts/lossy audio)
# Windows: winget install ffmpeg
# macOS: brew install ffmpeg
# Linux: apt install ffmpeg
# Run the server
python -m uvicorn app.main:app --port 8000Best for: Always-on home servers, Raspberry Pi, unRAID, or running Freedify cleanly in an isolated container.
- Install Docker on your machine.
- Clone the repo:
git clone https://github.com/BioHapHazard/Freedify cd Freedify - Configure: Open
docker-compose.ymland add your optional keys (ListenBrainz, Ticketmaster, etc.) in theenvironmentsection. - Start the server:
docker compose up -d
- Access: Open http://localhost:8000 in your browser.
Best for: Running a 24/7 public instance of Freedify for yourself with zero costs. Render fully supports our new Tidal Hi-Res API proxy mesh.
- Fork/push this repo to your own GitHub account.
- Go to render.com → New Web Service.
- Connect your GitHub repo.
- Render auto-detects
render.yaml. - Click Deploy.
Best for: Running a 24/7 public instance of Freedify if you're willing to pay a few dollars a month for slightly faster spin-up times than Render's free tier.
- Go to railway.app → New Project
- Deploy from GitHub repo
- Add environment variables (see below)
- Go to Settings → Networking → Generate Domain
- Your app will be live at
your-app.up.railway.app
Pricing: Railway offers a 30-day trial with $5 credit. After that, the Hobby plan is $5/month.
Freedify can run directly on an Android device without rooting, using Termux:
- Install Termux from F-Droid
- Install system dependencies:
pkg update && pkg upgrade
pkg install python ffmpeg git rust binutils-is-llvm libuv python-cryptography python-grpcio- Install Python dependencies:
pip install pydantic_core- Clone and run:
git clone https://github.com/BioHapHazard/Freedify
cd Freedify
pip install -r app/requirements.txt
nano .env # (Optional) add your API keys here
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000(Tip: On Termux, the cache defaults to ~/.freedify_cache to avoid permission errors. To update in the future, just run git pull --rebase --autostash inside the folder)
When deploying to Render (or other hosts), set these in your Dashboard:
| Variable | Required? | Description |
|---|---|---|
GEMINI_API_KEY |
YES | Required for AI Radio and DJ Tips |
MP3_BITRATE |
No | Default: 320k |
PORT |
No | Default: 8000 |
| Variable | Description |
|---|---|
PREMIUMIZE_API_KEY |
Required for Audiobooks - Get at premiumize.me/account |
PODCASTINDEX_KEY |
For Podcast Search (better results) |
PODCASTINDEX_SECRET |
For Podcast Search (required if KEY is used) |
SETLIST_FM_API_KEY |
For Setlist.fm concert search (free at setlist.fm/settings/api) |
LISTENBRAINZ_TOKEN |
For Scrobbling & Recommendations (get at listenbrainz.org/settings) |
GOOGLE_CLIENT_ID |
For Google Drive sync (get at console.cloud.google.com) |
JAMENDO_CLIENT_ID |
For Jamendo indie music fallback (get at developer.jamendo.com) |
GENIUS_ACCESS_TOKEN |
For Genius lyrics (get at genius.com/api-clients) |
TICKETMASTER_API_KEY |
For Concert Search (free at developer.ticketmaster.com) |
SEATGEEK_CLIENT_ID |
For Concert Search fallback (free at seatgeek.com/account/develop) |
Phish 2025- All 2025 Phish showsPhish 2024/12- December 2024 showsGrateful Dead 1977- 1977 Dead from Archive.orgKGLW 2025- 2025 King Gizzard & the Wizard Lizard shows
Select More → Setlists and search using these formats:
Phish 31-12-2025- Specific date (DD-MM-YYYY format)Phish 2025-12-31- Specific date (YYYY-MM-DD format)Phish December 31 2025- Natural language datePearl Jam 2024- All shows from a year
Click a result to see the full setlist with song annotations, then click "Listen on Phish.in" or "Search on Archive.org" to play the show.
- Spotify (playlists, albums, tracks)
- Bandcamp
- Soundcloud
- YouTube
- Archive.org
- Phish.in
- And 1000+ more via yt-dlp
Search albums with Hi-Res badges — stream in 24-bit lossless quality from Qobuz
Album view with format info, track listing, and one-click download as ZIP
Immersive fullscreen mode with album art, playback controls, and visualizer toggle
Smart format selection — options adapt based on source quality (lossy, 16-bit, or 24-bit Hi-Res)
5-band EQ with presets (Flat, Bass Boost, Treble, Vocal) plus bass and volume boost
Full lyrics with verse/chorus sections synced from Genius
Genius annotations explaining song meanings and references
Podcast support with episode details, show notes, and streaming playback
MilkDrop visualizer powered by Butterchurn — hundreds of audio-reactive presets
Switch between MilkDrop, Bars, Wave, and Particles modes with keyboard shortcuts
Find upcoming concerts for your favorite artists with Ticketmaster + SeatGeek
Inspired by and built off of Spotiflac by afkarxyz.
Made with 💖 by a music lover, for music lovers.