← Back to feeds | Find edited posts

Tornevalls Blog

URLID: 10
Source URL: https://www.tornevalls.se
Categories: Tornevall

Log in to subscribe to heads-up notifications for this feed or its category via email, Slack, or Discord.

RSS endpoint: https://tools.tornevall.net/api/rss/feed/10
Ask about this feed (click to open)

Ask the AI anything about content, patterns, and edits for Tornevalls Blog. The AI will receive full version history including all edited articles. Open question history.

Use "All time" to search across the full stored database. Version history is still included when the question stays site-focused.
Strict keeps retrieval close to your wording. Expansive lets the AI broaden related terms before final analysis.
Guest questions are temporarily unavailable (captcha not configured). Please try again later.
Guest limits: 0/3 today, 0/12 this week.

My kids lie about the internet when they argue

Permalink
Published: 2025-12-30 17:30:00
Discovered: 2026-03-19 13:50:20
Author: 1
Hash: 4896163eb964d9ae1c1cf87229d39be0219192dc
https://www.tornevalls.se/my-kids-lie-about-the-internet-when-they-argue/
Description

Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.

Content

Warning! This is techy mumbo jumbo linux-howto-article!

To get a translation of this text, hide the swedish version and click on the english version.

Svensk Version

Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

Det fungerar för det mesta. Problemet uppstår när det blir bråk.

I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

Table of Contents Toggle Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables) Så hur gör man då?

Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

Vad jag faktiskt har byggt

Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

Full tillgång: allt är öppet

Avstängt: all trafik stoppas helt

Begränsat: internet är på, men utvalda tjänster blockeras

Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

Hur ser det ut?

Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

  1. Fasta IP per enhet (DHCP)

Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

host Emily { hardware ethernet ; fixed-address 10.1.1.53; }

host SkolEmily { hardware ethernet ; fixed-address 10.1.1.51; }

host SkolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }

  1. En konfigurationsfil med domäner som ska kunna blockas

Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com

  1. Resolver som gör om domäner till CIDR-ranges

Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

Resolvern arbetar i tre steg:

Slår upp en eller flera IPv4-adresser för varje domän

Kör whois på varje IP-adress

Plockar ut hela CIDR-rangen från registry-datat

En förenklad version av scriptet ser ut så här:

#!/bin/bash set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue

for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' ' ' | sort -u > "$tmp"

mv "$tmp" "$OUT"

Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12

Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

  1. State per person

Varje person har en state-fil:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

När man kör strict kopieras iplist.resolved in i personens state-fil.

  1. Styrning med ett kommando

Scriptet kan slå av/på per person eller per enhet:

Status

nethandle

Stäng allt internet för Emily

nethandle emily off

Släpp på internet men blocka valda tjänster (CIDR-listan)

nethandle emily on strict

Bara en enhet (Antilopen) får strict, övriga kan få andra lägen

nethandle emily-antilopen on strict

Full tillgång igen (tömmer state)

nethandle emily on

  1. Apply-fasen (iptables)

En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

en kedja per person, t.ex. NH_EMILY

en JUMP-regel i FORWARD per intern IP som ska styras

DROP-regler i kedjan för varje CIDR i state-filen

Förenklat ser det ut så här:

Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...

Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

English version The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

This works most of the time. The problem arises when arguments happen.

In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

So how do you deal with it?

The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

What I have actually built

I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

Full access: everything is open

Off: all traffic is completely blocked

Limited: the internet is on, but selected services are blocked

The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

What does it look like?

Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

  1. Fixed IPs per device (DHCP)

Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

host Emily { hardware ethernet ; fixed-address 10.1.1.53; }

host SchoolEmily { hardware ethernet ; fixed-address 10.1.1.51; }

host SchoolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }

  1. A configuration file with domains that can be blocked

The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com

  1. Resolver that turns domains into CIDR ranges

The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

The resolver works in three steps:

Looks up one or more IPv4 addresses for each domain

Runs whois on each IP address

Extracts the full CIDR range from the registry data

A simplified version of the script looks like this:

#!/bin/bash set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue

for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

mv "$tmp" "$OUT"

The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12

This is the list that is copied into a person’s state file when strict is activated.

  1. State per person

Each person has a state file:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

An empty file means full access. Thomas = test state. You should not block yourself.

When strict is used, iplist.resolved is copied into the person’s state file.

  1. Control with a single command

The script can turn access on or off per person or per device:

Status

nethandle

Shut down all internet for Emily

nethandle emily off

Allow internet but block selected services (CIDR list)

nethandle emily on strict

Only one device (Antilopen) gets strict, others can have different modes

nethandle emily-antilopen on strict

Full access again (clears state)

nethandle emily on

  1. Apply phase (iptables)

A separate apply component runs after every change and at boot. It reads the state files and creates:

one chain per person, for example NH_EMILY

a JUMP rule in FORWARD per internal IP that should be controlled

DROP rules in the chain for each CIDR in the state file

Simplified, it looks like this:

Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...

The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.


History — 2 versions shown

Changes

From 2025-12-30 17:30:00 (discovered: 2026-02-05 14:24:02) hash: 8f20e4a085f7a1980f371bb88d4b935d7346ba62
To 2025-12-30 17:30:00 (discovered: 2026-03-19 13:50:20) hash: 4896163eb964d9ae1c1cf87229d39be0219192dc
Title
My kids lie about the internet when they argue
Description
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
Content
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version. Svensk Version Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt. Det fungerar för det mesta. Problemet uppstår när det blir bråk. I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna. Table of Contents Toggle Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables) Så hur gör man då? Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå. Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk. Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet. Vad jag faktiskt har byggt Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen: Full tillgång: allt är öppet Avstängt: all trafik stoppas helt Begränsat: internet är på, men utvalda tjänster blockeras Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän. För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar. Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta. Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt. Hur ser det ut? Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler. 1. Fasta IP per enhet (DHCP) Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel: host Emily { hardware ethernet ; fixed-address 10.1.1.53; } host SkolEmily { hardware ethernet ; fixed-address 10.1.1.51; } host SkolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; } 2. En konfigurationsfil med domäner som ska kunna blockas Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad: roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com 3. Resolver som gör om domäner till CIDR-ranges Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges). Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad. Resolvern arbetar i tre steg: Slår upp en eller flera IPv4-adresser för varje domän Kör whois på varje IP-adress Plockar ut hela CIDR-rangen från registry-datat En förenklad version av scriptet ser ut så här: #!/bin/bash set -e CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved" tmp=$(mktemp) while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' ' ' | sort -u
Old vs new
From
TITLE:
My kids lie about the internet when they argue

DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.

CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!

To get a translation of this text, hide the swedish version and click on the english version.

Svensk Version

Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

Det fungerar för det mesta. Problemet uppstår när det blir bråk.

I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?

Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

Vad jag faktiskt har byggt

Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

Full tillgång: allt är öppet

Avstängt: all trafik stoppas helt

Begränsat: internet är på, men utvalda tjänster blockeras

Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

Hur ser det ut?

Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

1. Fasta IP per enhet (DHCP)

Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SkolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SkolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. En konfigurationsfil med domäner som ska kunna blockas

Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver som gör om domäner till CIDR-ranges

Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

Resolvern arbetar i tre steg:

Slår upp en eller flera IPv4-adresser för varje domän

Kör whois på varje IP-adress

Plockar ut hela CIDR-rangen från registry-datat

En förenklad version av scriptet ser ut så här:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"

mv "$tmp" "$OUT"

Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

4. State per person

Varje person har en state-fil:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

När man kör strict kopieras iplist.resolved in i personens state-fil.

5. Styrning med ett kommando

Scriptet kan slå av/på per person eller per enhet:

# Status
nethandle

# Stäng allt internet för Emily
nethandle emily off

# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict

# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict

# Full tillgång igen (tömmer state)
nethandle emily on

6. Apply-fasen (iptables)

En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

en kedja per person, t.ex. NH_EMILY

en JUMP-regel i FORWARD per intern IP som ska styras

DROP-regler i kedjan för varje CIDR i state-filen

Förenklat ser det ut så här:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

English version
The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

This works most of the time. The problem arises when arguments happen.

