Codificar y decodificar Base64
Base64 parece trivial hasta que hay que elegir entre el alfabeto estándar y el URL-safe, lidiar con caracteres de relleno que rompen una cadena de consulta, o codificar un lote de archivos en el servidor sin cargar una librería. Este endpoint cubre ambas direcciones, ambos alfabetos, y tanto valores individuales como lotes completos, para que ese caso límite que aparece a medianoche ya esté resuelto.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Un truco de los años ochenta que sigue trabajando
Base64 se formalizó para mover datos binarios de forma segura por canales pensados para texto, originalmente los adjuntos de correo bajo MIME, y el mismo problema aparece hoy constantemente: incrustar imágenes en JSON, pasar tokens binarios por una URL, o guardar bytes arbitrarios en columnas de base de datos que solo aceptan texto. La idea central no ha cambiado en décadas, pero los detalles, qué alfabeto usar, si se debe rellenar, si hace falta escapar caracteres, siguen causando errores en producción.
Estándar vs. URL-safe, y por qué importa
El alfabeto Base64 estándar usa + y / entre sus 64 símbolos, ambos con significado especial dentro de una URL, así que un token codificado de forma estándar puede romper silenciosamente un parámetro de consulta o un segmento de ruta. La variante URL-safe reemplaza esos símbolos por - y _ y normalmente omite el relleno, justo lo que se necesita para tokens, slugs o identificadores que viajan en una URL. Este endpoint permite elegir el alfabeto de forma explícita en lugar de adivinar cuál espera el sistema receptor.
Cómo funciona una solicitud
Envíe una solicitud POST /dev/base64 indicando la operación (codificar o decodificar), el alfabeto, y ya sea un solo valor o un arreglo de ellos; la llamada devuelve un task_id de inmediato mientras la conversión real ocurre de forma asíncrona. Los resultados llegan por un webhook firmado, recomendado para flujos automatizados, o mediante un enlace firmado que permanece activo 24 horas antes de que los datos se eliminen definitivamente. Nada de lo que envíe a este endpoint se conserva más allá de esa ventana ni se usa para entrenar nada.
Dónde demuestra su valor
Los servicios de backend lo usan para codificar adjuntos binarios antes de incluirlos en respuestas JSON, los equipos de frontend lo usan para decodificar tokens recibidos de proveedores de autenticación externos, y los pipelines de datos usan el modo por lotes para convertir miles de registros en una sola llamada en lugar de instalar una librería en cada microservicio. Como el endpoint requiere saldo prepago en lugar de ofrecer un nivel gratuito, se mantiene disponible y libre de abuso, y una conversión fallida, tras tres reintentos automáticos, simplemente nunca se cobra.
Qué puede hacer con ella
Incrustar imágenes en APIs JSON
Codifique una imagen o PDF binario en Base64 antes de incluirlo en línea dentro de una respuesta de API, sin mantener una librería de codificación en cada servicio.
Decodificar tokens de autenticación externos
Decodifique tokens Base64 URL-safe recibidos de un proveedor de identidad para inspeccionar su contenido durante depuración o integración.
Convertir exportaciones de datos heredados en lote
Envíe un arreglo de miles de bloques binarios en una sola llamada para codificarlos y guardarlos en una columna de base de datos que solo acepta texto.
Sanear tokens para cadenas de consulta
Recodifique un valor Base64 estándar al alfabeto URL-safe para que sobreviva al pasar como parámetro de consulta sin problemas de escape.
Preguntas frecuentes
¿Esta API de Base64 es gratuita?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuál es la diferencia entre Base64 estándar y URL-safe?
El Base64 estándar usa + y / y puede incluir relleno, mientras que el URL-safe reemplaza esos símbolos por - y _ para que el resultado viaje dentro de una URL sin necesidad de escaparlo.
¿Puedo decodificar además de codificar?
Sí, POST /dev/base64 acepta un parámetro de operación para codificar o decodificar en cualquiera de los dos alfabetos.
¿Admite solicitudes en lote?
Sí, puede enviar un arreglo de valores en una sola llamada, lo cual es más eficiente que hacer una solicitud por cada valor cuando el volumen es grande.
¿Cómo recibo el resultado codificado o decodificado?
El endpoint es asíncrono: devuelve un task_id de inmediato y entrega el resultado mediante un webhook firmado o un enlace firmado válido por 24 horas.
¿El resultado incluye relleno?
Usted elige el alfabeto; el Base64 estándar incluye caracteres de relleno mientras que la variante URL-safe suele usarse sin ellos.
¿Qué pasa si una conversión falla?
El sistema reintenta automáticamente hasta tres veces, y si aun así falla recibe un error claro sin cargo por esa solicitud.
¿Mis datos se conservan o se usan para entrenar modelos?
No, los valores enviados y los resultados se eliminan al cerrarse la ventana de retención y nunca se usan para entrenar ningún modelo.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/base64 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/base64", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/base64",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/base64", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/base64", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.base64",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |