Den Stable Diffusion NSFW-Filter deaktivieren (2026)
Stable Diffusions NSFW-Filter schwärzt harmlose Bilder. Warum es zu False Positives kommt, wie man ihn je nach Stack deaktiviert und wo die rechtliche Grenze tatsächlich liegt.

TL;DR
- Was es ist: Der NSFW-Block ist Stable Diffusion's Safety Checker, der dein Bild durch ein einfarbig schwarzes Quadrat ersetzt, wenn er glaubt, dass die Ausgabe explizit ist. Er ist eine False-Positive-Maschine, kein Nacktheitserkenner.
- Schnelle Lösung (diffusers): Lade die Pipeline mit
safety_checker=Noneundrequires_safety_checker=False. Eine Änderung, und die schwarzen Quadrate verschwinden. - A1111 / ComfyUI: Keines von beiden führt diesen Filter standardmäßig aus. Du bekommst dort trotzdem Blackouts? Dann ist es ein Colab-Notebook-Wrapper oder ein NaN-Fehler, nicht der Safety Checker.
- Schwarzes Bild ohne NSFW-Warnung? Anderer Bug. Das ist ein VAE-NaN auf FP16-GPUs. Starte mit
--no-half-vae. - Bevor du ihn deaktivierst: Du besitzt die Gewichte lokal, also ist es deine Entscheidung. Die Lizenz verbietet weiterhin illegale, nicht einvernehmliche und CSAM-Ausgaben. Diese Grenze verschiebt sich nicht.
Du hast einen harmlosen Prompt eingegeben, auf das Rendering gewartet und ein schwarzes Quadrat bekommen. Stable Diffusion hat entschieden, dass dein Bild NSFW ist. Hier erfährst du, warum das immer wieder passiert, wie du es auf deinem eigenen Rechner ausschaltest und wo die echten Grenzen bestehen bleiben.
Was bedeutet „NSFW-Blockierung“ in Stable Diffusion?
Es bedeutet, dass der eingebaute Safety Checker dein generiertes Bild als explizit eingestuft und es durch ein schwarzes Bild ersetzt hat, bevor du es überhaupt gesehen hast. Das Modell läuft problemlos. Das Bild wird erstellt. Dann betrachtet ein separater Klassifikator die Pixel, entscheidet, dass sie eine Grenze überschritten haben, und schwärzt das Ergebnis. Du erhältst normalerweise eine Meldung wie „Potential NSFW content was detected in one or more images. A black image will be returned instead.“
Hier ist der Teil, auf den es ankommt. Der Checker sitzt nach der Generierung, eher angeflanscht als in das Modell eingewoben, weshalb seine Deaktivierung eine Konfigurationsänderung ist und kein erneutes Training. Er schlägt außerdem ständig versehentlich an. Der Klassifikator hat keine Ahnung, wonach du gefragt hast. Er sieht nur die Pixel, die herausgekommen sind.
Ist dein schwarzes Bild der Filter oder ein NaN-Fehler?
Bevor du irgendetwas deaktivierst, finde heraus, welches schwarze Bild du tatsächlich hast, denn dafür gibt es zwei völlig unterschiedliche Lösungen. Leute werfen sie ständig durcheinander und „deaktivieren den Safety Checker“ dann bei einem Bug, den der Safety Checker nie verursacht hat.
Zwei Merkmale unterscheiden sie:
- Safety-Checker-Block: Du bekommst eine NSFW-Warnung in der Konsole oder in der UI. Die Meldung sagt wörtlich, dass NSFW-Inhalte erkannt wurden. Das behebst du, indem du den Checker ausschaltest.
- VAE-NaN-Block: überhaupt keine NSFW-Meldung, manchmal ein
NansException: A tensor with all NaNs was produced in VAE. Das ist ein mathematischer Fehler, keine Inhaltsentscheidung. Manche GPUs kommen mit Half-Precision (FP16) nicht klar, die Zahlen laufen zu NaN über, und die Dekodierung wird schwarz.
| Symptom | Tatsächliche Ursache | Lösung |
|---|---|---|
| Schwarzes Bild + "NSFW detected" | False Positive des Safety Checkers | Checker deaktivieren |
| Schwarzes Bild, keine NSFW-Meldung | FP16-NaN im VAE | Mit --no-half-vae starten |
| Schwarz nur auf älteren Karten (16xx) | Keine native FP16-Unterstützung | --no-half --no-half-vae hinzufügen |
| Schwarz nur bei SDXL | Sampler-Precision | --upcast-sampling hinzufügen |