In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

So how do you deal with it?

The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

What I have actually built

I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

Full access: everything is open

Off: all traffic is completely blocked

Limited: the internet is on, but selected services are blocked

The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

What does it look like?

Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

1. Fixed IPs per device (DHCP)

Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SchoolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SchoolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. A configuration file with domains that can be blocked

The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver that turns domains into CIDR ranges

The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

The resolver works in three steps:

Looks up one or more IPv4 addresses for each domain

Runs whois on each IP address

Extracts the full CIDR range from the registry data

A simplified version of the script looks like this:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

mv "$tmp" "$OUT"

The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

This is the list that is copied into a person's state file when strict is activated.

4. State per person

Each person has a state file:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

An empty file means full access. Thomas = test state. You should not block yourself.

When strict is used, iplist.resolved is copied into the person's state file.

5. Control with a single command

The script can turn access on or off per person or per device:

# Status
nethandle

# Shut down all internet for Emily
nethandle emily off

# Allow internet but block selected services (CIDR list)
nethandle emily on strict

# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict

# Full access again (clears state)
nethandle emily on

6. Apply phase (iptables)

A separate apply component runs after every change and at boot. It reads the state files and creates:

one chain per person, for example NH_EMILY

a JUMP rule in FORWARD per internal IP that should be controlled

DROP rules in the chain for each CIDR in the state file

Simplified, it looks like this:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.
To
TITLE:
My kids lie about the internet when they argue

DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.

CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!

To get a translation of this text, hide the swedish version and click on the english version.

Svensk Version

Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

Det fungerar för det mesta. Problemet uppstår när det blir bråk.

I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?

Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

Vad jag faktiskt har byggt

Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

Full tillgång: allt är öppet

Avstängt: all trafik stoppas helt

Begränsat: internet är på, men utvalda tjänster blockeras

Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

Hur ser det ut?

Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

1. Fasta IP per enhet (DHCP)

Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SkolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SkolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. En konfigurationsfil med domäner som ska kunna blockas

Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver som gör om domäner till CIDR-ranges

Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

Resolvern arbetar i tre steg:

Slår upp en eller flera IPv4-adresser för varje domän

Kör whois på varje IP-adress

Plockar ut hela CIDR-rangen från registry-datat

En förenklad version av scriptet ser ut så här:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"

mv "$tmp" "$OUT"

Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

4. State per person

Varje person har en state-fil:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

När man kör strict kopieras iplist.resolved in i personens state-fil.

5. Styrning med ett kommando

Scriptet kan slå av/på per person eller per enhet:

# Status
nethandle

# Stäng allt internet för Emily
nethandle emily off

# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict

# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict

# Full tillgång igen (tömmer state)
nethandle emily on

6. Apply-fasen (iptables)

En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

en kedja per person, t.ex. NH_EMILY

en JUMP-regel i FORWARD per intern IP som ska styras

DROP-regler i kedjan för varje CIDR i state-filen

Förenklat ser det ut så här:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

English version
The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

This works most of the time. The problem arises when arguments happen.

In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

So how do you deal with it?

The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

What I have actually built

I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

Full access: everything is open

Off: all traffic is completely blocked

Limited: the internet is on, but selected services are blocked

The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

What does it look like?

Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

1. Fixed IPs per device (DHCP)

Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SchoolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SchoolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. A configuration file with domains that can be blocked

The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver that turns domains into CIDR ranges

The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

The resolver works in three steps:

Looks up one or more IPv4 addresses for each domain

Runs whois on each IP address

Extracts the full CIDR range from the registry data

A simplified version of the script looks like this:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

mv "$tmp" "$OUT"

The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

This is the list that is copied into a person’s state file when strict is activated.

4. State per person

Each person has a state file:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

An empty file means full access. Thomas = test state. You should not block yourself.

When strict is used, iplist.resolved is copied into the person’s state file.

5. Control with a single command

The script can turn access on or off per person or per device:

# Status
nethandle

# Shut down all internet for Emily
nethandle emily off

# Allow internet but block selected services (CIDR list)
nethandle emily on strict

# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict

# Full access again (clears state)
nethandle emily on

6. Apply phase (iptables)

A separate apply component runs after every change and at boot. It reads the state files and creates:

one chain per person, for example NH_EMILY

a JUMP rule in FORWARD per internal IP that should be controlled

DROP rules in the chain for each CIDR in the state file

Simplified, it looks like this:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.

Versions

  1. 2025-12-30 17:30:00
    Discovered: 2026-03-19 13:50:20 Hash: 4896163eb964d9ae1c1cf87229d39be0219192dc
    Title:
    My kids lie about the internet when they argue
    Description:
    Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
    Content
    Warning! This is techy mumbo jumbo linux-howto-article!

    To get a translation of this text, hide the swedish version and click on the english version.

    Svensk Version

    Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

    Det fungerar för det mesta. Problemet uppstår när det blir bråk.

    I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

    Table of Contents
    Toggle
    Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
    Så hur gör man då?

    Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

    Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

    Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

    Vad jag faktiskt har byggt

    Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

    Full tillgång: allt är öppet

    Avstängt: all trafik stoppas helt

    Begränsat: internet är på, men utvalda tjänster blockeras

    Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

    För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

    Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

    Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

    Hur ser det ut?

    Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

    1. Fasta IP per enhet (DHCP)

    Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SkolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SkolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. En konfigurationsfil med domäner som ska kunna blockas

    Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver som gör om domäner till CIDR-ranges

    Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

    Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

    Resolvern arbetar i tre steg:

    Slår upp en eller flera IPv4-adresser för varje domän

    Kör whois på varje IP-adress

    Plockar ut hela CIDR-rangen från registry-datat

    En förenklad version av scriptet ser ut så här:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '
    ' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

    4. State per person

    Varje person har en state-fil:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

    När man kör strict kopieras iplist.resolved in i personens state-fil.

    5. Styrning med ett kommando

    Scriptet kan slå av/på per person eller per enhet:

    # Status
    nethandle

    # Stäng allt internet för Emily
    nethandle emily off

    # Släpp på internet men blocka valda tjänster (CIDR-listan)
    nethandle emily on strict

    # Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
    nethandle emily-antilopen on strict

    # Full tillgång igen (tömmer state)
    nethandle emily on

    6. Apply-fasen (iptables)

    En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

    en kedja per person, t.ex. NH_EMILY

    en JUMP-regel i FORWARD per intern IP som ska styras

    DROP-regler i kedjan för varje CIDR i state-filen

    Förenklat ser det ut så här:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

    English version
    The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

    This works most of the time. The problem arises when arguments happen.

    In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

    So how do you deal with it?

    The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

    The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

    That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

    What I have actually built

    I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

    Full access: everything is open

    Off: all traffic is completely blocked

    Limited: the internet is on, but selected services are blocked

    The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

    To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

    The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

    This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

    What does it look like?

    Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

    1. Fixed IPs per device (DHCP)

    Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SchoolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SchoolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. A configuration file with domains that can be blocked

    The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver that turns domains into CIDR ranges

    The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

    This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

    The resolver works in three steps:

    Looks up one or more IPv4 addresses for each domain

    Runs whois on each IP address

    Extracts the full CIDR range from the registry data

    A simplified version of the script looks like this:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    This is the list that is copied into a person’s state file when strict is activated.

    4. State per person

    Each person has a state file:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    An empty file means full access. Thomas = test state. You should not block yourself.

    When strict is used, iplist.resolved is copied into the person’s state file.

    5. Control with a single command

    The script can turn access on or off per person or per device:

    # Status
    nethandle

    # Shut down all internet for Emily
    nethandle emily off

    # Allow internet but block selected services (CIDR list)
    nethandle emily on strict

    # Only one device (Antilopen) gets strict, others can have different modes
    nethandle emily-antilopen on strict

    # Full access again (clears state)
    nethandle emily on

    6. Apply phase (iptables)

    A separate apply component runs after every change and at boot. It reads the state files and creates:

    one chain per person, for example NH_EMILY

    a JUMP rule in FORWARD per internal IP that should be controlled

    DROP rules in the chain for each CIDR in the state file

    Simplified, it looks like this:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.
  2. 2025-12-30 17:30:00
    Discovered: 2026-02-05 14:24:02 Hash: 8f20e4a085f7a1980f371bb88d4b935d7346ba62
    Title:
    My kids lie about the internet when they argue
    Description:
    Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
    Content
    Warning! This is techy mumbo jumbo linux-howto-article!

    To get a translation of this text, hide the swedish version and click on the english version.

    Svensk Version

    Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

    Det fungerar för det mesta. Problemet uppstår när det blir bråk.

    I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

    Table of Contents
    Toggle
    Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
    Så hur gör man då?

    Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

    Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

    Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

    Vad jag faktiskt har byggt

    Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

    Full tillgång: allt är öppet

    Avstängt: all trafik stoppas helt

    Begränsat: internet är på, men utvalda tjänster blockeras

    Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

    För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

    Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

    Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

    Hur ser det ut?

    Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

    1. Fasta IP per enhet (DHCP)

    Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SkolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SkolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. En konfigurationsfil med domäner som ska kunna blockas

    Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver som gör om domäner till CIDR-ranges

    Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

    Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

    Resolvern arbetar i tre steg:

    Slår upp en eller flera IPv4-adresser för varje domän

    Kör whois på varje IP-adress

    Plockar ut hela CIDR-rangen från registry-datat

    En förenklad version av scriptet ser ut så här:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '
    ' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

    4. State per person

    Varje person har en state-fil:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

    När man kör strict kopieras iplist.resolved in i personens state-fil.

    5. Styrning med ett kommando

    Scriptet kan slå av/på per person eller per enhet:

    # Status
    nethandle

    # Stäng allt internet för Emily
    nethandle emily off

    # Släpp på internet men blocka valda tjänster (CIDR-listan)
    nethandle emily on strict

    # Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
    nethandle emily-antilopen on strict

    # Full tillgång igen (tömmer state)
    nethandle emily on

    6. Apply-fasen (iptables)

    En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

    en kedja per person, t.ex. NH_EMILY

    en JUMP-regel i FORWARD per intern IP som ska styras

    DROP-regler i kedjan för varje CIDR i state-filen

    Förenklat ser det ut så här:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

    English version
    The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

    This works most of the time. The problem arises when arguments happen.

    In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

    So how do you deal with it?

    The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

    The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

    That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

    What I have actually built

    I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

    Full access: everything is open

    Off: all traffic is completely blocked

    Limited: the internet is on, but selected services are blocked

    The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

    To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

    The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

    This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

    What does it look like?

    Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

    1. Fixed IPs per device (DHCP)

    Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SchoolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SchoolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. A configuration file with domains that can be blocked

    The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver that turns domains into CIDR ranges

    The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

    This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

    The resolver works in three steps:

    Looks up one or more IPv4 addresses for each domain

    Runs whois on each IP address

    Extracts the full CIDR range from the registry data

    A simplified version of the script looks like this:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    This is the list that is copied into a person's state file when strict is activated.

    4. State per person

    Each person has a state file:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    An empty file means full access. Thomas = test state. You should not block yourself.

    When strict is used, iplist.resolved is copied into the person's state file.

    5. Control with a single command

    The script can turn access on or off per person or per device:

    # Status
    nethandle

    # Shut down all internet for Emily
    nethandle emily off

    # Allow internet but block selected services (CIDR list)
    nethandle emily on strict

    # Only one device (Antilopen) gets strict, others can have different modes
    nethandle emily-antilopen on strict

    # Full access again (clears state)
    nethandle emily on

    6. Apply phase (iptables)

    A separate apply component runs after every change and at boot. It reads the state files and creates:

    one chain per person, for example NH_EMILY

    a JUMP rule in FORWARD per internal IP that should be controlled

    DROP rules in the chain for each CIDR in the state file

    Simplified, it looks like this:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.

