Desactivar el filtro NSFW de Stable Diffusion (2026)
El filtro NSFW de Stable Diffusion pone en negro imágenes inocentes. Por qué da falsos positivos, cómo desactivarlo según el stack y dónde está realmente la línea legal.

TL;DR
- Qué es: el bloqueo NSFW es el safety checker de Stable Diffusion que sustituye tu imagen por un cuadrado negro sólido cuando cree que el resultado es explícito. Es una máquina de falsos positivos, no un detector de desnudez.
- Solución rápida (diffusers): carga el pipeline con
safety_checker=Noneyrequires_safety_checker=False. Un cambio, y los cuadrados negros desaparecen. - A1111 / ComfyUI: ninguno ejecuta ese filtro por defecto. ¿Sigues obteniendo apagones ahí? Es un wrapper de notebook de Colab o un error NaN, no el safety checker.
- Imagen negra sin advertencia NSFW? Bug diferente. Eso es un NaN de VAE en GPUs FP16. Inicia con
--no-half-vae. - Antes de desactivarlo: tienes los weights localmente, así que es tu decisión. La licencia sigue prohibiendo resultados ilegales, no consensuados y CSAM. Esa línea no se mueve.
Escribiste un prompt inofensivo, esperaste el render y obtuviste un cuadrado negro. Stable Diffusion decidió que tu imagen era NSFW. Aquí tienes por qué sigue ocurriendo, cómo desactivarlo en tu propia máquina y dónde permanecen los límites reales.
¿Qué significa "bloqueo NSFW" en Stable Diffusion?
Significa que el verificador de seguridad integrado puntuó tu imagen generada como explícita y la reemplazó por una imagen negra antes de que llegaras a verla. El modelo funciona bien. La imagen se crea. Luego, un clasificador separado mira los píxeles, decide que cruzaron una línea y deja el resultado en blanco. Normalmente recibes un mensaje como "Potential NSFW content was detected in one or more images. A black image will be returned instead."
Esta es la parte que importa. El verificador se sitúa después de la generación, añadido encima en lugar de estar integrado en el modelo, por eso desactivarlo es un cambio de configuración y no un reentrenamiento. También se activa por accidente constantemente. El clasificador no tiene idea de lo que pediste. Solo ve los píxeles que salieron.
¿Tu imagen negra es el filtro o un error NaN?
Antes de desactivar nada, averigua qué imagen negra tienes realmente, porque tienen dos soluciones completamente distintas. La gente las confunde constantemente y luego “desactiva el safety checker” en un error que el safety checker nunca causó.
Dos señales las distinguen:
- Bloqueo del safety checker: recibes una advertencia NSFW en la consola o en la interfaz. El mensaje dice literalmente que se detectó contenido NSFW. Este se soluciona desactivando el checker.
- Bloqueo NaN del VAE: no hay ningún mensaje NSFW, a veces aparece un
NansException: A tensor with all NaNs was produced in VAE. Esto es un fallo matemático, no una decisión sobre contenido. Algunas GPUs se atragantan con la media precisión (FP16), los números se desbordan a NaN y la decodificación sale negra.
| Síntoma | Causa real | Solución |
|---|---|---|
| Imagen negra + "NSFW detected" | Falso positivo del safety checker | Desactiva el checker |
| Imagen negra, sin mensaje NSFW | NaN de FP16 en el VAE | Inicia con --no-half-vae |
| Negro solo en tarjetas antiguas (16xx) | Sin soporte nativo de FP16 | Añade --no-half --no-half-vae |
| Negro solo en SDXL | Precisión del sampler | Añade --upcast-sampling |

