Text anonymisieren: kostenloses Tool im Browser
Fügen Sie Ihren Text unten ein. Das Werkzeug ersetzt Namen, E-Mail-Adressen, Telefonnummern, IBANs, Anschriften, Datumsangaben und Links durch nummerierte Platzhalter wie ⟨PERSON_1⟩ — kostenlos, ohne Anmeldung und ohne dass der Text Ihr Gerät verlässt. Die Erkennung läuft als Mustererkennung direkt in Ihrem Browser.
Zuletzt aktualisiert: · Persona — Relativity GmbH
Das Werkzeug: Text einfügen, pseudonymisierten Text herausbekommen
Links einfügen oder ein Beispiel laden, rechts steht sofort das Ergebnis. Darunter sehen Sie die Zuordnung: welcher Platzhalter für welchen Originalwert steht.
Noch keine Zuordnung. Sie entsteht erst, wenn ein Muster erkannt wird.
Zwei Eigenschaften machen das Ergebnis brauchbar. Erstens sind die Platzhalter konsistent: Taucht derselbe Name dreimal auf, steht dreimal ⟨PERSON_1⟩ — der Text behält seine Bezüge, und ein Sprachmodell kann weiter erkennen, wer in welchem Satz gemeint ist. Zweitens ist der Vorgang umkehrbar: Mit der Zuordnungstabelle setzen Sie später die Klarnamen wieder ein, in der Antwort des Modells ebenso wie im eigenen Dokument.
Der typische Anlass ist banal und häufig: Sie wollen ein Support-Ticket, einen Arztbrief, eine Bewerbung oder einen Vertragsentwurf durch einen Chatbot zusammenfassen lassen und möchten nicht, dass Name, Anschrift und IBAN der betroffenen Person dabei an einen fremden Dienst gehen. Das Werkzeug nimmt diesen Schritt vorweg, bevor Sie den Text einfügen.
Was das Werkzeug erkennt: die Kategorien in Klartext
Die Kategorien entsprechen denen, die auch das Modell hinter der Persona-API verwendet. Die dritte Spalte sagt, woran das Muster im Browser tatsächlich greift, die vierte, wo es aussteigt. Diese vierte Spalte ist der ehrliche Teil: Ein Werkzeug, das nur seine Treffer zeigt, führt in die Irre.
| Kategorie | Platzhalter | Woran das Muster greift | Wo es aussteigt |
|---|---|---|---|
| Person | ⟨PERSON_1⟩ | Anrede („Herrn“, „Frau“, „Dr.“), Feldname wie „Patientin:“, Grußformel am Briefende, bekannte Vornamen | Nachnamen ohne Anrede, seltene oder ausländische Vornamen, Spitznamen, Firmennamen mit Personenbezug |
⟨EMAIL_1⟩ | Jede Adresse der Form name@domain.tld | Umschreibungen wie „name (at) domain punkt de“ | |
| Telefon | ⟨PHONE_1⟩ | Deutsche Fest- und Mobilnummern mit führender Null, Nummern mit +49 oder 0049 | Durchwahlen ohne Vorwahl, ausgeschriebene Ziffern, exotische Formate |
| Adresse | ⟨ADDRESS_1⟩ | Straße mit Hausnummer, optional mit Postleitzahl und Ort; auch Postleitzahl plus Ort allein | Anschriften ohne typische Endung („Am Markt 3“), ausländische Schreibweisen |
| URL / Profil | ⟨URL_1⟩ | Links mit http/https, mit www. sowie bekannte Profil-Adressen | Nackte Domains ohne Schema, verkürzte Links ohne Kontext |
| Datum | ⟨DATE_1⟩ | 14.03.1987, 14. März 1987, 1987-03-14 | „letzten Dienstag“, „im Sommer nach dem Umzug“ und andere relative Angaben |
| Konto- / Kundennummer | ⟨ACCOUNT_1⟩ | IBAN, Kartennummern, Nummern hinter Schlüsselwörtern wie „Kundennummer“ oder „Aktenzeichen“ | Freistehende Nummern ohne Kontextwort |
| Zugangsdaten | ⟨SECRET_1⟩ | Typische Schlüssel-Präfixe, JWTs, Angaben nach „Passwort:“ oder „Token=“ | Passwörter, die als gewöhnliches Wort im Fließtext stehen |
| Sonstige Kennung | ⟨PII_1⟩ | Kfz-Kennzeichen | Ausweis-, Steuer- und Versicherungsnummern ohne begleitendes Schlüsselwort |
Die API kennt dieselben neun Kategorien, vergibt aber zusätzlich zeichengenaue Positionen je Treffer und einen Sensitivitätswert zwischen 0.0 und 1.0 für den gesamten Text. Wie die Kategorien im Detail definiert sind, steht auf der Seite zur Pseudonymisierung.
Anonymisieren oder pseudonymisieren: was ist der Unterschied?
Im Alltag wird beides „anonymisieren“ genannt, die DSGVO unterscheidet aber deutlich. Für die Pseudonymisierung gilt eine eigene Legaldefinition:
„die Verarbeitung personenbezogener Daten in einer Weise, dass die personenbezogenen Daten ohne Hinzuziehung zusätzlicher Informationen nicht mehr einer spezifischen betroffenen Person zugeordnet werden können, sofern diese zusätzlichen Informationen gesondert aufbewahrt werden und technischen und organisatorischen Maßnahmen unterliegen …“
Die „zusätzlichen Informationen“ sind hier die Zuordnungstabelle. Solange sie existiert, bleibt der Text nach Erwägungsgrund 26 der DSGVO ein personenbezogener Datensatz. Pseudonymisierung senkt also das Risiko, sie beendet nicht die Verarbeitung personenbezogener Daten. Wo genau die Grenze zur echten Anonymisierung verläuft, ist auf der Seite Pseudonymisierung vs. Anonymisierung im Detail beschrieben.
Diese Seite ordnet ein und ersetzt keine Rechtsberatung. Ob Ihre konkrete Verarbeitung zulässig ist, welche Rechtsgrundlage sie trägt und welche Maßnahmen sie verlangt, entscheiden Ihr Datenschutzbeauftragter oder Ihre Rechtsberatung.
Warum dieses Werkzeug pseudonymisiert statt anonymisiert
Ein Text, aus dem man alle Namen ersatzlos streicht oder mit „XXX“ überschreibt, ist für ein Sprachmodell oft wertlos. „XXX schrieb an XXX über den Vertrag von XXX“ lässt sich nicht mehr zusammenfassen, weil unklar bleibt, wie viele Personen beteiligt sind und wer wem was schuldet. Nummerierte, konsistente Platzhalter erhalten genau diese Struktur: ⟨PERSON_1⟩ und ⟨PERSON_2⟩ bleiben unterscheidbar, und wiederholte Nennungen bleiben derselben Person zugeordnet.
Der zweite Grund ist der Rückweg. In fast jedem realen Arbeitsablauf brauchen Sie die Antwort am Ende mit echten Namen: im Antwortschreiben an die Kundin, im Protokoll, im Ticket. Echte Anonymisierung würde diesen Rückweg zerstören — das ist ihr Zweck, aber selten Ihr Ziel.
Und ein dritter, unbequemer Grund: Freitext lässt sich kaum zuverlässig anonymisieren. Nehmen Sie den Satz „Anna arbeitet als Radiologin in einer kleinen Klinik in Bad Segeberg und ist die einzige Frau in ihrem Team.“ Selbst wenn der Vorname verschwindet, führt die Kombination aus Beruf, Ort und Teamgröße häufig zurück zu genau einer Person. Wer nach dem Maskieren „anonym“ sagt, verspricht deshalb oft mehr, als das Ergebnis hergibt. „Pseudonymisiert“ ist die ehrlichere und meist auch die passendere Beschreibung.
Wohin Ihr Text geht: nirgendwohin
Diese Seite lädt einmal HTML, CSS und JavaScript von unserem Server. Danach passiert alles Weitere in Ihrem Browser-Tab: Der eingefügte Text steht im Arbeitsspeicher des Tabs, die Mustererkennung ist eine Handvoll regulärer Ausdrücke, und das Ergebnis wird direkt daneben gerendert. Es gibt keinen Serveraufruf, keinen Upload, keine Datenbank, keine Auswertung des Textes — auch keine anonyme.
Das ist nachprüfbar, und Sie sollten es nachprüfen, statt es zu glauben: Öffnen Sie die Entwicklerwerkzeuge Ihres Browsers, wechseln Sie in den Netzwerk-Tab und tippen Sie in das Feld — es erscheint keine neue Anfrage. Noch deutlicher: Trennen Sie nach dem Laden der Seite die Internetverbindung. Das Werkzeug arbeitet weiter, weil es nichts braucht, was nicht schon in Ihrem Browser liegt. Aus demselben Grund ist die Rechtschreibprüfung im Eingabefeld abgeschaltet: Ob und wohin ein Browser den Inhalt eines Eingabefelds für die Prüfung überträgt, hängt vom Hersteller und von den Einstellungen des Geräts ab und liegt nicht in unserer Hand.
Was unser Server sieht, ist der Abruf der Seite selbst — die üblichen Verbindungsdaten eines Webservers, nachzulesen in der Datenschutzerklärung. Ihr Text gehört nicht dazu.
Bei der API ist es anders, und das gehört zur Ehrlichkeit dieser Seite dazu: Dort geht der Text tatsächlich an unsere Server. Sie stehen als dedizierte Hardware bei Hetzner in Falkenstein, Deutschland, in ISO-27001-zertifizierten Rechenzentren; die Inferenz läuft auf dieser Hardware, ein externer KI-Dienst wird für die Analyse nicht aufgerufen. Anfragetexte werden nicht gespeichert, nicht inhaltlich protokolliert und nicht für Training verwendet. Ab dem Pro-Plan gehört ein AV-Vertrag nach Art. 28 DSGVO dazu.
Grenzen: Mustererkennung im Browser gegenüber Sprachmodell über die API
Reguläre Ausdrücke sind gut in Formaten und blind für Bedeutung. Eine IBAN sieht immer aus wie eine IBAN, ein Name sieht aus wie jedes andere großgeschriebene deutsche Wort. Daraus folgt beides: Formate findet das Werkzeug im Browser sehr zuverlässig, Namen nur, wenn ein Signal davorsteht.
| Frage | Werkzeug auf dieser Seite | API mit trainiertem Modell |
|---|---|---|
| Verfahren | Reguläre Ausdrücke, also Formate und Schlüsselwörter | Mehrsprachiges Modell, das den Kontext bewertet, statt Muster zu vergleichen |
| Name ohne Anrede und ohne Listeneintrag | wird nicht gefunden | wird am Satzkontext erkannt, auch ohne Signalwort davor |
| Tippfehler, OCR-Fehler, ungewöhnliche Schreibweisen | fallen meist durch | deutlich robuster, weil nicht auf exakte Muster angewiesen |
| Ausgabe | Maskierter Text und Zuordnungstabelle | zusätzlich zeichengenaue Positionen je Treffer, Kategorie und ein Sensitivitätswert von 0.0 bis 1.0 |
| Rück-Zuordnung | von Hand mit der kopierten Zuordnung | POST /v1/reidentify |
| Wo die Verarbeitung läuft | in Ihrem Browser, ohne Übertragung | auf dedizierten Servern in Falkenstein, ohne Speicherung der Texte |
| In eine Anwendung einbaubar | nein, Kopieren und Einfügen von Hand | ja, ein HTTP-Aufruf je Text, rund 45 ms p50 |
Zwei Dinge kann auch das beste Muster grundsätzlich nicht. Es erkennt keine indirekten Identifikatoren — die Kombination aus Beruf, Wohnort, Geburtsjahrgang und Krankheitsbild bleibt stehen, obwohl sie eine Person eindeutig machen kann. Und es produziert Fehlalarme: Eine Bestellnummer nach dem Wort „Bestellung“ wird maskiert, auch wenn sie niemanden identifiziert. Lesen Sie das Ergebnis deshalb, bevor Sie es weiterverwenden. Das Werkzeug ist eine gründliche erste Reinigung, keine Freigabeentscheidung.
Wer die Erkennung lieber selbst betreibt, landet schnell bei Presidio, dem quelloffenen PII-SDK von Microsoft. Was das an Betrieb, Pflege und Erkennungsqualität für deutschen Freitext bedeutet, steht in der Gegenüberstellung Presidio-Alternative.
Rück-Zuordnung: die LLM-Antwort mit echten Namen zurückerhalten
Der pseudonymisierte Text ist nur die halbe Strecke. Vollständig sieht der Ablauf so aus:
- Erstens den Text hier pseudonymisieren und die Zuordnung als JSON kopieren.
- Zweitens nur den maskierten Text in den Chatbot oder das eigene Prompt-Template einfügen. Die Platzhalter stören das Modell nicht; es behandelt ⟨PERSON_1⟩ wie einen Namen.
- Drittens die Antwort zurückkopieren und die Platzhalter durch die Originalwerte ersetzen — von Hand, per Suchen-und-Ersetzen oder über die API.
Bewahren Sie die Zuordnung getrennt vom pseudonymisierten Text auf und schützen Sie sie wie die Originaldaten. Genau das verlangt Art. 4 Nr. 5 DSGVO mit den „gesondert aufbewahrten zusätzlichen Informationen“ — eine Zuordnungstabelle, die neben dem maskierten Text im selben Ordner liegt, ist keine Pseudonymisierung, sondern eine Umbenennung.
In einer Anwendung übernimmt diesen Schritt ein Aufruf. Er bekommt die Modellantwort und dasselbe Mapping und gibt den Text mit Klarnamen zurück:
POST /v1/reidentify
{
"text": "Sehr geehrte(r) ⟨PERSON_1⟩, Ihre Sendung an ⟨ADDRESS_1⟩ ist unterwegs.",
"mapping": {
"⟨PERSON_1⟩": "Jonas Bergmann",
"⟨ADDRESS_1⟩": "Lindenweg 4, 04109 Leipzig"
}
}Vom Werkzeug zur API: derselbe Vorgang in cURL und Python
Sobald der Vorgang regelmäßig stattfindet — in einem Ticketsystem, einer RAG-Pipeline, einem Auswertungsjob —, ist Kopieren und Einfügen der falsche Weg. Dann übernimmt die API dieselbe Aufgabe mit dem trainierten Modell statt mit regulären Ausdrücken. Ein Aufruf genügt:
curl https://persona-api.mind-verse.de/v1/pseudonymize \
-H "Authorization: Bearer $PERSONA_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Rückruf für Jonas Bergmann unter 0176 22558899."}'Die Antwort enthält den maskierten Text, die erkannten Spans mit zeichengenauen Positionen, das Mapping und den Sensitivitätswert. In einer Python-Pipeline sieht der vollständige Umlauf so aus:
import os, requests
API = "https://persona-api.mind-verse.de"
KOPF = {"Authorization": f"Bearer {os.environ['PERSONA_KEY']}"}
dokument = "Rückruf für Jonas Bergmann unter 0176 22558899."
# 1. Pseudonymisieren, bevor der Text das Haus verlässt
p = requests.post(f"{API}/v1/pseudonymize", headers=KOPF,
json={"text": dokument}).json()
# 2. Nur den maskierten Text an das Sprachmodell geben
antwort = mein_llm(p["masked"]) # enthält weiterhin ⟨PERSON_1⟩
# 3. Klarnamen erst in der eigenen Anwendung zurückholen
final = requests.post(f"{API}/v1/reidentify", headers=KOPF,
json={"text": antwort, "mapping": p["mapping"]}).json()["text"]Der Starter-Plan ist kostenlos und deckt 100 Anfragen im Monat bei 5 Anfragen pro Sekunde ab; der Pro-Plan kostet 49 EUR im Monat, enthält 100.000 Anfragen, 100 Anfragen pro Sekunde, ein SLA von 99,9 Prozent Verfügbarkeit, den AV-Vertrag nach Art. 28 DSGVO und Support innerhalb von 24 Stunden. Wer den Text gar nicht erst aus dem eigenen Netz lassen darf, betreibt das Modell im Enterprise-Plan als Container in der eigenen Infrastruktur; es läuft auch auf CPU ausreichend schnell. Alle Felder, Fehlercodes und weitere Beispiele stehen in der API-Dokumentation.
Häufige Fragen
Ist das Tool zum Text anonymisieren wirklich kostenlos?
+
Ja. Das Werkzeug auf dieser Seite kostet nichts, verlangt keine Registrierung und hat kein Anfragelimit, weil es keine Anfragen stellt: Es läuft als JavaScript in Ihrem Browser. Kostenpflichtig ist erst die API, wenn Sie denselben Vorgang automatisiert in einer Anwendung ausführen wollen — und auch dort sind 100 Anfragen im Monat kostenlos.
Verlässt mein Text beim Anonymisieren den Browser?
+
Nein. Die Erkennung und das Ersetzen finden vollständig in Ihrem Browser-Tab statt, es gibt keinen Upload und keine Speicherung. Sie können das überprüfen: Öffnen Sie den Netzwerk-Tab der Entwicklerwerkzeuge, oder trennen Sie die Internetverbindung nach dem Laden der Seite — das Werkzeug arbeitet weiter.
Sind pseudonymisierte Daten nach DSGVO anonym?
+
Nein. Erwägungsgrund 26 der DSGVO stellt klar, dass Daten, die sich mit zusätzlichen Informationen wieder einer Person zuordnen lassen, weiterhin personenbezogene Daten sind. Pseudonymisierung ist eine technische und organisatorische Maßnahme, die das Risiko senkt, nicht ein Verfahren, das die DSGVO abschaltet. Diese Seite ist eine Orientierung und kein Rechtsrat; ob Ihr konkreter Fall trägt, entscheiden Ihr Datenschutzbeauftragter oder Ihre Rechtsberatung.
Was ist der Unterschied zwischen anonymisieren und pseudonymisieren?
+
Anonymisierung entfernt den Personenbezug unumkehrbar: Niemand kann aus dem Ergebnis die Person zurückgewinnen, auch Sie nicht. Pseudonymisierung ersetzt identifizierende Angaben durch Platzhalter und bewahrt die Zuordnung getrennt auf, sodass sie sich gezielt wieder auflösen lässt. Das Werkzeug auf dieser Seite pseudonymisiert, weil Sie die Antwort eines Sprachmodells in der Regel mit echten Namen zurückbrauchen.
Warum erkennt das Werkzeug manche Namen nicht?
+
Weil es Muster vergleicht und keinen Sinn versteht. Im Deutschen ist jedes Substantiv großgeschrieben, „zwei große Wörter hintereinander“ ist deshalb kein brauchbares Namensmuster. Das Werkzeug greift bei einer Anrede, einem Feldnamen wie „Patientin:“, einer Grußformel am Briefende und bei bekannten Vornamen — alles andere erkennt erst das trainierte Modell hinter der API am Kontext.
Kann ich den Originaltext wiederherstellen?
+
Ja, dafür ist die Zuordnungstabelle unter dem Werkzeug da. Kopieren Sie sie als JSON und bewahren Sie sie getrennt vom pseudonymisierten Text auf; solange Sie beides besitzen, lässt sich jeder Platzhalter wieder in den Originalwert zurückverwandeln. In einer Anwendung übernimmt das der Endpunkt POST /v1/reidentify.
Kann ich damit ein PDF oder eine Excel-Tabelle anonymisieren?
+
Das Werkzeug verarbeitet den Text, den Sie in das Feld einfügen — Sie können also den Inhalt aus einem PDF oder einer Tabelle herauskopieren und das Ergebnis zurückkopieren. Layout, Bilder und eingebettete Metadaten bleiben davon unberührt, die müssen Sie in der Ursprungsdatei selbst behandeln. Auch die API arbeitet auf reinem UTF-8-Text; das Auslesen des Dokuments bleibt in Ihrer Pipeline.