My kids lie about the internet when they argue

Permalink
Published: 2025-12-30 17:30:00
Discovered: 2026-02-05 14:24:02
Author: 1
Hash: 8f20e4a085f7a1980f371bb88d4b935d7346ba62
https://www.tornevalls.se/my-kids-lie-about-the-internet-when-they-argue/
Description

Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.

Content

Warning! This is techy mumbo jumbo linux-howto-article!

To get a translation of this text, hide the swedish version and click on the english version.

Svensk Version

Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

Det fungerar för det mesta. Problemet uppstår när det blir bråk.

I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

Table of Contents Toggle Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables) Så hur gör man då?

Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

Vad jag faktiskt har byggt

Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

Full tillgång: allt är öppet

Avstängt: all trafik stoppas helt

Begränsat: internet är på, men utvalda tjänster blockeras

Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

Hur ser det ut?

Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

  1. Fasta IP per enhet (DHCP)

Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

host Emily { hardware ethernet ; fixed-address 10.1.1.53; }

host SkolEmily { hardware ethernet ; fixed-address 10.1.1.51; }

host SkolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }

  1. En konfigurationsfil med domäner som ska kunna blockas

Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com

  1. Resolver som gör om domäner till CIDR-ranges

Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

Resolvern arbetar i tre steg:

Slår upp en eller flera IPv4-adresser för varje domän

Kör whois på varje IP-adress

Plockar ut hela CIDR-rangen från registry-datat

En förenklad version av scriptet ser ut så här:

#!/bin/bash set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue

for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' ' ' | sort -u > "$tmp"

mv "$tmp" "$OUT"

Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12

Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

  1. State per person

Varje person har en state-fil:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

När man kör strict kopieras iplist.resolved in i personens state-fil.

  1. Styrning med ett kommando

Scriptet kan slå av/på per person eller per enhet:

Status

nethandle

Stäng allt internet för Emily

nethandle emily off

Släpp på internet men blocka valda tjänster (CIDR-listan)

nethandle emily on strict

Bara en enhet (Antilopen) får strict, övriga kan få andra lägen

nethandle emily-antilopen on strict

Full tillgång igen (tömmer state)

nethandle emily on

  1. Apply-fasen (iptables)

En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

en kedja per person, t.ex. NH_EMILY

en JUMP-regel i FORWARD per intern IP som ska styras

DROP-regler i kedjan för varje CIDR i state-filen

Förenklat ser det ut så här:

Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...

Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

English version The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

This works most of the time. The problem arises when arguments happen.

In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

So how do you deal with it?

The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

What I have actually built

I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

Full access: everything is open

Off: all traffic is completely blocked

Limited: the internet is on, but selected services are blocked

The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

What does it look like?

Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

  1. Fixed IPs per device (DHCP)

Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

host Emily { hardware ethernet ; fixed-address 10.1.1.53; }

host SchoolEmily { hardware ethernet ; fixed-address 10.1.1.51; }

host SchoolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }

  1. A configuration file with domains that can be blocked

The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com

  1. Resolver that turns domains into CIDR ranges

The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

The resolver works in three steps:

Looks up one or more IPv4 addresses for each domain

Runs whois on each IP address

Extracts the full CIDR range from the registry data

A simplified version of the script looks like this:

#!/bin/bash set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue

for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

mv "$tmp" "$OUT"

The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12

This is the list that is copied into a person's state file when strict is activated.

  1. State per person

Each person has a state file:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

An empty file means full access. Thomas = test state. You should not block yourself.

When strict is used, iplist.resolved is copied into the person's state file.

  1. Control with a single command

The script can turn access on or off per person or per device:

Status

nethandle

Shut down all internet for Emily

nethandle emily off

Allow internet but block selected services (CIDR list)

nethandle emily on strict

Only one device (Antilopen) gets strict, others can have different modes

nethandle emily-antilopen on strict

Full access again (clears state)

nethandle emily on

  1. Apply phase (iptables)

A separate apply component runs after every change and at boot. It reads the state files and creates:

one chain per person, for example NH_EMILY

a JUMP rule in FORWARD per internal IP that should be controlled

DROP rules in the chain for each CIDR in the state file

Simplified, it looks like this:

Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...

The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.


History — 2 versions shown

Changes