Keine NSFW-Warnung? Dann hör auf, Anleitungen zum Deaktivieren des Filters zu lesen. Dein Problem ist Precision, und --no-half-vae behebt die große Mehrheit der VAE-NaN-Fälle bei ungefähr 5 bis 10 Prozent Geschwindigkeitsverlust. Einen Safety Checker auszuschalten, der nie ausgelöst wurde, verbirgt nichts und vergeudet einen Nachmittag.
Warum markiert der Filter harmlose Prompts?
Weil er keine Nacktheit erkennt. Er misst die Ähnlichkeit zu verborgenen Konzepten, und viele harmlose Bilder landen ihnen zufällig nahe. Unter der Haube ist der Prüfer CLIP. Er lässt deine Ausgabe durch den ViT-L/14-Bild-Encoder von CLIP laufen, um ein Embedding zu erhalten, und vergleicht dieses Embedding dann mit 17 festen Vektoren, von denen jeder für ein „sensibles Konzept“ steht. Wenn die Kosinusähnlichkeit zu einem von ihnen einen Schwellenwert überschreitet, wird das Bild geschwärzt.
Diese 17 Konzeptvektoren sind absichtlich verborgen, damit niemand sie zurückentwickeln kann. Der Nebeneffekt ist, dass du nicht sehen kannst, worüber du stolperst. Eine Landschaft, ein Fraktal, ein Porträt, ein Teller Essen – alles, dessen Embedding in die Nähe eines dieser Vektoren driftet, wird markiert. Entwickler im CompVis-Issue-Tracker berichteten, dass der Prompt „star“ blockiert wurde. Ein anderer wurde wegen „riding horse“ markiert. Einer schrieb halb im Scherz: „maybe my PC is not safe for work.“
Das ist also kein präzises moralisches Urteil. Es ist eine grobe Distanzprüfung mit einem festen Grenzwert, darauf abgestimmt, zu viel zu blockieren. Bei viel realer Arbeit überwiegen die Fehlalarme die echten Treffer bei Weitem.
Wie deaktiviert man den NSFW-Filter in Stable Diffusion?
Suche den Abschnitt für deinen Stack, denn "Stable Diffusion" bedeutet drei oder vier sehr unterschiedliche Softwarekomponenten, und nur eine davon führt diesen Filter standardmäßig aus.
Diffusers (Python)
Das ist die Variante, die den Checker tatsächlich aktiviert mitliefert. Übergib safety_checker=None, wenn du die Pipeline lädst, und setze requires_safety_checker=False, um die anschließende Warnung zu unterdrücken:
from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
safety_checker=None,
requires_safety_checker=False,
torch_dtype=torch.float16,
)Du kannst es auch nachträglich umstellen, nachdem die Pipeline existiert, mit pipe.safety_checker = None. Du möchtest den Hook lieber behalten, aber nie blockieren? Ersetze ihn durch einen Pass-through, der meldet, dass nichts markiert wurde:
pipe.safety_checker = lambda images, **kwargs: (images, [False] * len(images))Gleiches Ergebnis, kein wiederholter Warnungs-Spam in deinen Logs. Der eigentliche safety_checker source ist kurz, falls du genau nachlesen möchtest, was er macht.
AUTOMATIC1111 / Forge
Gute Nachricht: Keines von beiden führt den diffusers Safety Checker standardmäßig aus. Wenn du speziell in A1111 oder Forge NSFW-Blackouts bekommst, ist der übliche Schuldige ein Colab-Notebook, das wieder einen Filter hineingepatcht hat, oder eine Extension. Suche in deiner Notebook-Zelle nach safety_checker oder einer check_safety-Funktion und kommentiere sie aus. Bei einer normalen lokalen Installation gibt es nichts zu deaktivieren, weil es nie aktiviert war.
ComfyUI
Gleiche Geschichte: standardmäßig kein Safety-Filter. Ein unveränderter ComfyUI-Graph schwärzt deine Bilder nicht wegen ihres Inhalts. Wenn deiner das tut, hat ein Custom Node ihn hinzugefügt. Entferne diesen Node, oder prüfe den Wrapper, über den du gestartet hast.
Editing model_index.json
Wenn ein Checkpoint weiterhin einen Checker lädt, egal was dein Code sagt, öffne seine model_index.json, setze "requires_safety_checker": false, und entferne den safety_checker-Eintrag. Dadurch wird das Modul gar nicht erst geladen. Nützlich für ein heruntergeladenes Modell, das seine eigene Filterkonfiguration mitliefert.
Willst du es nicht komplett ausschalten? Dann stimme es stattdessen ab.
Den Checker kurzerhand zu deaktivieren, ist der übliche Schritt. Es ist nicht der einzige, und bei einer gemeinsam genutzten oder öffentlichen Bereitstellung ist es nicht der kluge. Drei Optionen für den Mittelweg:
- Erkennen und behandeln, nicht ausblenden. Die Pipeline kann pro Bild ein NSFW-Flag zurückgeben, statt Dinge stillschweigend zu schwärzen. Behalte das Flag, entferne die Blockierung und route oder protokolliere markierte Bilder selbst.
- Safe Stable Diffusion einsetzen. Statt eines schwarzen Quadrats lenkt es die Generierung zum nächstgelegenen nicht expliziten Bild. Du behältst eine brauchbare Ausgabe und eine Leitplanke.
- Den Schwellenwert erhöhen, nicht entfernen. Wenn du den Checker bearbeiten kannst, reduziert ein gelockerter Grenzwert Fehlalarme und fängt trotzdem das Offensichtliche ab. Mehr Aufwand, aber deutlich weniger Überraschungen als Alles-oder-nichts.
Für ein Solo-Projekt auf deiner eigenen GPU ist safety_checker=None in Ordnung. Für alles, was Nutzer erreichen können, solltest du eine Leitplanke behalten. Ein öffentlicher Endpunkt ohne Filter ist ein Haftungsrisiko, das du bereuen wirst.
Ist das Deaktivieren des Safety Checkers überhaupt legal?
Ihn auszuschalten ist erlaubt. Was du erzeugst, während er ausgeschaltet ist, ist der Bereich, in dem die eigentlichen Grenzen liegen, und diese verschwinden nicht, nur weil der Filter es tut. Stable Diffusion wird unter der CreativeML Open RAIL-M license ausgeliefert. Sie gewährt weitreichende Rechte, erhebt keinen Anspruch auf deine Outputs und legt die Verantwortung bei dir ab. Sie enthält außerdem nutzungsbasierte Einschränkungen mit Durchsetzungskraft.
Die Lizenz verbietet ausdrücklich, das Modell zur Erstellung oder Weitergabe illegaler oder schädlicher Inhalte zu verwenden. Kein CSAM. Keine nicht einvernehmlich erstellten intimen Bilder. Keine Deepfakes realer Personen, die zur Täuschung oder Schädigung erstellt wurden. Das sind keine Filtereinstellungen. Das sind in den meisten Teilen der Welt Gesetze, und „der Safety Checker war ausgeschaltet“ ist nirgendwo eine Verteidigung.
Das ist also die ehrliche Einordnung. Auf Hardware, die dir gehört, mit Gewichten, die du heruntergeladen hast, kannst du deine eigenen Werkzeuge konfigurieren, und das Ausschalten eines übereifrigen False-Positive-Filters für echte Arbeit ist vertretbar. Illegale Inhalte zu erzeugen ist es nicht, ob mit Filter oder ohne. Halte diese beiden Gedanken getrennt, und du stehst auf solidem Boden.
Was, wenn du eine gehostete API statt einer lokalen nutzt?
Dann liegt es nicht bei dir, den Filter zu deaktivieren, und genau das ist der entscheidende Unterschied. Wenn du einen gehosteten Bild-Endpunkt aufrufst, führt der Anbieter das Modell aus und setzt seine eigene Content-Policy serverseitig durch. Es gibt kein safety_checker=None, das du übergeben kannst. Du akzeptierst ihre Regeln, oder du führst es lokal aus.
Dieser Kompromiss sollte klar benannt werden. Lokale Stable Diffusion gibt dir volle Kontrolle, einschließlich Safety Checker, zum Preis einer GPU, Treiber-Einrichtung und deiner eigenen Moderation. Eine gehostete API wie die Bild-Endpunkte von Velokey erspart dir die Einrichtung und gibt dir einen Schlüssel für mehrere Modelle, aber du befindest dich innerhalb der Content-Policy des Anbieters, nicht außerhalb davon. Du hoffst, dass ein Gateway dich Content-Regeln umgehen lässt? Das wird es nicht, und jeder Anbieter, der das behauptet, ist ein Compliance-Problem, das nur darauf wartet, zu passieren. Wähle gehostet für Komfort und Skalierung, lokal für Kontrolle. Wenn du Bild-APIs allgemein abwägst, behandeln unsere ChatGPT image limits breakdown und die Qwen-Image 2.0 notes, was gehostete Generierung tatsächlich kostet und welche Limits gelten, und Seedream 5.0 Pro behandelt eine höherwertige Option. Tritt stattdessen ein völlig anderer KI-Fehler auf? Unser ChatGPT error in message stream fix ist das Schwesterstück zu diesem Leitfaden.
Häufig gestellte Fragen
Wie entferne ich den NSFW-Filter in Stable Diffusion?
Das hängt von deinem Stack ab. In der diffusers-Bibliothek lädst du die Pipeline mit safety_checker=None und requires_safety_checker=False. In AUTOMATIC1111, Forge und ComfyUI gibt es normalerweise nichts zu entfernen, da sie diesen Prüfer standardmäßig nicht ausführen. Wenn du trotzdem noch schwarze Bilder bekommst, hat ein Notebook-Wrapper oder ein benutzerdefinierter Node den Filter wieder hinzugefügt.
Warum gibt Stable Diffusion bei einem normalen Prompt ein schwarzes Bild zurück?
Es gibt zwei mögliche Gründe. Entweder hat der Sicherheitsprüfer dein Bild fälschlicherweise als NSFW markiert, und du siehst eine NSFW-Warnung, oder die VAE hat auf einer Half-Precision-GPU einen NaN erzeugt, ohne Warnung und manchmal mit einer NansException. Ersteres wird durch Deaktivieren des Prüfers behoben, Letzteres durch Starten mit --no-half-vae.
Hat ComfyUI einen NSFW-Filter?
Nein, standardmäßig nicht. Eine unveränderte ComfyUI-Installation blockiert Bilder nicht aufgrund ihres Inhalts. Wenn deine Installation schwarze Quadrate mit einer NSFW-Meldung erzeugt, hat ein benutzerdefinierter Node oder ein externer Wrapper, den du verwendest, einen Sicherheitsprüfer hinzugefügt. Entferne diesen Node, und das Blockieren hört auf.
Warum wurde mein harmloser Prompt als NSFW markiert?
Weil der Prüfer die visuelle Ähnlichkeit zu verborgenen Konzeptvektoren misst, nicht tatsächliche Nacktheit. Harmlose Bilder landen manchmal zufällig nahe an diesen Vektoren. Gemeldete False Positives umfassen Prompts, die so harmlos sind wie "star" und "riding horse." Der Filter ist absichtlich auf Überblockierung ausgelegt, daher sind unbedenkliche Markierungen häufig.
Verstößt es gegen die Lizenz, den Sicherheitsprüfer zu deaktivieren?
Nein. Die CreativeML Open RAIL-M-Lizenz erlaubt es dir, deine lokalen Werkzeuge zu konfigurieren, einschließlich des Abschaltens des Prüfers. Was sie verbietet, ist der Output: Illegale, nicht einvernehmliche oder schädliche Inhalte bleiben verboten, unabhängig davon, ob der Filter ein- oder ausgeschaltet ist. Du bist dafür verantwortlich, was du erzeugst, nicht für den Zustand des Prüfers.
Wie stoppe ich die safety_checker-Warnungen in meinen Logs?
Setze requires_safety_checker=False, wenn du die Pipeline lädst, zusammen mit safety_checker=None. Möchtest du das Attribut lieber gesetzt lassen? Ersetze es durch einen Dummy, der die Bilder und eine Liste mit ausschließlich False-Flags zurückgibt. Beides unterdrückt die wiederholte Warnung, die diffusers bei jedem Aufruf ausgibt.


