Qué hace que una contraseña sea difícil de adivinar, y por qué la aleatoriedad real importa más que cualquier regla de mayúsculas y símbolos.

"Agrégale un número y un símbolo" es el consejo de seguridad más repetido y, al mismo tiempo, uno de los menos útiles por sí solo. Cambiar "contraseña" por "Contraseña1!" sigue siendo una contraseña débil, porque alguien que prueba variaciones de palabras comunes la adivina casi igual de rápido.
Dos cosas importan mucho más que cualquier regla de formato: la longitud y qué tan al azar es. Una contraseña larga y verdaderamente aleatoria, aunque solo use letras minúsculas, suele ser más difícil de forzar que una corta con símbolos pero basada en una palabra reconocible.
Muchos generadores de contraseñas, incluso algunos conocidos, usan Math.random() de JavaScript por dentro: una función pensada para juegos y animaciones, no para seguridad, y que en teoría se puede predecir. El generador de Giga Useful Tools usa la Web Crypto API (crypto.getRandomValues), la misma fuente criptográficamente segura que usan los navegadores para generar claves de cifrado.
Como referencia rápida, el control al máximo (48 caracteres) con los cuatro tipos de carácter activados es prácticamente imposible de forzar por fuerza bruta con la tecnología actual. Para algo memorizable a mano, apunta al menos a 16 caracteres mezclando tipos.
Este generador corre enteramente en tu navegador: la contraseña nunca viaja por la red. Es una de varias herramientas de este tipo disponibles gratis en Giga Useful Tools.