From 2025-12-30 17:30:00 (discovered: 2026-02-05 14:24:02) hash: 8f20e4a085f7a1980f371bb88d4b935d7346ba62
To 2025-12-30 17:30:00 (discovered: 2026-03-19 13:50:20) hash: 4896163eb964d9ae1c1cf87229d39be0219192dc
Title
My kids lie about the internet when they argue
Description
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
Content
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version. Svensk Version Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt. Det fungerar för det mesta. Problemet uppstår när det blir bråk. I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna. Table of Contents Toggle Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables) Så hur gör man då? Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå. Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk. Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet. Vad jag faktiskt har byggt Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen: Full tillgång: allt är öppet Avstängt: all trafik stoppas helt Begränsat: internet är på, men utvalda tjänster blockeras Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän. För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar. Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta. Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt. Hur ser det ut? Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler. 1. Fasta IP per enhet (DHCP) Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel: host Emily { hardware ethernet ; fixed-address 10.1.1.53; } host SkolEmily { hardware ethernet ; fixed-address 10.1.1.51; } host SkolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; } 2. En konfigurationsfil med domäner som ska kunna blockas Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad: roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com 3. Resolver som gör om domäner till CIDR-ranges Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges). Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad. Resolvern arbetar i tre steg: Slår upp en eller flera IPv4-adresser för varje domän Kör whois på varje IP-adress Plockar ut hela CIDR-rangen från registry-datat En förenklad version av scriptet ser ut så här: #!/bin/bash set -e CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved" tmp=$(mktemp) while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' ' ' | sort -u
Old vs new
From
TITLE:
My kids lie about the internet when they argue

DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.

CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!

To get a translation of this text, hide the swedish version and click on the english version.

Svensk Version

Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

Det fungerar för det mesta. Problemet uppstår när det blir bråk.

I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?

Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

Vad jag faktiskt har byggt

Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

Full tillgång: allt är öppet

Avstängt: all trafik stoppas helt

Begränsat: internet är på, men utvalda tjänster blockeras

Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

Hur ser det ut?

Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

1. Fasta IP per enhet (DHCP)

Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SkolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SkolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. En konfigurationsfil med domäner som ska kunna blockas

Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver som gör om domäner till CIDR-ranges

Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

Resolvern arbetar i tre steg:

Slår upp en eller flera IPv4-adresser för varje domän

Kör whois på varje IP-adress

Plockar ut hela CIDR-rangen från registry-datat

En förenklad version av scriptet ser ut så här:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"

mv "$tmp" "$OUT"

Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

4. State per person

Varje person har en state-fil:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

När man kör strict kopieras iplist.resolved in i personens state-fil.

5. Styrning med ett kommando

Scriptet kan slå av/på per person eller per enhet:

# Status
nethandle

# Stäng allt internet för Emily
nethandle emily off

# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict

# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict

# Full tillgång igen (tömmer state)
nethandle emily on

6. Apply-fasen (iptables)

En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

en kedja per person, t.ex. NH_EMILY

en JUMP-regel i FORWARD per intern IP som ska styras

DROP-regler i kedjan för varje CIDR i state-filen

Förenklat ser det ut så här:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

English version
The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

This works most of the time. The problem arises when arguments happen.

In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

So how do you deal with it?

The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

What I have actually built

I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

Full access: everything is open

Off: all traffic is completely blocked

Limited: the internet is on, but selected services are blocked

The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

What does it look like?

Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

1. Fixed IPs per device (DHCP)

Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SchoolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SchoolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. A configuration file with domains that can be blocked

The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver that turns domains into CIDR ranges

The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

The resolver works in three steps:

Looks up one or more IPv4 addresses for each domain

Runs whois on each IP address

Extracts the full CIDR range from the registry data

A simplified version of the script looks like this:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

mv "$tmp" "$OUT"

The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

This is the list that is copied into a person's state file when strict is activated.

4. State per person

Each person has a state file:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

An empty file means full access. Thomas = test state. You should not block yourself.

When strict is used, iplist.resolved is copied into the person's state file.

5. Control with a single command

The script can turn access on or off per person or per device:

# Status
nethandle

# Shut down all internet for Emily
nethandle emily off

# Allow internet but block selected services (CIDR list)
nethandle emily on strict

# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict

# Full access again (clears state)
nethandle emily on

6. Apply phase (iptables)

A separate apply component runs after every change and at boot. It reads the state files and creates:

one chain per person, for example NH_EMILY

a JUMP rule in FORWARD per internal IP that should be controlled

DROP rules in the chain for each CIDR in the state file

Simplified, it looks like this:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.
To
TITLE:
My kids lie about the internet when they argue

DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.

CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!

To get a translation of this text, hide the swedish version and click on the english version.

Svensk Version

Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

Det fungerar för det mesta. Problemet uppstår när det blir bråk.

I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?

Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

Vad jag faktiskt har byggt

Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

Full tillgång: allt är öppet

Avstängt: all trafik stoppas helt

Begränsat: internet är på, men utvalda tjänster blockeras

Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

Hur ser det ut?

Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

1. Fasta IP per enhet (DHCP)

Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SkolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SkolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. En konfigurationsfil med domäner som ska kunna blockas

Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver som gör om domäner till CIDR-ranges

Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

Resolvern arbetar i tre steg:

Slår upp en eller flera IPv4-adresser för varje domän

Kör whois på varje IP-adress

Plockar ut hela CIDR-rangen från registry-datat

En förenklad version av scriptet ser ut så här:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"

mv "$tmp" "$OUT"

Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

4. State per person

Varje person har en state-fil:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

När man kör strict kopieras iplist.resolved in i personens state-fil.

5. Styrning med ett kommando

Scriptet kan slå av/på per person eller per enhet:

# Status
nethandle

# Stäng allt internet för Emily
nethandle emily off

# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict

# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict

# Full tillgång igen (tömmer state)
nethandle emily on

6. Apply-fasen (iptables)

En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

en kedja per person, t.ex. NH_EMILY

en JUMP-regel i FORWARD per intern IP som ska styras

DROP-regler i kedjan för varje CIDR i state-filen

Förenklat ser det ut så här:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

English version
The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

This works most of the time. The problem arises when arguments happen.

In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

So how do you deal with it?

The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

What I have actually built

I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

Full access: everything is open

Off: all traffic is completely blocked

Limited: the internet is on, but selected services are blocked

The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

What does it look like?

Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

1. Fixed IPs per device (DHCP)

Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

host Emily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.53;
}

host SchoolEmily {
 hardware ethernet <mac>;
 fixed-address 10.1.1.51;
}

host SchoolEmily2 {
 hardware ethernet <mac>;
 fixed-address 10.1.1.52;
}

2. A configuration file with domains that can be blocked

The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com

3. Resolver that turns domains into CIDR ranges

The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

The resolver works in three steps:

Looks up one or more IPv4 addresses for each domain

Runs whois on each IP address

Extracts the full CIDR range from the registry data

A simplified version of the script looks like this:

#!/bin/bash
set -e

CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

tmp=$(mktemp)

