AI-vattenstämplar i text: Dolda tecken kontra statistiska tokenmarkörer
AI-vattenstämplar i text finns i två former, och endast en av dem består av tecken som du kan ta bort.
| Typ av vattenstämpel | Var den finns | Synlig för detta verktyg | Kan tas bort av detta verktyg |
|---|---|---|---|
| Dolda teckenmarkeringar | I textens byte, som osynliga eller ovanliga kodpunkter | Ja | Ja |
| Tokenvalsmarkeringar | I själva ordvalen | Nej | Nej |
Dolda teckenmarkeringar är kodpunkter som din textredigerare sparar men som din skärm aldrig ritar ut.
Tokenvalsmarkeringar bärs av vilket ord modellen valde i varje steg, så de lämnar inget tecken att hitta och inget tecken att rensa bort. Alla AI-verktyg som märker genererad text idag använder denna typ.
Vad gör ett Unicode-tecken osynligt?
Ett tecken är osynligt när det inte tar upp någon bredd på skärmen. Unicode registrerar det beteendet med egenskapen Default_Ignorable_Code_Point och den allmänna kategorin Cf, vilket betyder format.
Default_Ignorable_Code_Point är en härledd egenskap som publiceras som en ren textlista i DerivedCoreProperties.txt för varje version av standarden. Denna rensare är låst till Unicode 17.0, släppt den 9 september 2025, som lade till 4 803 nya tecken och tog det totala antalet kodade tecken till 159 801.
Jag hämtade egenskapsdatan för Unicode 17.0 och räknade själv. 4 174 kodpunkter har egenskapen Default_Ignorable_Code_Point, men bara 405 av dem är tilldelade tecken. De övriga 3 769 är reserverade platser som ingenting använder ännu. Av de 405 är 256 variationsväljare och 97 finns i Tags-blocket, vilket lämnar 52 som förekommer i vanlig skrift.
Kategori Cf innehåller 170 tecken i samma version. Det är därför en avrundad marknadsföringssiffra som "104 dolda tecken" inte säger någonting i sig själv. Utan en angiven Unicode-version bredvid kan siffran inte kontrolleras mot någonting.
Varför överlever statistiska token-vattenstämplar teckenrensning?
Ett tokenval, även känt som en statistisk vattenstämpel, lagras i vilka ord modellen valde, så att ta bort osynliga tecken rensar inte de statistiska markörerna.
Ingen vattenstämpelrensare för text på internet kan ta bort en token- eller statistisk urvalsvattenstämpel, eftersom algoritmen som används av AI-verktygen är proprietär.
Sätter ChatGPT en vattenstämpel i sin text?
OpenAI säger nej. Den 20 april 2025 rapporterade Rumidocs att svar från GPT o3 och o4 mini innehöll U+202F, NARROW NO-BREAK SPACE. OpenAI svarade två dagar senare. Tecknen var "en egenhet från storskalig förstärkningsinlärning" och inte en vattenstämpel. Rumidocs uppdaterade artikeln den 23 april 2025 med beskedet att specialtecknen hade slutat dyka upp.
OpenAI utvecklade en metod för vattenmärkning av text 2024 men lanserade den aldrig. Deras nuvarande hjälpartikel om ursprungsmärkning listar vad som bär en signal idag: bilder får C2PA Content Credentials och SynthID, ljud får SynthID och text får ingendera. Samma sida anger att "vårt mål är att utöka ursprungssignaler till alla modaliteter inklusive text", vilket är en plan snarare än en produkt.
Det ärliga svaret är kort. ChatGPT sätter inte vattenstämplar i sin text, och tecknen som folk hittade 2025 var en bugg som åtgärdades.
Typer av osynliga tecken som hittas i text från ChatGPT och Claude
Tecknen som denna rensare hittar delas in i fem grupper: nollbreddstecken, ovanliga blanksteg, styrtecken, snarlika skiljetecken samt tagg- och privat användnings-tecken.
| Grupp | Exempel | Vad det gör | Förinställningen Standard |
|---|---|---|---|
| Nollbreddstecken | U+200B, U+200C, U+200D, U+2060, U+FEFF | Tar ingen bredd, men sparas ändå i filen | Tar bort U+200B, U+2060, U+FEFF och behåller de två sammanbindningstecknen |
| Ovanliga blanksteg | U+00A0, U+2009, U+202F, U+3000 | Ser ut som ett mellanslag, men sorteras och söks som ett annat tecken | Konverterar till ett vanligt mellanslag |
| Styrtecken | C0- och C1-intervall, dubbelriktade styrkoder | Styr rendering eller kraschar tolkare, skrivs aldrig ut | Tar bort allt utom tabb och nyrad |
| Snarlika skiljetecken | Typografiska citattecken, en- och em-tankstreck, U+00AD | Skrivs ut, men inte som tecknet du skrev | Lämnas orört |
| Tagg- och privat användning | U+E0000 till U+E007F, privat användningsområde | Bär läsbar text som ingen människa ser | Tar bort |
Här är det genomgående exemplet jag använde för varje mätning på den här sidan. Meningen "The meeting starts at 9:30 am on 12 May." är 40 tecken och 40 byte när den skrivs direkt i en vanlig textredigerare. Efter en vända genom ett ordbehandlingsprogram och tillbaka kom den ut som 42 tecken och 49 byte. Inuti fanns ett byte order mark i början, ett nollbreddsblanksteg efter "am" och två vanliga mellanslag som i tysthet bytts ut mot U+202F och U+00A0. Nio extra byte. Ingenting synligt ändrades.
The meeting starts at 9:30 am on 12 May.Nollbreddstecken: U+200B, U+200C, U+200D, U+2060 och U+FEFF
Nollbreddstecken tar inget utrymme på skärmen men finns fortfarande i filen, vilket är anledningen till att inklistrad text kan bära på markeringar som ingen kan se.
| Kodpunkt | Officiellt Unicode-namn | Faktisk funktion |
|---|---|---|
| U+200B | ZERO WIDTH SPACE | Markerar en möjlig radbrytning, oftast infogad av webbredigerare |
| U+200C | ZERO WIDTH NON-JOINER | Håller isär bokstäver i persiska och arabiska ord |
| U+200D | ZERO WIDTH JOINER | Fogar samman emojier till en enda bild och bildar sammansatta tecken i indiska skriftsystem |
| U+2060 | WORD JOINER | Förhindrar en radbrytning vid den punkten |
| U+FEFF | ZERO WIDTH NO-BREAK SPACE | Byte order mark, oftast lämnat av en textredigerare och inte av en AI |
Två av dessa fem är fungerande tecken, inte skräp. U+200C och U+200D har betydelse i riktiga språk, vilket är anledningen till att förinställningen Standard lämnar dem orörda.
Ovanliga blanksteg: U+00A0, U+2009, U+202F och U+3000
Ovanliga blanksteg ser ut som ett vanligt mellanslag men bär på en annan kodpunkt, vilket förstör sökning, sortering och kod.
Unicode 17.0 definierar 17 tecken i kategorin Zs, mellanslagsavgränsare, och bara ett av dem är mellanslaget på ditt tangentbord. Jag listade alla 17 från teckendatabasen med deras bytebredder i UTF-8, eftersom bytebredden är vad som gör dem kostsamma.
| Kodpunkt | Officiellt Unicode-namn | UTF-8-byte |
|---|---|---|
| U+0020 | SPACE | 1 |
| U+00A0 | NO-BREAK SPACE | 2 |
| U+1680 | OGHAM SPACE MARK | 3 |
| U+2000 to U+200A | EN QUAD till och med HAIR SPACE, 11 tecken | 3 vardera |
| U+202F | NARROW NO-BREAK SPACE | 3 |
| U+205F | MEDIUM MATHEMATICAL SPACE | 3 |
| U+3000 | IDEOGRAPHIC SPACE | 3 |
Ett enda U+202F kostar tre byte där ett mellanslag kostar en, och en sökning efter "9:30 am" matchar inte "9:30 am" om mellanrummet är U+202F. Den skillnaden är anledningen till att blanksteg normaliseras även i förinställningen Standard.
9:30 am
9:30 amDu kan kopiera och klistra in exempeltexten i verktygets inmatningsruta ovan för att se resultatet.
Tankstreck, typografiska citattecken och mjuka bindestreck som redigerare infogar
Typografiska citattecken, långa tankstreck och det mjuka bindestrecket U+00AD kommer vanligtvis från en inställning för automatisk korrigering i ett ordbehandlingsprogram, inte från en språkmodell.
Unicode 17.0 ger egenskapen Dash till 31 tecken, från det vanliga U+002D på ditt tangentbord till U+2014 EM DASH och U+2E3A TWO-EM DASH. Endast ett av dem är en tangenttryckning. Resten tillkommer när programvara avgör vad du menade. U+00AD är avvikaren, eftersom det endast skrivs ut som ett bindestreck när en rad bryts där och förblir osynligt överallt annars.
Tankstreck är frågan som leder de flesta till en sida som denna, och det korta svaret är att de inte bevisar någonting. Hela argumentet finns längre ner under avsnittet om em-streck.
Tagg- och private use-tecken som döljer instruktioner inuti text
Tecken i Unicodes Tags-block, U+E0000 till U+E007F, kan bära en hel mening som ingen mänsklig läsare någonsin ser. Det är så angripare smugglar in dolda instruktioner i text som en AI-assistent senare läser.
AWS Security Blog tog upp smuggling av Unicode-tecken den 30 september 2025. Där beskrivs taggtecken som "ursprungligen utformades som osynliga markörer för att ange språk i text" och som "har vuxit fram som en potentiell vektor för promptinjektion". En forskningsrapport från Cloud Security Alliance daterad 10 mars 2026 spårade samma trick i AI-agentfärdigheter, verktygsbeskrivningar och MCP-servrar. Den rapporten nämner Tags-blocket tillsammans med U+200B, U+200C, U+200D och U+FEFF.
Jag byggde en själv för att se storleken på det. Den synliga meningen "Great work on the report." är 25 tecken och 25 byte. Jag lade till en instruktion på 42 tecken kodad i taggtecken. Filen växte till 67 tecken och 193 byte. På skärmen läses den fortfarande som fem ord och en punkt, och ett skript plockade ut instruktionen intakt ur texten igen. Varje taggtecken kostar fyra byte och noll pixlar.
Great work on the report.Detta är det starkaste skälet att rensa text som inte har något med AI-detektering att göra. Klistra in ett textstycke från en webbsida i en chattassistent så kan du skicka med instruktioner som du själv aldrig har skrivit.
Borttagning av osynliga tecken i webbläsaren: Arbetsflödet för genomsökning och rensning
Denna rensare söker igenom din text i samma stund som du klistrar in den, listar varje fynd med dess officiella Unicode-namn och position, och ändrar ingenting förrän du trycker på Rensa text.
Processen har fyra steg:
- Klistra in din text eller släpp in en .txt- eller .md-fil.
- Granska listan över fynd, som anger varje tecken och var det sitter.
- Välj en förinställning, eller behåll enskilda fynd som du vill skydda.
- Rensa, och kopiera sedan resultatet eller ladda ner det.
Denna rensare skriver inte om, parafraserar inte och "humaniserar" inte ett enda ord i din text.
Jämförelse av förinställningarna Standard, Avancerad och Strikt
Standard tar bort de tecken som orsakar problem i vanlig text, Avancerad vidgar nätet och Strikt tar bort mest.
| Teckengrupp | Standard | Avancerad | Strikt |
|---|---|---|---|
| Nollbreddsblanksteg, ordfogare, byteordningsmärke | Tas bort | Tas bort | Tas bort |
| Dubbelriktade styrtecken och C0/C1-styrtecken | Tas bort | Tas bort | Tas bort |
| Taggblock och tecken för privat bruk | Tas bort | Tas bort | Tas bort |
| Mjukt bindestreck U+00AD | Tas bort | Tas bort | Tas bort |
| Ovanliga blanksteg i Zs-kategorin | Konverteras till U+0020 | Konverteras till U+0020 | Konverteras till U+0020 |
| Fogningstecken U+200C och U+200D | Behålls | Tas bort utanför emoji-sekvenser | Tas bort överallt |
| Variationsväljare | Behålls | Tas bort utanför emoji-sekvenser | Tas bort överallt |
| Typografiska citattecken och långa tankestreck | Behålls | Behålls | Konverteras till raka citattecken och ett vanligt bindestreck |
Vid sidan av förinställningarna finns tre snabbfilter: ta bort osynliga tecken, ta bort tankestreck och bindestreck, samt ta bort emojis. Att vi publicerar dessa regler är ett medvetet val. Alla konkurrerande verktyg döljer sina regelverk bakom en enda knapp, så att du inte kan veta vad som togs bort ur din text förrän något går sönder.
Hur Markdown-kodskydd håller kodblock intakta?
Med Markdown-läge och skydd aktiverade hoppar rensaren över kodblock och infogad kod, så att ett kodavsnitt som kräver ett exakt tecken behåller det.
Kod är den enda plats där ett tecken som du skulle kalla skräp i löpande text är bärande. Ett reguljärt uttryck eller en teststräng kan vara beroende av att ett byteordningsmärke finns på exakt rätt plats.
Lämnar din text din enhet?
Nej. Både genomsökningen och rensningen körs i din webbläsare, och sidan laddar aldrig upp eller lagrar din text.
Den ärliga andra halvan hör hemma i samma andetag. Den här sidan är gratis, så den kan fortfarande visa annonser och använda webbplatsanalys. Den valfria JSON-rapporten registrerar vad som ändrades. Den innehåller ingenting av din text.
Text- och filgränser: 20 000 ord och 1 MB
Rensaren accepterar upp till 20 000 ord inklistrad text, eller en UTF-8-fil på upp till 1 MB i .txt- eller .md-format.
Allt annat faller utanför ramarna: varken HTML, DOCX, PDF, JSON eller CSV stöds, och inklistring tas enbart emot som ren text. JavaScript krävs. Det finns inget konto och ingen betalning. Gränssnittet finns på 25 språk. Officiella Unicode-namn förblir på engelska på alla språk, eftersom ett översatt teckennamn inte längre är ett namn du kan hänvisa till.
För foton i stället för text kan du ta bort AI-information från bild eller redigera bildmetadata.
AI-textmärkning per leverantör: ChatGPT, Claude, Gemini och Grok jämförda
Endast vissa AI-leverantörer märker sin textutmatning, och varje leverantör som gör det använder ordval snarare än dolda tecken.
| Leverantör | Märker text | Metod | Hittas av denna rensare | Källa och datum |
|---|---|---|---|---|
| Anthropic, Claude | Ja | Vattenmärkning genom val av tokens, en version av SynthID Text | Nej | Anthropic, tillkännagivande 11 augusti 2026, teknisk kommentar 14 augusti 2026, uppdaterad 1 september 2026 |
| Google, Gemini | Ja | SynthID Text, modulering av tokensannolikheter | Nej | Google DeepMind, 14 maj 2024, släppt som öppen källkod senare samma år |
| OpenAI, ChatGPT | Ingen bekräftad textvattenstämpel | Ingen i produktion för text. Bilder innehåller C2PA och SynthID, ljud innehåller SynthID | Inte tillämpligt | OpenAI:s hjälpartikel om ursprung, aktuell per den 2 september 2026 |
| xAI, Grok | Inget publicerat åtagande | Inget angivet | Inte tillämpligt | xAI undertecknade inte kommissionens uppförandekod för transparens, rapporterat 12 augusti 2026 |
Anthropic uppger att modeller som lanserats den 2 augusti 2026 eller senare bär märkningen från lanseringen. De arbetar på att lägga till märkning för modeller som släppts före det datumet. Identifiering av textvattenstämplar är inget offentligt kontrollverktyg. Anthropic uppger att identifiering "är för närvarande i privat förhandsvisning, tillgänglig för behöriga organisationer i enlighet med vad som krävs enligt EU-lagstiftningen". Listan över behöriga organisationer omfattar tillsynsmyndigheter, brottsbekämpande myndigheter, media, faktagranskare, forskare, utbildningsorgan och civilsamhällesgrupper inom EU. Den kostnadsfria Claude Content Checker som Anthropic också erbjuder läser C2PA Content Credentials i genererade filer, vilket är något helt annat än en textvattenstämpel.
Att xAI inte undertecknat uppförandekoden undantar inte Grok från själva AI-förordningen (AI Act). En frivillig kod är en väg till efterlevnad, inte en ersättning för lagen.
Hur Claudes textvattenmärkning fungerar?
Claude väljer mellan ord som passar lika bra, och en hemlig nyckel avgör vilket alternativ som väljs. Märkningen utgörs av sekvensen av val, inte av något tecken i texten.
Anthropic beskriver mekanismen enkelt: "I stället för att använda en godtycklig slumpgenerator för att välja nästa ord, använder vattenmärkningen nyckeln och ett fåtal föregående ord för att avgöra vilket ord modellen ska välja." Företaget uppger också att Claudes textvattenstämpel "är en version av SynthID-Text-metoden som publicerades av Google DeepMind i en Nature-artikel 2024".
När det gäller tåligheten är Anthropic specifika: "Lättare redigering tar troligen inte bort vattenstämpeln helt", och en fullständig omskrivning där varje ord byts ut kommer att ta bort den.
Vad SynthID Text märker i Geminis utdata?
SynthID Text bäddar in sitt mönster i tokensannolikheterna när Gemini skriver. Google DeepMind tillkännagav SynthID-textvattenmärkning för Gemini-appen och webbupplevelsen den 14 maj 2024. Metoden fungerar "genom att föra in ytterligare information i tokenfördelningen vid genereringstillfället genom att modulera sannolikheten för att tokens genereras". DeepMind släppte metoden som öppen källkod senare samma år via sitt Responsible Generative AI Toolkit.
De publicerade begränsningarna är lika viktiga som metoden. SynthID Text fungerar bäst på längre och mer varierade svar. Det presterar dåligt på korta faktabaserade svar, där modellen knappt har något svängrum i ordvalet. Tillförlitligheten sjunker återigen kraftigt när text skrivs om grundligt eller översätts.
Fynd av dolda tecken och AI-författarskap: Varför det ena aldrig bevisar det andra?
Ett dolt tecken är ett bevis på att något har bearbetat din text, inte ett bevis på att en AI har skrivit den.
Varje osynligt tecken har en vanlig förklaring som fanns långt innan AI-skrivande existerade. Ordbehandlare, innehållshanteringssystem (CMS) och PDF-exporter har infogat dem i årtionden. Ett fynd visar bara att texten har passerat genom programvara, vilket stämmer för nästan varje mening som publiceras.
Varifrån osynliga tecken kommer förutom från AI?
Ordbehandlare, webbredigerare, PDF-exporter, översättningsverktyg, chattappar samt vanlig kopiering och inklistring infogar alla osynliga tecken på egen hand.
| Källa | Tecken som vanligtvis läggs till | Varför |
|---|---|---|
| Ordbehandlare | U+00A0, U+2019, U+2014, U+00AD | Autokorrigering och automatisk avstavning |
| Webb- och CMS-redigerare | U+200B, U+FEFF | Radbrytningsanvisningar och filkodningsmarkörer |
| PDF-exporter | U+2009, U+202F, U+00A0 | Bevara typografiskt avstånd när text kopieras ut igen |
| Översättnings- och lokaliseringsverktyg | U+200C, U+200D, U+061C | Korrekt återgivning av arabiska, persiska och indiska skrifter |
| Chatt- och meddelandeappar | U+200D, U+FE0F | Emoji-sekvenser samt presentation som text eller emoji |
| Kopiera och klistra in mellan appar | U+FEFF, blandade Zs-blanksteg | Kodningskonvertering i urklipp |
Min egen testmening på 40 byte gav fyra träffar utan att någonsin ha varit i närheten av en språkmodell. Det är hela argumentet i en enda mätning.
Varför tankestreck inte är en vattenstämpel
Ett långt tankestreck är ett vanligt skiljetecken som författare, redaktörer och autokorrigering har använt i århundraden, så det bär ingen signal om vem som har skrivit en mening.
Åtgärden från 2025 avgör saken. OpenAI meddelade den 14 november 2025 att ChatGPT äntligen skulle följa anpassade instruktioner om att sluta använda långa tankestreck. Sam Altman uttryckte det tydligt samma dag: "If you tell ChatGPT not to use em-dashes in your custom instructions, it finally does what it's supposed to do". En vana som en användare kan stänga av i en anpassningsinställning var aldrig en märkning. Det var ett stilmönster som plockats upp under träningen, och lösningen var en inställning.
Den här rensaren erbjuder fortfarande borttagning av streck, och skälet är uppriktigt. Det är ett stilfilter för personer som vill ha raka citattecken och vanliga bindestreck i sin text. Det är inget vattenstämpelfilter, och det kommer inte att ändra vad något detekteringsverktyg säger om din text.
När rensning förstör text: persiska, arabiska, indiska skrifter och emojis
Att ta bort nollbreddstecken kan förstöra korrekt text, eftersom vissa skrifter behöver dem för att stava ord ordentligt.
Jag testade de fyra fallen som oftast ställer till problem och dokumenterade exakt vad som hände. Det persiska ordet میخواهم består av åtta tecken, och U+200C i mitten förhindrar att de två delarna binds samman. Tar du bort det får du میخواهم, sju tecken och en annan skriftform. I devanagari innehåller क्ष ett U+200D som skapar rätt ligatur, och om det tas bort ändras formen på skärmen. Familje-emojin 👨👩👧👦 består av sju kodpunkter: fyra bilder som hålls ihop av tre U+200D-fogningstecken. Tar du bort fogningstecknen faller den isär i 👨👩👧👦, fyra separata personer. Ett rött hjärta ❤️ bär U+FE0F för att återges som en emoji, och utan det faller samma kodpunkt tillbaka till en textsymbol, ❤.
Det är därför verktyget visar fynd innan det rensar något, varför enskilda träffar kan behållas och varför Strikt inte är standard. En redaktör som arbetar på ett språk ser ett rent resultat. En redaktör som arbetar på sex ser en felrapport.
Slutgiltigt omdöme om rensning av AI-textvattenstämplar
Att rensa osynliga tecken är värt att göra för att få ren, portabel och säker text.
Två skäl motiverar att använda detta verktyg. Det första är att dolda tecken ställer till problem, i det tysta, i sökresultat, kalkylbladsuppslag, kod och webbadresser. Det andra är att taggtecken kan bära instruktioner in i en AI-assistent som ingen skrev och ingen kan se. Det gör rensning till en säkerhetsvana snarare än en kosmetisk åtgärd.
Den som hoppas kunna kringgå en leverantörs vattenstämpel rensar på fel nivå. Claude och Gemini märker text i ordvalen, OpenAI märker bilder och ljud men inte text, och ingen mängd borttagna tecken når fram till något av dem. Ett sätt att kringgå dessa statistiska vattenstämplar är att översätta texten till ett par olika språk och sedan översätta tillbaka till originalet.
Klistra in en sida av din egen text i inmatningsrutan ovan och läs fynden för att förstå texten bättre, eller kopiera helt enkelt resultatet.
Det var allt för nu. Tack för att du läste ända hit.