Claves API aleatorias con caracteres seguros para URL y shell, generadas en tu navegador. Sin red, sin registros, sin subir nada.
Pulsa Espacio para generar otra y C para copiar. Se genera con crypto.getRandomValues en tu dispositivo; la página no carga nada de la red.
Una clave API no es una clave criptográfica en el sentido en que lo son las que producen los demás generadores de este sitio: nada firma ni descifra con ella. Es una cadena aleatoria larga que tu servidor reconoce, así que la única propiedad que importa es que nadie pueda adivinarla ni fabricar otra que tu servidor acepte. Con 128 bits de aleatoriedad ya queda fuera de alcance; 256 es lo que acaban adoptando la mayoría de los servicios.
Los bytes salen de crypto.getRandomValues, el generador de números aleatorios criptográficamente seguro del navegador, y se escriben en Base64URL o en hexadecimal. Ambos alfabetos atraviesan una URL, una cabecera HTTP, una variable de entorno y una orden de shell sin necesidad de escapes — por eso aquí no se ofrece Base64 corriente, con sus caracteres +, / y =. Sin marcas de tiempo, sin contadores y sin Math.random en ningún punto del recorrido.
Todo ocurre en tu propio dispositivo. La página no hace ninguna petición de red después de cargarse, así que esta clave no ha existido nunca en ningún otro sitio ni viaja a ninguna parte. Al recargar desaparece, lo que también significa que conviene pegarla en tu almacén de claves antes de cerrar la pestaña.
128 bits de aleatoriedad — 22 caracteres en Base64URL — ya están fuera del alcance de la fuerza bruta, y nadie va a dar con una clave así adivinando a través de tu limitador de peticiones. 256 bits es el valor por defecto habitual, sobre todo porque no cuesta nada y evita que la cuestión reaparezca en una revisión. Más longitud no aporta ninguna seguridad adicional: solo hace la clave más incómoda de pegar y más propensa a que la trunque alguna línea de registro o alguna columna de base de datos por el camino.
Puedes, pero es una elección más frágil de lo que parece. Un UUIDv4 aleatorio lleva 122 bits y no 128, porque seis de ellos son marcas fijas de versión y variante — sigue bastando, pero solo si detrás hay un CSPRNG, y bastantes implementaciones recurren en silencio al generador aleatorio corriente. UUIDv1 y v7 incrustan una marca de tiempo y son parcialmente predecibles por diseño. Además un UUID se anuncia como identificador, lo que invita a todo lo que viene después a tratarlo como tal y a registrarlo.
Sí, si eres quien emite las claves. Algo como sk_live_ o myapp_ hace que una clave filtrada se reconozca de un vistazo y, más útil todavía, da a los escáneres de secretos de GitHub y GitLab un patrón que reconocer, de modo que una clave subida por error se notifica en lugar de quedarse ahí. También te permite enrutar o rechazar por el prefijo antes de tocar la base de datos. Añádelo delante del valor de esta página: un prefijo no es secreto ni aporta entropía, así que no sustituye ninguna parte de lo aleatorio.
Con hash, igual que una contraseña: una clave que puede leerse de tu base de datos es una filtración a la espera de ser exportada. A diferencia de una contraseña, sin embargo, aquí basta un SHA-256 sin más y no hace falta un hash lento como bcrypt: la clave ya son 128 bits de aleatoriedad uniforme, no hay diccionario que aplicarle ni motivo para pagar ese coste en cada petición. Guarda en claro un prefijo o los cuatro últimos caracteres para poder identificarla en una lista, y muestra el valor completo una sola vez, al crearla.
Una clave API es opaca: no significa nada salvo para el sistema que la emitió, que tiene que consultarla para comprobarla. Un JWT es lo contrario — lleva dentro sus afirmaciones y su caducidad, firmadas, de modo que un servicio puede verificarlo sin consulta alguna. Los tokens en el sentido de OAuth quedan más cerca del JWT: de vida corta, con ámbito y emitidos tras otra autenticación. Usa una clave cuando una máquina necesite acceso duradero que pueda guardar en un archivo de configuración, y un token cuando el acceso deba caducar por sí solo.
Los mismos bytes en ambos casos; lo que cambia es la longitud y dónde sobrevive la cadena sin escapes. Base64URL es más corto — 256 bits son 43 caracteres frente a los 64 del hexadecimal — y su alfabeto es A-Z, a-z, 0-9, guion y guion bajo, todos ellos capaces de atravesar URL, cabeceras y shells intactos. El hexadecimal es más largo pero más fácil de leer en voz alta, dictar y comparar a ojo, y nunca tropieza con nada que maneje mal las mayúsculas. El que conviene evitar es el Base64 corriente: + y / necesitan escaparse en una URL, y el relleno = se elimina con frecuencia por el camino.
Evítalo. Las cadenas de consulta se escriben en los registros de acceso del servidor, en los del proxy y en el historial del navegador, y se filtran por la cabecera Referer hacia aquello a lo que enlace la página — nada de eso está bajo tu control una vez que la petición ha salido. Envía la clave en una cabecera Authorization, como Authorization: Bearer seguido de la clave, que ningún registro corriente anota por omisión. El alfabeto seguro para URL que se usa aquí existe por el segmento de ruta ocasional o la llamada de un webhook, no para convertir la cadena de consulta en un buen sitio donde poner un secreto.
Con mucho menos ceremonial que una clave criptográfica: rotar una clave API no vuelve a cifrar nada, así que todo el coste está en coordinar a los clientes. Deja que cada cuenta tenga dos claves activas a la vez y la rotación se convierte en crear, desplegar y revocar, sin ninguna ventana en la que la integración deje de funcionar. Por calendario, una o dos veces al año basta para la mayoría de los sistemas. Importa mucho más que la revocación sea inmediata y autoservicio, porque la rotación que de verdad cuenta es la imprevista.
Solo si la página no puede transmitirla, y eso se comprueba en lugar de darse por supuesto. Abre las herramientas de desarrollo, quédate en la pestaña Red y genera todas las claves que quieras: no se solicita nada después de que la página carga. Detrás no hay servidor que pueda recibir nada, ni analíticas ni scripts de terceros que puedan filtrarla. La clave vive en la memoria de una sola pestaña hasta que la pegas en algún sitio, y desaparece al recargar.