while read -r host; do
 [ -z "$host" ] && continue
 [[ "$host" =~ ^# ]] && continue

 for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
 whois "$ip" | awk '/^CIDR:/ {print $2}'
 done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

mv "$tmp" "$OUT"

The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12

This is the list that is copied into a person’s state file when strict is activated.

4. State per person

Each person has a state file:

/var/tornevall/system/etc/resolver/state-emily

/var/tornevall/system/etc/resolver/state-max

/var/tornevall/system/etc/resolver/state-thomas

An empty file means full access. Thomas = test state. You should not block yourself.

When strict is used, iplist.resolved is copied into the person’s state file.

5. Control with a single command

The script can turn access on or off per person or per device:

# Status
nethandle

# Shut down all internet for Emily
nethandle emily off

# Allow internet but block selected services (CIDR list)
nethandle emily on strict

# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict

# Full access again (clears state)
nethandle emily on

6. Apply phase (iptables)

A separate apply component runs after every change and at boot. It reads the state files and creates:

one chain per person, for example NH_EMILY

a JUMP rule in FORWARD per internal IP that should be controlled

DROP rules in the chain for each CIDR in the state file

Simplified, it looks like this:

Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0

Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...

The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.

Versions

  1. 2025-12-30 17:30:00
    Discovered: 2026-03-19 13:50:20 Hash: 4896163eb964d9ae1c1cf87229d39be0219192dc
    Title:
    My kids lie about the internet when they argue
    Description:
    Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
    Content
    Warning! This is techy mumbo jumbo linux-howto-article!

    To get a translation of this text, hide the swedish version and click on the english version.

    Svensk Version

    Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

    Det fungerar för det mesta. Problemet uppstår när det blir bråk.

    I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

    Table of Contents
    Toggle
    Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
    Så hur gör man då?

    Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

    Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

    Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

    Vad jag faktiskt har byggt

    Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

    Full tillgång: allt är öppet

    Avstängt: all trafik stoppas helt

    Begränsat: internet är på, men utvalda tjänster blockeras

    Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

    För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

    Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

    Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

    Hur ser det ut?

    Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

    1. Fasta IP per enhet (DHCP)

    Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SkolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SkolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. En konfigurationsfil med domäner som ska kunna blockas

    Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver som gör om domäner till CIDR-ranges

    Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

    Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

    Resolvern arbetar i tre steg:

    Slår upp en eller flera IPv4-adresser för varje domän

    Kör whois på varje IP-adress

    Plockar ut hela CIDR-rangen från registry-datat

    En förenklad version av scriptet ser ut så här:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '
    ' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

    4. State per person

    Varje person har en state-fil:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

    När man kör strict kopieras iplist.resolved in i personens state-fil.

    5. Styrning med ett kommando

    Scriptet kan slå av/på per person eller per enhet:

    # Status
    nethandle

    # Stäng allt internet för Emily
    nethandle emily off

    # Släpp på internet men blocka valda tjänster (CIDR-listan)
    nethandle emily on strict

    # Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
    nethandle emily-antilopen on strict

    # Full tillgång igen (tömmer state)
    nethandle emily on

    6. Apply-fasen (iptables)

    En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

    en kedja per person, t.ex. NH_EMILY

    en JUMP-regel i FORWARD per intern IP som ska styras

    DROP-regler i kedjan för varje CIDR i state-filen

    Förenklat ser det ut så här:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

    English version
    The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

    This works most of the time. The problem arises when arguments happen.

    In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

    So how do you deal with it?

    The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

    The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

    That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

    What I have actually built

    I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

    Full access: everything is open

    Off: all traffic is completely blocked

    Limited: the internet is on, but selected services are blocked

    The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

    To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

    The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

    This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

    What does it look like?

    Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

    1. Fixed IPs per device (DHCP)

    Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SchoolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SchoolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. A configuration file with domains that can be blocked

    The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver that turns domains into CIDR ranges

    The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

    This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

    The resolver works in three steps:

    Looks up one or more IPv4 addresses for each domain

    Runs whois on each IP address

    Extracts the full CIDR range from the registry data

    A simplified version of the script looks like this:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    This is the list that is copied into a person’s state file when strict is activated.

    4. State per person

    Each person has a state file:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    An empty file means full access. Thomas = test state. You should not block yourself.

    When strict is used, iplist.resolved is copied into the person’s state file.

    5. Control with a single command

    The script can turn access on or off per person or per device:

    # Status
    nethandle

    # Shut down all internet for Emily
    nethandle emily off

    # Allow internet but block selected services (CIDR list)
    nethandle emily on strict

    # Only one device (Antilopen) gets strict, others can have different modes
    nethandle emily-antilopen on strict

    # Full access again (clears state)
    nethandle emily on

    6. Apply phase (iptables)

    A separate apply component runs after every change and at boot. It reads the state files and creates:

    one chain per person, for example NH_EMILY

    a JUMP rule in FORWARD per internal IP that should be controlled

    DROP rules in the chain for each CIDR in the state file

    Simplified, it looks like this:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.
  2. 2025-12-30 17:30:00
    Discovered: 2026-02-05 14:24:02 Hash: 8f20e4a085f7a1980f371bb88d4b935d7346ba62
    Title:
    My kids lie about the internet when they argue
    Description:
    Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
    Content
    Warning! This is techy mumbo jumbo linux-howto-article!

    To get a translation of this text, hide the swedish version and click on the english version.

    Svensk Version

    Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.

    Det fungerar för det mesta. Problemet uppstår när det blir bråk.

    I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.

    Table of Contents
    Toggle
    Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
    Så hur gör man då?

    Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.

    Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.

    Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.

    Vad jag faktiskt har byggt

    Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:

    Full tillgång: allt är öppet

    Avstängt: all trafik stoppas helt

    Begränsat: internet är på, men utvalda tjänster blockeras

    Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.

    För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.

    Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.

    Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.

    Hur ser det ut?

    Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.

    1. Fasta IP per enhet (DHCP)

    Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SkolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SkolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. En konfigurationsfil med domäner som ska kunna blockas

    Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver som gör om domäner till CIDR-ranges

    Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).

    Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.

    Resolvern arbetar i tre steg:

    Slår upp en eller flera IPv4-adresser för varje domän

    Kör whois på varje IP-adress

    Plockar ut hela CIDR-rangen från registry-datat

    En förenklad version av scriptet ser ut så här:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '
    ' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.

    4. State per person

    Varje person har en state-fil:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.

    När man kör strict kopieras iplist.resolved in i personens state-fil.

    5. Styrning med ett kommando

    Scriptet kan slå av/på per person eller per enhet:

    # Status
    nethandle

    # Stäng allt internet för Emily
    nethandle emily off

    # Släpp på internet men blocka valda tjänster (CIDR-listan)
    nethandle emily on strict

    # Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
    nethandle emily-antilopen on strict

    # Full tillgång igen (tömmer state)
    nethandle emily on

    6. Apply-fasen (iptables)

    En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:

    en kedja per person, t.ex. NH_EMILY

    en JUMP-regel i FORWARD per intern IP som ska styras

    DROP-regler i kedjan för varje CIDR i state-filen

    Förenklat ser det ut så här:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.

    English version
    The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.

    This works most of the time. The problem arises when arguments happen.

    In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.

    So how do you deal with it?

    The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.

    The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.

    That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.

    What I have actually built

    I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:

    Full access: everything is open

    Off: all traffic is completely blocked

    Limited: the internet is on, but selected services are blocked

    The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.

    To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.

    The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.

    This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.

    What does it look like?

    Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.

    1. Fixed IPs per device (DHCP)

    Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:

    host Emily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.53;
    }

    host SchoolEmily {
    hardware ethernet <mac>;
    fixed-address 10.1.1.51;
    }

    host SchoolEmily2 {
    hardware ethernet <mac>;
    fixed-address 10.1.1.52;
    }

    2. A configuration file with domains that can be blocked

    The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:

    roblox.com
    www.roblox.com
    youtube.com
    www.youtube.com
    steamcommunity.com
    store.steampowered.com

    3. Resolver that turns domains into CIDR ranges

    The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).

    This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.

    The resolver works in three steps:

    Looks up one or more IPv4 addresses for each domain

    Runs whois on each IP address

    Extracts the full CIDR range from the registry data

    A simplified version of the script looks like this:

    #!/bin/bash
    set -e

    CONF="/var/tornevall/system/etc/resolver/iplist.conf"
    OUT="/var/tornevall/system/etc/resolver/iplist.resolved"

    tmp=$(mktemp)

    while read -r host; do
    [ -z "$host" ] && continue
    [[ "$host" =~ ^# ]] && continue

    for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
    whois "$ip" | awk '/^CIDR:/ {print $2}'
    done
    done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"

    mv "$tmp" "$OUT"

    The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:

    128.116.0.0/17
    142.250.0.0/15
    172.217.0.0/16
    216.58.192.0/19
    23.0.0.0/12

    This is the list that is copied into a person's state file when strict is activated.

    4. State per person

    Each person has a state file:

    /var/tornevall/system/etc/resolver/state-emily

    /var/tornevall/system/etc/resolver/state-max

    /var/tornevall/system/etc/resolver/state-thomas

    An empty file means full access. Thomas = test state. You should not block yourself.

    When strict is used, iplist.resolved is copied into the person's state file.

    5. Control with a single command

    The script can turn access on or off per person or per device:

    # Status
    nethandle

    # Shut down all internet for Emily
    nethandle emily off

    # Allow internet but block selected services (CIDR list)
    nethandle emily on strict

    # Only one device (Antilopen) gets strict, others can have different modes
    nethandle emily-antilopen on strict

    # Full access again (clears state)
    nethandle emily on

    6. Apply phase (iptables)

    A separate apply component runs after every change and at boot. It reads the state files and creates:

    one chain per person, for example NH_EMILY

    a JUMP rule in FORWARD per internal IP that should be controlled

    DROP rules in the chain for each CIDR in the state file

    Simplified, it looks like this:

    Chain FORWARD
    NH_EMILY all -- 10.1.1.23 0.0.0.0/0
    NH_EMILY all -- 10.1.1.52 0.0.0.0/0
    NH_EMILY all -- 10.1.1.51 0.0.0.0/0
    NH_EMILY all -- 10.1.1.53 0.0.0.0/0

    Chain NH_EMILY
    DROP all -- 0.0.0.0/0 128.116.0.0/17
    DROP all -- 0.0.0.0/0 142.250.0.0/15
    ...

    The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.

People are predicting Suno’s death – how likely is it?

Permalink
Published: 2025-12-29 11:32:07
Discovered: 2026-04-24 08:16:25
Author: 1
Hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
https://www.tornevalls.se/people-are-predicting-sunos-death-how-likely-is-it/
Description

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]

Content

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.


History — 4 versions shown

Changes

From 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:16:25) hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-02-05 14:24:03) hash: e7e71a61897ed20875ea43e501419311b91b35b1
To 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