¿No hay advertencia NSFW? Entonces deja de leer las guías para desactivar el filtro. Tu problema es la precisión, y --no-half-vae resuelve la gran mayoría de los casos de NaN del VAE con un coste de velocidad de aproximadamente un 5 a 10 por ciento. Desactivar un safety checker que nunca se activó no oculta nada y te hace perder una tarde.
¿Por qué el filtro marca prompts inocentes?
Porque no detecta desnudez. Mide la similitud con conceptos ocultos, y muchas imágenes inofensivas acaban cerca de ellos por accidente. Por debajo, el verificador es CLIP. Pasa tu salida por el codificador de imágenes ViT-L/14 de CLIP para obtener un embedding, y luego compara ese embedding con 17 vectores fijos, cada uno representando un "concepto sensible". Si la similitud coseno con cualquiera de ellos supera un umbral, la imagen se bloquea en negro.
Esos 17 vectores de conceptos están ocultos a propósito, para que nadie pueda aplicarles ingeniería inversa. El efecto secundario es que no puedes ver qué estás activando. Un paisaje, un fractal, un retrato, un plato de comida, cualquier cosa cuyo embedding se desplace cerca de uno de esos vectores queda marcada. Desarrolladores en el rastreador de incidencias de CompVis reportaron que el prompt "star" era bloqueado. Otro fue marcado por "riding horse." Uno escribió, medio en broma, "maybe my PC is not safe for work."
Así que esto no es un juicio moral preciso. Es una comprobación burda de distancia con un límite fijo, ajustada para bloquear de más. Para mucho trabajo real, los falsos positivos superan a los verdaderos por un amplio margen.
¿Cómo se desactiva el filtro NSFW en Stable Diffusion?
Busca la sección correspondiente a tu stack, porque "Stable Diffusion" significa tres o cuatro piezas de software muy diferentes, y solo una ejecuta este filtro de forma predeterminada.
Diffusers (Python)
Esta es la que realmente incluye el comprobador activado. Pasa safety_checker=None cuando cargues el pipeline, y establece requires_safety_checker=False para silenciar la advertencia posterior:
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,
)También puedes cambiarlo después de que exista el pipeline con pipe.safety_checker = None. ¿Prefieres mantener el hook pero que nunca bloquee? Sustitúyelo por un pass-through que informe que no se marcó nada:
pipe.safety_checker = lambda images, **kwargs: (images, [False] * len(images))Mismo resultado, sin spam repetido de advertencias en tus logs. El código fuente de safety_checker es breve si quieres leer exactamente qué hace.
AUTOMATIC1111 / Forge
Buenas noticias: ninguno ejecuta el diffusers safety checker de forma predeterminada. Si estás teniendo apagones NSFW en A1111 o Forge específicamente, el culpable habitual es un notebook de Colab que volvió a añadir un filtro mediante un parche, o una extensión. Busca en la celda de tu notebook safety_checker o una función check_safety y coméntala. En una instalación local normal no hay nada que desactivar, porque nunca estuvo activado.
ComfyUI
La misma historia: no hay filtro de seguridad de forma predeterminada. Un grafo ComfyUI estándar no dejará tus imágenes en negro por su contenido. Si el tuyo lo hace, lo añadió un nodo personalizado. Elimina ese nodo, o revisa el wrapper desde el que lo iniciaste.
Editar model_index.json
Si un checkpoint sigue cargando un comprobador sin importar lo que diga tu código, abre su model_index.json, establece "requires_safety_checker": false, y elimina la entrada safety_checker. Eso impide que el módulo se cargue en absoluto. Útil para un modelo descargado que incluye su propia configuración de filtro.
¿No quieres arrasarlo? Ajústalo en su lugar.
Desactivar el verificador por completo es la jugada común. No es la única, y en un despliegue compartido o público no es la más inteligente. Tres opciones intermedias:
- Detecta y gestiona, no pongas en blanco. La canalización puede devolver una marca NSFW por imagen en lugar de ennegrecer las cosas en silencio. Conserva la marca, elimina el bloqueo y enruta o registra tú mismo las imágenes marcadas.
- Cámbialo por Safe Stable Diffusion. En lugar de un cuadrado negro, orienta la generación hacia la imagen no explícita más cercana. Conservas una salida utilizable y una barrera de seguridad.
- Aumenta el umbral, no lo elimines. Si puedes editar el verificador, relajar el punto de corte reduce los falsos positivos sin dejar de detectar lo obvio. Más trabajo, muchas menos sorpresas que con el todo o nada.
Para un proyecto individual en tu propia GPU, safety_checker=None está bien. Para cualquier cosa a la que puedan acceder usuarios, mantén una barrera de seguridad. Un punto de conexión público sin filtro es una responsabilidad de la que te arrepentirás.
¿Desactivar el comprobador de seguridad es siquiera legal?
Desactivarlo está permitido. Lo que generas con él desactivado es donde están los límites reales, y esos no desaparecen cuando lo hace el filtro. Stable Diffusion se distribuye bajo la licencia CreativeML Open RAIL-M license. Concede derechos amplios, no reclama nada sobre tus resultados y pone la responsabilidad en ti. También incluye restricciones basadas en el uso con consecuencias reales.
La licencia prohíbe explícitamente usar el modelo para producir o compartir contenido ilegal o dañino. Nada de CSAM. Nada de imágenes íntimas no consentidas. Nada de deepfakes de personas reales hechos para engañar o causar daño. Esos no son ajustes de filtro. Son leyes en la mayor parte del mundo, y "el comprobador de seguridad estaba desactivado" no es una defensa en ninguna parte.
Así que este es el planteamiento honesto. En hardware que posees, ejecutando pesos que descargaste, puedes configurar tus propias herramientas, y desactivar un filtro demasiado propenso a falsos positivos para trabajo real es razonable. Generar contenido ilegal no lo es, con filtro o sin filtro. Mantén separadas esas dos ideas y estarás en terreno firme.
¿Qué pasa si usas una API alojada en lugar de local?
Entonces el filtro no es tuyo para desactivarlo, y esa es toda la diferencia. Cuando llamas a un endpoint de imagen alojado, el proveedor ejecuta el modelo y aplica su propia política de contenido del lado del servidor. No hay ningún safety_checker=None que puedas pasar. Aceptas sus reglas, o ejecutas localmente.
Vale la pena expresar ese intercambio con claridad. Stable Diffusion local te da control total, incluido el verificador de seguridad, a costa de una GPU, la configuración de drivers y tu propia moderación. Una API alojada como los endpoints de imagen de Velokey evita la configuración y te da una sola clave para varios modelos, pero estás dentro de la política de contenido del proveedor, no fuera de ella. ¿Esperas que una pasarela te permita eludir las reglas de contenido? No lo hará, y cualquiera que afirme hacerlo es un problema de cumplimiento a punto de ocurrir. Elige alojado por comodidad y escala, local por control. Si estás evaluando APIs de imagen en general, nuestro desglose de límites de imágenes de ChatGPT y las notas de Qwen-Image 2.0 cubren lo que realmente cuestan y limitan las generaciones alojadas, y Seedream 5.0 Pro cubre una opción de gama más alta. ¿Te encuentras con un error de IA totalmente distinto? Nuestra solución para el error de ChatGPT en el flujo de mensajes es la guía hermana de esta.
Preguntas frecuentes
¿Cómo elimino el filtro NSFW en Stable Diffusion?
Depende de tu stack. En la biblioteca diffusers, carga el pipeline con safety_checker=None y requires_safety_checker=False. En AUTOMATIC1111, Forge y ComfyUI normalmente no hay nada que eliminar, ya que no ejecutan ese checker de forma predeterminada. Si sigues obteniendo pantallas negras, un wrapper de notebook o un nodo personalizado volvió a añadir el filtro.
¿Por qué Stable Diffusion devuelve una imagen negra para un prompt normal?
Hay dos posibles razones. O bien el safety checker marcó falsamente tu imagen como NSFW, y verás una advertencia NSFW, o el VAE produjo un NaN en una GPU de media precisión, sin advertencia y a veces con una NansException. Lo primero se soluciona desactivando el checker; lo segundo, iniciando con --no-half-vae.
¿ComfyUI tiene un filtro NSFW?
No, no de forma predeterminada. Una instalación estándar de ComfyUI no bloqueará imágenes por contenido. Si la tuya está produciendo cuadrados negros con un mensaje NSFW, un nodo personalizado o un wrapper externo que estás ejecutando añadió un safety checker. Elimina ese nodo y el bloqueo se detendrá.
¿Por qué mi prompt inocente fue marcado como NSFW?
Porque el checker mide la similitud visual con vectores de conceptos ocultos, no desnudez real. Las imágenes inofensivas a veces quedan cerca de esos vectores por azar. Entre los falsos positivos reportados hay prompts tan inocuos como "star" y "riding horse." El filtro está diseñado para bloquear de más, así que las marcas benignas son comunes.
¿Va contra la licencia desactivar el safety checker?
No. La licencia CreativeML Open RAIL-M te permite configurar tus herramientas locales, incluido desactivar el checker. Lo que sí prohíbe es el resultado: el contenido ilegal, no consensuado o dañino sigue estando prohibido tanto si el filtro está activado como si no. Eres responsable de lo que generas, no del estado del checker.
¿Cómo detengo las advertencias de safety_checker en mis logs?
Establece requires_safety_checker=False cuando cargues el pipeline, junto con safety_checker=None. ¿Prefieres mantener el atributo establecido? Sustitúyelo por un dummy que devuelva las imágenes y una lista de flags todos en False. Ambas opciones silencian la advertencia repetida que diffusers imprime en cada llamada.


