Je hebt een nummer gegenereerd op Suno. Nu wil je het bestand — op je telefoon, in je videoeditor, in een DAW. Suno Downloader is een gratis browserhulpmiddel dat een link naar een nummer pakt en een MP3- of lossless WAV-bestand teruggeeft, zonder account en zonder installatie. Er zit een klein, degelijk stukje engineering achter dat al één platformwijziging heeft overleefd. Hier is alles wat daarover bekend is.
De kloof tussen "ik heb een nummer gemaakt" en "ik heb een bestand"
AI-muziekgeneratoren zijn gebouwd rond een speler, niet rond een bestandssysteem. Je beschrijft een nummer, je krijgt een nummer, je luistert ernaar in een browsertabblad — en dan wil je het echt gebruiken. Voeg het toe aan een video. Sleep het in een DAW. Laad het op je telefoon voor een hardloopronde. Stuur het naar iemand die geen account heeft.
Die laatste stap is waar de wrijving zit. De audio zit achter een speler, de downloadopties zijn gekoppeld aan abonnementsniveaus, het bestand dat eruit komt, is vernoemd naar een UUID, en op mobiel is het hele proces een strijd. Suno Downloader bestaat om die stap te reduceren tot één plakken en één klik.
Het is gratis, vereist geen registratie, werkt in een mobiele browser en plakt de echte titel van het nummer in het bestand in plaats van een hash. De rest van dit artikel gaat over wat er achter die functionaliteit schuilgaat.
Wat je erin kunt plakken
De invoerparser is vergevingsgezinder dan de meeste vergelijkbare tools, wat belangrijk is omdat mensen links kopiëren van zeer uiteenlopende plekken — een deelvenster op een telefoon, de adresbalk van een browser, een Discord-bericht, of een notitie waarin alleen de id over is gebleven.
| Wat je plakt | Wat er gebeurt |
|---|---|
https://suno.com/song/<uuid> | De standaard nummerspagina URL. Wordt direct verwerkt. |
https://suno.com/s/<code> | Een deellink. Deze bevat geen nummer-id, dus de dienst volgt de redirect en haalt de id op uit de uiteindelijke URL. |
| Een ruwe deelsleutel | Zes tot dertig alfanumerieke tekens. Wordt omgezet in een deellink URL en op dezelfde manier verwerkt. |
| Een ruwe UUID | Elke string die een nummer-id bevat. Wordt geëxtraheerd en gebruikt. |
| Een directe Suno CDN URL | Geaccepteerd als de host op de whitelist staat, en wordt zo gebruikt. |
| Een playlist-link | Afgekeurd — met een bericht dat uitlegt dat playlists geen enkel bestand zijn, en dat je beter een enkel nummer kunt openen. |
| Een profiel-link | Afgekeurd — met een bericht dat dit aangeeft. |
| Alles wat anders is | Afgekeurd — met een bericht dat om een Suno-nummervoor een deellink vraagt. |
Die laatste drie rijen zijn de interessante. Een luiere implementatie retourneert een 502-fout en laat de gebruiker raden. Deze classificeert waarom de invoer mislukt en retourneert een zin die een mens kan opvolgen. Het is een klein beetje code voor een grote hoeveelheid voorkomende verwarring.
Twee formaten, en waarom ze beide bestaan
MP3 — de standaard
Compact, universeel, speelbaar op alles van een autoradio tot een smart speaker. Gecodeerd met LAME op een hoge VBR-kwaliteitsinstelling, wat de juiste afweging is voor een luisterkopie: transparant voor het oor tegen een fractie van de grootte.
Dit is wat je wilt voor telefoons, messaging-apps, YouTube-achtergronden, podcasts en alles waar het bestand wordt beluisterd in plaats van bewerkt. Het is goed voor ongeveer 85% van de downloads via de dienst.
WAV — de werkversie
Ongecomprimeerde PCM. Groter, en dat opzettelijk: geen extra verliesgerelateerde generatie bovenop de audio die je al hebt.
Dit is het bestand dat je meeneemt naar een editor. Als een nummer wordt geknipt, gelaagd, tijdsuitgebreid, gedempt onder een voice-over, of opnieuw gecodeerd door een videoplatform tijdens het uploaden, wil je het geen bestand geven dat al door een verliesgerelateerde codec is gegaan. Elke volgende codering verergert het. WAV is goed voor ongeveer een zevende van de downloads en bijna iedereen doet precies dit.
De site houdt voor elk een aparte landingspagina aan — Suno naar MP3 en Suno WAV Download — omdat dit twee echt verschillende gebruikersintenties zijn die toevallig dezelfde tool delen.
Het interessante deel: een platformwijziging overleven
Hier stopt het project ermee een simpele wrapper te zijn en begint het echte engineering te worden. Dat is het verhaal waard, omdat dit soort dingen de meeste tools in deze categorie stil en onopgemerkt ten onder brengt.
Lang waren de mechanismen triviaal: Suno leverde audio via voorspelbare CDN URLs, en een downloader kon eenvoudig cdn1.suno.ai/<id>.mp3 ophalen en streamen. In augustus 2026 hield dat op te werken. Suno verplaatste zijn audio achter ondertekende CDN URLs, en het oude directe pad begon voor iedereen een 403-fout te retourneren.
De meeste tools die op de oude aanname waren gebroken. Deze paste zich aan, en de aanpassing is gelaagd:
- 1 · De publieke pagina één keer scrapen De publieke songpagina bevat nog steeds een direct ophaalbare CloudFront
.m4a-clip URL. Een enkele ophaling van de pagina levert zowel die URL als de echte titel van het nummer op — uitog:title, met een fallback naar<title>waarbij het achtervoegsel met de merknaam wordt verwijderd. - 2 · De eigen clip van dit nummer voorrang geven De pagina kan meer dan één clip URL bevatten, dus de matcher zoekt naar de clip waarvan de id overeenkomt met het opgevraagde nummer. Alleen als die exacte match ontbreekt, valt de matcher terug op een willekeurige clip op de pagina.
- 3 · De niet-ondertekende MP4 ophalen De audio-only stream is nu afgeschermd en versleuteld, maar de MP4 — een videoclip met een statisch beeld die dezelfde audiotrack bevat — wordt nog steeds niet-ondertekend geleverd. Dat is precies wat de downloader ophaalt.
- 4 · Extractie met ffmpeg De MP4 wordt eerst naar een tijdelijk bestand geschreven, omdat het moov-atom aan het einde van de container kan staan en ffmpeg een seekbare input nodig heeft. Het door een pipe streamen zou intermitterend falen met de foutmelding "moov atom not found" — een bug die de code documenteert in een commentaar, in plaats van deze achter te laten voor de volgende onderhoudsmedewerker om opnieuw te ontdekken.
- 5 · Streamen en opruimen ffmpeg verwijdert de videospoor en encodeert direct naar MP3 of WAV naar de response. Het tijdelijke bestand wordt verwijderd bij het sluiten van het proces, bij een fout en bij een disconnect van de cliënt — drie aparte paden, allemaal gedekt.
Het gevolg voor de gebruiker is dat beide formaten nu server-side transcoding vereisen, terwijl MP3 vroeger een pass-through was. Het gevolg voor de dienst is een werkende downloader in een maand waarin veel alternatieven stil en onopgemerkt fouten gingen retourneren.
Kleine details die het meeste werk besparen
- Echte bestandsnamen De songtitel wordt van de pagina gelezen en gebruikt als bestandsnaam. Niet-ASCII-titels blijven intact, omdat de downloadheader wordt geschreven als een correct RFC 5987-gecodeerd veld in plaats van een naïeve ASCII-string — dus een nummer met de titel "Пісня про дощ" of "夜明けのうた" komt correct over als naam in plaats van als mojibake of een UUID.
- Geen buffering bij het verzenden De nginx-laag ervoor is geconfigureerd met proxy buffering uit en lange time-outs voor lezen, omdat audiobestanden groot zijn en een gepufferde proxy het hele bestand in het geheugen zou vasthouden voordat er een byte wordt verzonden.
- Cachebeleid gekozen per bestandstype HTML wordt bewust nooit gecached, zodat een inhouds- of SEO-fix direct live gaat. CSS en JS krijgen een TTL van één dag omdat hun bestandsnamen niet inhoudsgehashd zijn. Afbeeldingen en iconen krijgen dertig dagen. Blogafbeeldingen krijgen een jaar, worden als onveranderlijk gemarkeerd en worden rechtstreeks vanaf de schijf door nginx geserveerd zonder de applicatie te raken.
- Eerlijke foutmeldingen "Dit nummer kon niet worden gevonden — zorg ervoor dat het een openbaar solo-nummer op Suno is" vertelt een gebruiker wat hij moet doen. "502 Bad Gateway" doet dat niet. Elk foutpad in de downloadhandler produceert een van de eerstgenoemde meldingen.
- Het werkt op een telefoon Geen installatie, geen app store, geen extensie. De mobiele browser is een first-class client, wat voor een tool waarvan het meest voorkomende gebruik "Ik wil dit op mijn telefoon" is, de hele game verandert.
De API
De webpagina is een client van een kleine publieke API, en die API is direct bruikbaar.
| Eindpunt | Retourneert |
|---|---|
GET /api/health | { "ok": true, "ffmpeg": true } — controleert of de service actief is en of transcoding beschikbaar is. |
GET /api/info?url=<link> | { ok, id, title, pageUrl, ffmpeg } — lost de invoer op, bevestigt dat het nummer publiek en downloadbaar is, en retourneert de echte titel. |
GET /api/download?url=<link>&format=mp3|wav[&title=…] | Streamt het bestand met een correcte bestandsnaam in de downloadheader. De titel kan optioneel worden overschreven. |
POST /api/contact | Gevalideerde verzending van het contactformulier, met snelheidsbeperking per IP-adres. |
curl 'https://sunodownloader.ai/api/info?url=https://suno.com/song/<id>'
curl -OJ 'https://sunodownloader.ai/api/download?url=https://suno.com/song/<id>&format=wav'De tweestapsaanpak is belangrijk als je dit wilt automatiseren: /api/info is lichtgewicht en geeft aan of een link bruikbaar is en hoe deze heet, zodat een batchtaak een lijst kan valideren voordat het beginnen met het ophalen van megabytes.
En een tweede, afgeschermde laag
Daarnaast zijn er /api/v1/health, /api/v1/info en /api/v1/download — dezelfde bewerkingen achter een gedeelde app-token en een snelheidsbeperking per installatie. De token wordt alleen afgedwongen wanneer deze is geconfigureerd, zodat de webversie en lokale ontwikkeling zonder wijzigingen blijven werken, terwijl de mobiele app een interface krijgt die niet zomaar kan worden misbruikt door iedereen die het netwerkverkeer in de gaten houdt.
De Android-app
Er is een Flutter-client voor Android, en het ontwerp is verfrissend minimalistisch in wat het wel en niet doet.
- Het is een dunne client Plak een link, de app roept
/api/v1/infoaan met de app-token, krijgt de audio URL terug en laat de daadwerkelijke overdracht over aan de eigen DownloadManager van Android. - Het systeem voert het downloaden uit Dit betekent een echte systeemmelding van de voortgang, de mogelijkheid om het downloaden te hervatten, en het bestand dat terechtkomt in de openbare map Muziek, waar elke andere app op de telefoon het kan zien — in plaats van in een afgescherkte app-map die niets anders kan lezen.
- Android 8 en hoger Applicatie-id
ai.sunodownloader.app, minimale SDK 26. - Aanmelden verloopt vlekkeloos Google OAuth gestart vanuit de app bevat een marker die door de flow loopt, en de callback retourneert de sessie naar de app via een geregistreerde deep link in plaats van de gebruiker op een webpagina achter te laten.
De repository bewaart alleen de app-specifieke bronnen — de Dart-code, de native activiteit, het manifest, de pictogrammen — en genereert de Gradle-skeletstructuur tijdens de installatie op basis van de Flutter-versie die de bouwer geïnstalleerd heeft. Dit is een bewuste keuze tegen veroudering: het ruilt een installatiestap in voor het nooit meer hoeven vechten tegen een verouderd buildsysteem.
Accounts: Optioneel, en écht optioneel
Er is een accountlaag — lokale e-mail en wachtwoord, plus Google OAuth — en de regel die dit beheerst, staat in een commentaar in de broncode en wordt door de hele code nageleefd: downloads blijven openbaar en anoniem; inloggen geeft alleen extra's; de downloadflow wordt nooit geblokkeerd door authenticatie.
Wat inloggen je precies oplevert:
- Downloadgeschiedenis — de nummers die je hebt gedownload, gededupliceerd, met titels, formaten en tijdstempels.
- Een sessie die je volgt op de webapp en de Android-app.
Dat is de hele lijst. Er zit geen betaallag achter verstopt, er is geen daglimiet die omhoog gaat als je inlogt, en er is geen watermerk dat wordt verwijderd.
Hoe de authenticatie is gebouwd
- Wachtwoordhashing zonder afhankelijkheden scrypt uit de eigen cryptomodule van Node, per gebruiker gezouten, opgeslagen als een gestructureerde string. Geen bcrypt-pakket, geen auth-framework.
- Ondoorzichtige databasesessies Sessietokens zijn willekeurige waarden die op zichzelf niets betekenen en server-side worden opgezocht. Geen self-describing tokens, dus intrekking is een delete.
- Cookies die zich in beide werelden gedragen TLS stopt bij nginx en Cloudflare, dus de app vertrouwt op de doorgegeven protocolheader om te bepalen of cookies als Secure moeten worden gemarkeerd — productie krijgt Secure-cookies, en de gewone HTTP-lokale ontwikkeling werkt nog steeds.
- Timing-safe vergelijking en per-IP auth-throttling Beide zijn aanwezig, beide klein, beide het soort dingen dat in een side project vaak wordt overgeslagen.
- Wachtwoordhashes verlaten de server nooit Er is een expliciete public-shape-functie voor een gebruikersobject, en die bestaat zodat de hash niet per ongeluk in een respons terechtkomt.
De Analytics, en wat er bewust niet wordt verzameld
Elke voltooide download wordt gelogd — zowel successen als falen, met het faalredement erbij — en het loggen is fire-and-forget: het blokkeert nooit de respons en het kan nooit een fout gooien in het downloadpad. Een gebroken analytics-tabel kan een download niet breken.
Wat een record bevat: het lied-id, de titel, het formaat, of het is gelukt, en zo niet, waarom. Daar omheen zit een langlevende anonieme bezoekers-id in een cookie, het echte client-ip-adres afkomstig uit de header van Cloudflare, en een best-effort device, browser en besturingssysteem uitgelezen uit de user-agent string met een kleine handgeschreven parser in plaats van een externe library.
Als je bent ingelogd, wordt de download aan je account toegeschreven — dat is wat de geschiedenisfunctie mogelijk maakt. Als je dat niet bent, blijft het anoniem.
De huidige staat van die data: 858 voltooide downloads, waarvan 731 MP3 en 127 WAV, verspreid over 24 geregistreerde accounts en een veel groter aantal anonieme bezoekers. Het is een jonge dienst, en die cijfers zijn de eerlijke cijfers en geen opgepoetste marketingfiguur.
De bibliotheek die niemand verwacht
De verrassing in dit project is de inhoud. 311 gepubliceerde artikelen, geserveerd vanuit de database met een in-memory cache, gepagineerd, getagd en gekoppeld aan een automatisch gegenereerde sitemap naast de statische pagina's.
Het is geen vulmateriaal. De verdeling van tags toont een echte redactionele structuur:
| Tag | Artikelen |
|---|---|
| Gidsen | 99 |
| Ideeën | 53 |
| Toepassingen | 52 |
| Vergelijking | 14 |
| Rechten en licenties | 13 |
| Perspectieven | 12 |
| Review | 11 |
| Genres | 11 |
| Downloads | 8 |
| Gereedschap | 7 |
| Hoe doe je | 7 |
| Gelegenheden | 6 |
En de stof gaat veel verder dan "hoe download je":
Hoe schrijf je écht een nummer
Structuur, coupletten, refreinen, zang, remasteren.
- Hoe schrijf je een refrein
- Hoe schrijf je een couplet
- Hoe structureer je een nummer
- Hoe krijg je betere AI-zang
Werken met audio
De praktische stappen na het genereren die niemand uitlegt.
- Vocalen verwijderen om een instrumentaal te maken
- Een nummer versnellen zonder het eekhoorneffect
- Een nummer knippen tot de exacte clip die je nodig hebt
- WAV vs FLAC
Muziek met een doel
Tweënvijftig artikelen over het scoren van specifieke dingen.
- Instagram Reels · vastgoedvideo
- Yoga · meditatie · massage · spinklas
- Indiegames · documentaires · reclames
- E-learning · evenementen · slaap
Rechten, ethiek en het vakgebied
Dertien artikelen over licenties, plus een reeks perspectiefstukken.
- Sync-licenties voor AI-muziek
- AI-beats verkopen
- Gebruiken artiesten AI-muziek?
- De ethiek van AI-muziek
- AI-muziek versus menselijke muziek
Er zijn ook vergelijkende stukken (Riffusion versus Suno, Soundful beoordeeld, de beste gratis generator, de beste generator voor beginners), foutoplossingen (Suno genereert niet, downloaden zonder abonnement, een afspeellijst downloaden, downloaden op pc), genre-overzichten (phonk, trance, darkwave, drum and bass, synthpop, new wave, shoegaze, swing, afropop, folk, surfrock, cinematic) en stukken voor gelegenheden (verjaardag, afscheid, herdenking, leraar, vader, broer, baby, breuk, pride, intrede).
Strategisch gezien is dit het verschil tussen een hulpmiddel en een bestemming. Een downloader is een pagina die je één keer bezoekt en vergeet. Driehonderd artikelen over het maken, bewerken, licentiëren en gebruiken van AI-muziek zijn iets waar een gebruiker naartoe terugkeert — en dat betekent dat de site de vraag beantwoordt voordat er gedownload wordt, evenals de vraag daarna.
Hoe het is gebouwd en beheerd
De hele server is een enkel JavaScript-bestand van 53 kilobyte met precies één afhankelijkheid — een MySQL-client. Geen Express, geen framework, geen buildstap. Routing wordt verzorgd door een dispatcher op basis van het request-pad; de HTTP-server is eigendom van Node.
Dat is geen minimalisme om het zelfde. Een dienst die erop is gericht om te overleven als een bovenliggend platform het gedrag van zijn CDN verandert, heeft enorm veel baat bij het hebben van niets tussen de code en de socket. Toen de wijziging in augustus plaatsvond, was de oplossing een functie, geen upgrade van een afhankelijkheid.
De runtime
- Wordt uitgevoerd onder een niet-geprivilegieerde gebruiker op localhost, achter nginx, achter Cloudflare.
- De systemd-unit is gehard: geen nieuwe rechten, een privé-/tmp, een alleen-lezen weergave van de rest van het systeem, een alleen-lezen home-directory en precies één schrijfbaar pad.
- Herstart bij een fout met een korte backoff.
- TLS is een Cloudflare-oorsprongs certificaat dat over de vhosts van de host wordt gedeeld — Cloudflare beëindigt het publieke certificaat.
- De apex is canoniek: zowel plain HTTP als de
www.-host worden 301-omgeleid naarhttps://sunodownloader.ai. - ffmpeg wordt één keer gedetecteerd bij het opstarten; als het ontbreekt, geeft de dienst dit aan in
/api/healthin plaats van dat het op een mysterieuze manier faalt tijdens het downloaden.
De contentplumbing
Artikelen worden in de database opgeslagen en in het geheun gecached per slug, met een expliciet flush-eindpunt voor publicatie. De bloghub is server-side gepagineerd. De sitemap wordt gegenereerd op basis van de statische pagina’s plus elk gepubliceerd bericht en is gecached. Blogafbeeldingen passeren de applicatie volledig — nginx leest ze van de schijf met een cache-header voor één jaar met immutable status, en Cloudflare cache ze aan de edge.
Vaak Gestelde, Kort Beantwoorde Vragen
Heb ik een account nodig?
Nee. Downloads zijn anoniem en onbeperkt. Een account voegt alleen downloadgeschiedenis en een sessie toe die wordt gedeeld met de Android-app.
Is er een limiet aan het aantal tracks dat ik kan downloaden?
Geen limiet per gebruiker. Er is een rate limit per IP-adres voor de contact- en auth-eindpunten om misbruik te voorkomen, en dat is alles.
Waarom klinkt het WAV-bestand hetzelfde als het MP3?
Omdat dat zo hoort. WAV is geen kwaliteitsupgrade ten opzichte van de bron — het is de afwezigheid van een tweede verliesgevende encodering. Gebruik WAV als het bestand naar een editor gaat en later opnieuw wordt geëncodeerd; kies MP3 als het direct naar je oren gaat.
Kan ik een hele afspeellijst in één keer downloaden?
Nee. Een afspeellijst is geen enkel audiobestand, en de dienst geeft dit aan via een bericht in plaats van een foutmelding. Open het individuele nummer en plak de link.
Werkt het met privé-nummers?
Nee. Het leest de openbare nummerpagina. Als de pagina niet openbaar is, is er niets om te lezen.
Worden mijn links gelogd of gedeeld?
De dienst registreert een downloadgebeurtenis — nummer-id, titel, formaat, uitkomst — voor eigen operationele statistieken, gekoppeld aan een anonieme bezoekers-id tenzij je bent ingelogd. Het publiceert of deelt ingediende links niet en communiceert met geen enkele host anders dan die van Suno.
Heeft dit een affiliatie met Suno?
Nee. Het is niet gelieerd aan, gesteund door of gesponsord door Suno AI. Het is een onafhankelijke hulpmiddel voor openbare nummerpagina's.
Wie gebruikt het, en waarvoor
- Videocreërenden Een WAV dat zonder tweede verliesgevende generatie in de tijdlijn terechtkomt, vernoemd naar het nummer in plaats van een UUID.
- Podcasters Intro- en outro-muziek rechtstreeks uit een gegenereerd nummer, in een formaat dat elke editor accepteert.
- Muzikanten die prototypen Neem de gegenereerde stemloze mix mee naar een DAW om erop voort te bouwen, eroverheen te zingen of als referentie te gebruiken.
- Telefoonluisteraars Een MP3 in de muziekmap die offline af te spelen is, in de auto, tijdens een hardloopronde, zonder dat er een browsertabblad open hoeft te staan.
- Iedereen die iets heeft gemaakt en het wil bewaren Wat uiteindelijk de hele kern van het verhaal is.
De korte versie
Suno Downloader zet een Suno-liedlink, deellink of lied-id om in een MP3 of een lossless WAV, gratis, zonder account en zonder installatie, in een browser op elk apparaat. Het accepteert vijf verschillende invoertypen, legt vriendelijk uit wanneer een link niet werkt, hernoemt bestanden naar de echte liedtitel in elk alfabet en proxyt niets wat geen Suno is.
Aan die pagina hangt een tweelaags JSON API: een optionele accountlaag met lokale aanmelding en Google-inloggen die alleen de geschiedenis afschermt, een Flutter Android-client die overdrachten doorgeeft aan de systeemdownloadmanager, een geharde single-file Node-dienst met één afhankelijkheid, en een bibliotheek van 311 artikelen over het maken, bewerken, licentiëren en gebruiken van AI-muziek.
Het heeft ook de zeldzaamste eigenschap in deze categorie: het werkt nog steeds. Toen Suno zijn audio in augustus 2026 achter gesigneerde URLs plaatste, werd de service omgeleid via de eigen ingesloten clip-URL van de pagina en de niet-gesigneerde MP4-container, en ging gewoon door.
Alleen de eigen CDN-hosts van Suno worden geproxied, dus het kan niet als open proxy worden gebruikt.
Suno Downloader, README
Probeer het: sunodownloader.ai · MP3 op /suno-to-mp3 · WAV op /suno-wav-download · de bibliotheek op /blog.