Versions

  1. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:16:25 Hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  2. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:14:23 Hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  3. 2025-12-29 11:32:07
    Discovered: 2026-03-19 13:50:20 Hash: 696e004598696c9b32ec7879894bc14619881ea9
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  4. 2025-12-29 11:32:07
    Discovered: 2026-02-05 14:24:03 Hash: e7e71a61897ed20875ea43e501419311b91b35b1
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

People are predicting Suno’s death – how likely is it?

Permalink
Published: 2025-12-29 11:32:07
Discovered: 2026-04-24 08:14:23
Author: 1
Hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
https://www.tornevalls.se/people-are-predicting-sunos-death-how-likely-is-it/
Description

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

Content

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.


History — 4 versions shown

Changes

From 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:16:25) hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-02-05 14:24:03) hash: e7e71a61897ed20875ea43e501419311b91b35b1
To 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

Versions

  1. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:16:25 Hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  2. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:14:23 Hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  3. 2025-12-29 11:32:07
    Discovered: 2026-03-19 13:50:20 Hash: 696e004598696c9b32ec7879894bc14619881ea9
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  4. 2025-12-29 11:32:07
    Discovered: 2026-02-05 14:24:03 Hash: e7e71a61897ed20875ea43e501419311b91b35b1
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

People are predicting Suno’s death – how likely is it?

Permalink
Published: 2025-12-29 11:32:07
Discovered: 2026-03-19 13:50:20
Author: 1
Hash: 696e004598696c9b32ec7879894bc14619881ea9
https://www.tornevalls.se/people-are-predicting-sunos-death-how-likely-is-it/
Description

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

Content

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.


History — 4 versions shown

Changes

From 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:16:25) hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-02-05 14:24:03) hash: e7e71a61897ed20875ea43e501419311b91b35b1
To 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

Versions

  1. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:16:25 Hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  2. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:14:23 Hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  3. 2025-12-29 11:32:07
    Discovered: 2026-03-19 13:50:20 Hash: 696e004598696c9b32ec7879894bc14619881ea9
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  4. 2025-12-29 11:32:07
    Discovered: 2026-02-05 14:24:03 Hash: e7e71a61897ed20875ea43e501419311b91b35b1
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

People are predicting Suno’s death – how likely is it?

Permalink
Published: 2025-12-29 11:32:07
Discovered: 2026-02-05 14:24:03
Author: 1
Hash: e7e71a61897ed20875ea43e501419311b91b35b1
https://www.tornevalls.se/people-are-predicting-sunos-death-how-likely-is-it/
Description

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

Content

Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.


History — 4 versions shown

Changes

From 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:16:25) hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
To 2025-12-29 11:32:07 (discovered: 2026-04-24 08:14:23) hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... […]
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
From 2025-12-29 11:32:07 (discovered: 2026-02-05 14:24:03) hash: e7e71a61897ed20875ea43e501419311b91b35b1
To 2025-12-29 11:32:07 (discovered: 2026-03-19 13:50:20) hash: 696e004598696c9b32ec7879894bc14619881ea9
Title
People are predicting Suno’s death – how likely is it?
Description
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
Content
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten.
Old vs new
From
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
To
TITLE:
People are predicting Suno’s death – how likely is it?

DESCRIPTION:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...

CONTENT:
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

Table of Contents
Toggle
What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
What is actually happening

The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

Why the “Suno will die” narrative keeps showing up

This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

Latest claims I have seen in that thread

Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

Claim: “A settlement will force a ‘clean model’ and kill creativity”

What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

Claim: “You don’t own anything, you are renting, and your catalog can vanish”

This is the part where people accidentally become correct, but for the wrong reasons.

Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

The practical takeaway is simple and non-dramatic:

Back up your WAVs/stems and project notes locally. Always.

Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

Possible: yes, as a policy choice.

Inevitable: no.

Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

So what are the real risks for Suno?

Think in terms of business incentives.

High probability changes

When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

Medium probability changes

It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

Lower probability, but still worth planning for

There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

What about us who actually do the work?

Here is the split that regulation will make clearer over time.

If you actually create something

If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

If you do nothing and just press generate

This is where it all goes to shit, and yes, this is exactly where regulation is needed.

When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

What you should do right now

This does not require panic. It does require using your head.

Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

Versions

  1. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:16:25 Hash: 2f7e4a0d8c75dd7792918888f337748908ecb6f5
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  2. 2025-12-29 11:32:07
    Discovered: 2026-04-24 08:14:23 Hash: ebc4881ceeb7fba08d75edb6c73fd894dce57b22
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  3. 2025-12-29 11:32:07
    Discovered: 2026-03-19 13:50:20 Hash: 696e004598696c9b32ec7879894bc14619881ea9
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
  4. 2025-12-29 11:32:07
    Discovered: 2026-02-05 14:24:03 Hash: e7e71a61897ed20875ea43e501419311b91b35b1
    Title:
    People are predicting Suno’s death – how likely is it?
    Description:
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
    Content
    Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.

    That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.

    I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.

    Table of Contents
    Toggle
    What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now
    What is actually happening

    The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.

    At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.

    Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.

    Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.

    Why the “Suno will die” narrative keeps showing up

    This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.

    First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.

    Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.

    Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.

    The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.

    Latest claims I have seen in that thread

    Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”

    What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.

    What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.

    So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.

    Claim: “A settlement will force a ‘clean model’ and kill creativity”

    What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.

    What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.

    Claim: “You don’t own anything, you are renting, and your catalog can vanish”

    This is the part where people accidentally become correct, but for the wrong reasons.

    Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.

    Contract reality matters: the ToS is designed to give the platform broad rights and broad control.

    The practical takeaway is simple and non-dramatic:

    Back up your WAVs/stems and project notes locally. Always.

    Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”

    Possible: yes, as a policy choice.

    Inevitable: no.

    Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.

    So what are the real risks for Suno?

    Think in terms of business incentives.

    High probability changes

    When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.

    Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.

    Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.

    Medium probability changes

    It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.

    In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.

    Lower probability, but still worth planning for

    There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.

    A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.

    What about us who actually do the work?

    Here is the split that regulation will make clearer over time.

    If you actually create something

    If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.

    At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.

    If you do nothing and just press generate

    This is where it all goes to shit, and yes, this is exactly where regulation is needed.

    When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.

    So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.

    What you should do right now

    This does not require panic. It does require using your head.

    Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.

    That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.

    Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.

    So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.

The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

Permalink
Published: 2025-12-23 12:26:07
Discovered: 2026-04-24 08:16:26
Author: 1
Hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
https://www.tornevalls.se/the-struggle-transcribe-stuff-for-free-with-whisper-and-wsl-linux-with-a-gtx-1060/
Description

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]

Content

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat

@echo off setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul

REM File passed from Explorer set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"

[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"

--- Parse args ---

while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done

echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"

--- Sanity ---

if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi

shellcheck disable=SC1090

source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

==================================================

UNINSTALL MODE (-u)

==================================================

if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"

pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true

echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi

==================================================

INSTALL MODE (DEFAULT)

==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116

--- Verify ---

echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF

echo "" echo "Done." echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash set -euo pipefail

whisper-run.sh

Usage:

whisper <input.extension> [model] [language]

Output:

.txt (same directory)

Behaviour:

- Refuses to overwrite existing .txt

- Stops execution if output exists

if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi

INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi

BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"

--- Refuse overwrite ---

if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi

Prefer venv whisper if installed via install script

WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi

TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT

echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"

ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )

if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi

--- Final move (no overwrite possible due to earlier check) ---

mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:" echo " $OUTPUT"


History — 4 versions shown

Changes

From 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:16:26) hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that... […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-02-05 14:24:03) hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
To 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"

Versions

  1. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:16:26 Hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  2. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:14:23 Hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  3. 2025-12-23 12:26:07
    Discovered: 2026-03-19 13:50:20 Hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  4. 2025-12-23 12:26:07
    Discovered: 2026-02-05 14:24:03 Hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"

The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

Permalink
Published: 2025-12-23 12:26:07
Discovered: 2026-04-24 08:14:23
Author: 1
Hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
https://www.tornevalls.se/the-struggle-transcribe-stuff-for-free-with-whisper-and-wsl-linux-with-a-gtx-1060/
Description

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

Content

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat

@echo off setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul

REM File passed from Explorer set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"

[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"

--- Parse args ---

while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done

echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"

--- Sanity ---

if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi

shellcheck disable=SC1090

source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

==================================================

UNINSTALL MODE (-u)

==================================================

if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"

pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true

echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi

==================================================

INSTALL MODE (DEFAULT)

==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116

--- Verify ---

echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF

echo "" echo "Done." echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash set -euo pipefail

whisper-run.sh

Usage:

whisper <input.extension> [model] [language]

Output:

.txt (same directory)

Behaviour:

- Refuses to overwrite existing .txt

- Stops execution if output exists

if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi

INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi

BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"

--- Refuse overwrite ---

if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi

Prefer venv whisper if installed via install script

WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi

TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT

echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"

ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )

if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi

--- Final move (no overwrite possible due to earlier check) ---

mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:" echo " $OUTPUT"


History — 4 versions shown

Changes

From 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:16:26) hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that... […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-02-05 14:24:03) hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
To 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"

Versions

  1. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:16:26 Hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  2. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:14:23 Hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  3. 2025-12-23 12:26:07
    Discovered: 2026-03-19 13:50:20 Hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  4. 2025-12-23 12:26:07
    Discovered: 2026-02-05 14:24:03 Hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"

The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

Permalink
Published: 2025-12-23 12:26:07
Discovered: 2026-03-19 13:50:20
Author: 1
Hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
https://www.tornevalls.se/the-struggle-transcribe-stuff-for-free-with-whisper-and-wsl-linux-with-a-gtx-1060/
Description

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

Content

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat

@echo off setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul

REM File passed from Explorer set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"

[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"

--- Parse args ---

while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done

echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"

--- Sanity ---

if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi

shellcheck disable=SC1090

source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

==================================================

UNINSTALL MODE (-u)

==================================================

if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"

pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true

echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi

==================================================

INSTALL MODE (DEFAULT)

==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116

--- Verify ---

echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF

echo "" echo "Done." echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash set -euo pipefail

whisper-run.sh

Usage:

whisper <input.extension> [model] [language]

Output:

.txt (same directory)

Behaviour:

- Refuses to overwrite existing .txt

- Stops execution if output exists

if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi

INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi

BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"

--- Refuse overwrite ---

if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi

Prefer venv whisper if installed via install script

WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi

TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT

echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"

ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )

if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi

--- Final move (no overwrite possible due to earlier check) ---

mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:" echo " $OUTPUT"


History — 4 versions shown

Changes

From 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:16:26) hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that... […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-02-05 14:24:03) hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
To 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"

Versions

  1. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:16:26 Hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  2. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:14:23 Hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  3. 2025-12-23 12:26:07
    Discovered: 2026-03-19 13:50:20 Hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  4. 2025-12-23 12:26:07
    Discovered: 2026-02-05 14:24:03 Hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"

The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

Permalink
Published: 2025-12-23 12:26:07
Discovered: 2026-02-05 14:24:03
Author: 1
Hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
https://www.tornevalls.se/the-struggle-transcribe-stuff-for-free-with-whisper-and-wsl-linux-with-a-gtx-1060/
Description

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

Content

I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat

@echo off setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul

REM File passed from Explorer set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"

[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"

--- Parse args ---

while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done

echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"

--- Sanity ---

if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi

shellcheck disable=SC1090

source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

==================================================

UNINSTALL MODE (-u)

==================================================

if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"

pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true

echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi

==================================================

INSTALL MODE (DEFAULT)

==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116

--- Verify ---

echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF

echo "" echo "Done." echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash set -euo pipefail

whisper-run.sh

Usage:

whisper <input.extension> [model] [language]

Output:

.txt (same directory)

Behaviour:

- Refuses to overwrite existing .txt

- Stops execution if output exists

if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi

INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi

BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"

--- Refuse overwrite ---

if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi

Prefer venv whisper if installed via install script

WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi

TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT

echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"

ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )

if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi

--- Final move (no overwrite possible due to earlier check) ---

mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:" echo " $OUTPUT"


History — 4 versions shown

Changes

From 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:16:26) hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
To 2025-12-23 12:26:07 (discovered: 2026-04-24 08:14:23) hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that... […]
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
From 2025-12-23 12:26:07 (discovered: 2026-02-05 14:24:03) hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
To 2025-12-23 12:26:07 (discovered: 2026-03-19 13:50:20) hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
Title
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
Description
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
Content
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app. Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized. At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're you’re expected to pay quite a bit just to keep going. I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself. The end result was the following (thanks to ChatGPT): A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well. A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file. A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click. A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names. The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in. WSL uses python and pip… Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat @echo off setlocal EnableExtensions REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul REM File passed from Explorer set "WIN_FILE=%~1" REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i" REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\"" endlocal whisper.reg (explorer right clicks) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe" [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command] @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\"" installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller) To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts. #!/usr/bin/env bash set -euo pipefail VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install" # --- Parse args --- while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE" # --- Sanity --- if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi # shellcheck disable=SC1090 source "$VENV_DIR/bin/activate" python -m pip install --upgrade pip setuptools wheel # ================================================== # UNINSTALL MODE (-u) # ================================================== if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)" pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi # ================================================== # INSTALL MODE (DEFAULT) # ================================================== echo "==> Installing compatible stack (no forced uninstall)" pip install \ numpy==1.26.4 \ torch==1.13.1+cu116 \ torchvision==0.14.1+cu116 \ torchaudio==0.13.1 \ --extra-index-url https://download.pytorch.org/whl/cu116 # --- Verify --- echo "==> Verifying environment" python - /dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}" ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False ) if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi "$WHISPER_BIN" "${ARGS[@]}" GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi # --- Final
Old vs new
From
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"
To
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060

DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...

CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

The end result was the following (thanks to ChatGPT):

A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

WSL uses python and pip…

Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat

@echo off
setlocal EnableExtensions

REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul

REM File passed from Explorer
set "WIN_FILE=%~1"

REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

endlocal

whisper.reg (explorer right clicks)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"

[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

#!/usr/bin/env bash
set -euo pipefail

VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"

# --- Parse args ---
while getopts ":u" opt; do
 case "$opt" in
 u) MODE="uninstall" ;;
 *)
 echo "Usage: $0 [-u]"
 exit 1
 ;;
 esac
done

echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"

# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
 echo "Error: venv not found: $VENV_DIR"
 exit 1
fi

# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"

python -m pip install --upgrade pip setuptools wheel

# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
 echo "==> Uninstalling incompatible packages ONLY (-u)"

 pip uninstall -y torch torchvision torchaudio || true
 pip uninstall -y numpy || true

 echo ""
 echo "Done."
 echo "Uninstall completed. Nothing else touched."
 exit 0
fi

# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================

echo "==> Installing compatible stack (no forced uninstall)"

pip install \
 numpy==1.26.4 \
 torch==1.13.1+cu116 \
 torchvision==0.14.1+cu116 \
 torchaudio==0.13.1 \
 --extra-index-url https://download.pytorch.org/whl/cu116

# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
 print("GPU:", torch.cuda.get_device_name(0))
 print("Capability:", torch.cuda.get_device_capability(0))
EOF

echo ""
echo "Done."
echo "Install completed without destructive actions."

The script itself

The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

#!/usr/bin/env bash
set -euo pipefail

# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists

if [[ $# -lt 1 ]]; then
 echo "Usage: whisper <input.extension> [model] [language]"
 exit 1
fi

INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"

if [[ ! -f "$INPUT" ]]; then
 echo "Error: Input file not found: $INPUT"
 exit 1
fi

BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"

# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
 echo "Error: Output file already exists:"
 echo " $OUTPUT"
 echo "Aborting to avoid overwrite."
 exit 1
fi

# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
 WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi

if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
 echo "Error: whisper not found in PATH or venv."
 exit 1
fi

TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"

ARGS=(
 "$INPUT"
 --model "$MODEL"
 --output_dir "$TMPDIR"
 --output_format txt
 --task transcribe
 --verbose False
 --fp16 False
)

if [[ -n "$LANGUAGE" ]]; then
 ARGS+=( --language "$LANGUAGE" )
fi

"$WHISPER_BIN" "${ARGS[@]}"

GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
 FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
 if [[ -z "${FOUND_TXT:-}" ]]; then
 echo "Error: No .txt output produced."
 exit 1
 fi
 GENERATED_TXT="$FOUND_TXT"
fi

# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"

echo "==> Done:"
echo " $OUTPUT"

Versions

  1. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:16:26 Hash: 7048054bb2d73799a6f2563ca0267e8a302b4ff0
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  2. 2025-12-23 12:26:07
    Discovered: 2026-04-24 08:14:23 Hash: 16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  3. 2025-12-23 12:26:07
    Discovered: 2026-03-19 13:50:20 Hash: b0fbb9c4287dd26aa452f1adc93e224e681051e1
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"
  4. 2025-12-23 12:26:07
    Discovered: 2026-02-05 14:24:03 Hash: 30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
    Title:
    The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
    Description:
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
    Content
    I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.

    I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.

    Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.

    At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.

    I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.

    The end result was the following (thanks to ChatGPT):

    A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.

    A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.

    A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.

    A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.

    The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.

    WSL uses python and pip…

    Table of Contents
    Toggle
    whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
    whisper.bat

    @echo off
    setlocal EnableExtensions

    REM Force UTF-8 codepage (fixes å ä ö)
    chcp 65001 >nul

    REM File passed from Explorer
    set "WIN_FILE=%~1"

    REM Convert Windows path to WSL path (UTF-8 safe now)
    for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"

    REM Run whisper on that file
    wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""

    endlocal

    whisper.reg (explorer right clicks)

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
    @="Transkribera med Whisper (WSL)"
    "Icon"="wsl.exe"

    [HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
    @="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""

    installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)

    To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.

    #!/usr/bin/env bash
    set -euo pipefail

    VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
    MODE="install"

    # --- Parse args ---
    while getopts ":u" opt; do
    case "$opt" in
    u) MODE="uninstall" ;;
    *)
    echo "Usage: $0 [-u]"
    exit 1
    ;;
    esac
    done

    echo "==> Whisper installer (GTX 1060 compatible)"
    echo "==> Mode: $MODE"

    # --- Sanity ---
    if [[ ! -d "$VENV_DIR" ]]; then
    echo "Error: venv not found: $VENV_DIR"
    exit 1
    fi

    # shellcheck disable=SC1090
    source "$VENV_DIR/bin/activate"

    python -m pip install --upgrade pip setuptools wheel

    # ==================================================
    # UNINSTALL MODE (-u)
    # ==================================================
    if [[ "$MODE" == "uninstall" ]]; then
    echo "==> Uninstalling incompatible packages ONLY (-u)"

    pip uninstall -y torch torchvision torchaudio || true
    pip uninstall -y numpy || true

    echo ""
    echo "Done."
    echo "Uninstall completed. Nothing else touched."
    exit 0
    fi

    # ==================================================
    # INSTALL MODE (DEFAULT)
    # ==================================================

    echo "==> Installing compatible stack (no forced uninstall)"

    pip install \
    numpy==1.26.4 \
    torch==1.13.1+cu116 \
    torchvision==0.14.1+cu116 \
    torchaudio==0.13.1 \
    --extra-index-url https://download.pytorch.org/whl/cu116

    # --- Verify ---
    echo "==> Verifying environment"
    python - << 'EOF'
    import torch, numpy
    print("Torch:", torch.__version__)
    print("NumPy:", numpy.__version__)
    print("CUDA available:", torch.cuda.is_available())
    if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
    print("Capability:", torch.cuda.get_device_capability(0))
    EOF

    echo ""
    echo "Done."
    echo "Install completed without destructive actions."

    The script itself

    The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).

    #!/usr/bin/env bash
    set -euo pipefail

    # whisper-run.sh
    # Usage:
    # whisper <input.extension> [model] [language]
    #
    # Output:
    # <input-filename>.txt (same directory)
    #
    # Behaviour:
    # - Refuses to overwrite existing .txt
    # - Stops execution if output exists

    if [[ $# -lt 1 ]]; then
    echo "Usage: whisper <input.extension> [model] [language]"
    exit 1
    fi

    INPUT="$1"
    MODEL="${2:-small}"
    LANGUAGE="${3:-}"

    if [[ ! -f "$INPUT" ]]; then
    echo "Error: Input file not found: $INPUT"
    exit 1
    fi

    BASENAME="$(basename "$INPUT")"
    STEM="${BASENAME%.*}"
    OUTDIR="$(dirname "$INPUT")"
    OUTPUT="$OUTDIR/$STEM.txt"

    # --- Refuse overwrite ---
    if [[ -f "$OUTPUT" ]]; then
    echo "Error: Output file already exists:"
    echo " $OUTPUT"
    echo "Aborting to avoid overwrite."
    exit 1
    fi

    # Prefer venv whisper if installed via install script
    WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
    WHISPER_BIN="whisper"
    if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
    WHISPER_BIN="$WHISPER_VENV/bin/whisper"
    fi

    if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
    echo "Error: whisper not found in PATH or venv."
    exit 1
    fi

    TMPDIR="$(mktemp -d)"
    cleanup() { rm -rf "$TMPDIR"; }
    trap cleanup EXIT

    echo "==> Transcribing:"
    echo " input: $INPUT"
    echo " output: $OUTPUT"
    echo " model: $MODEL"
    echo " lang: ${LANGUAGE:-auto}"

    ARGS=(
    "$INPUT"
    --model "$MODEL"
    --output_dir "$TMPDIR"
    --output_format txt
    --task transcribe
    --verbose False
    --fp16 False
    )

    if [[ -n "$LANGUAGE" ]]; then
    ARGS+=( --language "$LANGUAGE" )
    fi

    "$WHISPER_BIN" "${ARGS[@]}"

    GENERATED_TXT="$TMPDIR/$STEM.txt"
    if [[ ! -f "$GENERATED_TXT" ]]; then
    FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
    if [[ -z "${FOUND_TXT:-}" ]]; then
    echo "Error: No .txt output produced."
    exit 1
    fi
    GENERATED_TXT="$FOUND_TXT"
    fi

    # --- Final move (no overwrite possible due to earlier check) ---
    mv "$GENERATED_TXT" "$OUTPUT"

    echo "==> Done:"
    echo " $OUTPUT"