Embellecedor JavaScript
El embellecedor de JavaScript convierte código comprimido o con espacios irregulares en un formato más fácil de inspeccionar, explicar y revisar.
Ejecutar — gratis
Pegue un script minificado, un fragmento empaquetado, un controlador en línea o código generado y obtenga una disposición determinista con sangría de dos espacios y saltos después de las sentencias. El analizador protege cadenas, plantillas literales, comentarios y expresiones regulares mientras formatea la puntuación estructural. También rechaza corchetes, paréntesis y llaves sin pareja o sin cerrar.
Devuelva la legibilidad al JavaScript comprimido
El JavaScript que reciben los navegadores suele minificarse para acelerar la transferencia, pero esa representación compacta resulta difícil de seguir para una persona. Cuerpos de funciones, declaraciones de variables, llamadas, condiciones y retornos pueden ocupar una sola línea continua. Este embellecedor recupera una jerarquía visual estable sin ejecutar el programa enviado. Las llaves de apertura inician bloques con sangría, las de cierre vuelven al nivel anterior y los puntos y coma que terminan sentencias crean saltos de línea cuando están fuera de expresiones entre paréntesis. Cada nivel usa dos espacios, por lo que ejecuciones repetidas generan un resultado predecible, adecuado para notas, incidencias, revisiones de código o editores. Es especialmente útil cuando la única fuente disponible procede del navegador, un directorio de compilación, un script incrustado o una respuesta de diagnóstico. No renombra variables, desempaqueta módulos, reconstruye mapas de origen ni pretende recuperar el estilo original del autor. Su objetivo es concreto: mostrar con claridad la estructura visible del programa y conservar sus caracteres significativos.
Proteja cadenas, comentarios, plantillas y expresiones regulares
La puntuación adopta significados distintos según el contexto de JavaScript, de modo que un formateador fiable no puede dividir el texto ante cada llave o punto y coma. Un punto y coma dentro de un mensaje entre comillas es un dato. Los corchetes de una expresión regular describen una clase de caracteres. Una llave en una plantilla literal puede formar parte del resultado, y la puntuación de un comentario no debe alterar la estructura. Por eso, el analizador reconoce cadenas con comillas simples y dobles, secuencias de escape, plantillas literales, comentarios de línea y bloque y expresiones regulares. El formato estructural solo se aplica fuera de esas regiones protegidas. También sigue los paréntesis para mantener en línea los puntos y coma de una cabecera for tradicional. Este recorrido determinista no usa red, reloj, azar, modelos ni evaluación en tiempo de ejecución. Una entrada idéntica produce siempre la misma salida y el JavaScript enviado nunca se ejecuta. El resultado sirve para la inspección humana y otras herramientas, pero este embellecedor estructural no sustituye a un analizador completo del estándar ni al formateador específico de un proyecto.
Detecte delimitadores incompletos antes de continuar
A menudo se solicita formato porque el código se copió desde un lugar incómodo, y esa copia puede omitir un carácter al principio o al final. El embellecedor conserva una pila anidada de delimitadores estructurales y contrasta cada cierre con su apertura. Un paréntesis, corchete o llave de cierre inesperado produce inmediatamente un error de entrada no válida. Si el texto termina con un delimitador de apertura pendiente, también falla en vez de devolver una salida que solo parezca correcta. Los delimitadores dentro de cadenas, comentarios, plantillas literales y expresiones regulares protegidos se consideran contenido. Esta comprobación es deliberadamente específica: que los delimitadores estén equilibrados no demuestra que identificadores, operadores, declaraciones, módulos o flujo de control formen JavaScript válido, y la herramienta no ejecuta el código. Sí ofrece una advertencia valiosa ante truncamientos y discordancias habituales antes de enviar un fragmento a documentación, revisión, comparación o un analizador especializado. El formato en el navegador puede ejecutarse localmente; las solicitudes API automatizadas usan el precio base publicado de $0.002 por elemento.
Qué puede hacer con ella
Inspeccionar un recurso minificado del navegador
Expanda un script comprimido en bloques con sangría y líneas de sentencias antes de rastrear una función, un controlador o una llamada sospechosa.
Preparar un fragmento para revisión
Aplique una disposición determinista a JavaScript generado o irregular para que los revisores se centren en el comportamiento y la estructura.
Comprobar un fragmento copiado
Detecte paréntesis, corchetes y llaves ausentes o discordantes antes de llevar el código copiado a documentación u otra herramienta.
Preguntas frecuentes
¿Qué formato aplica el embellecedor?
Usa dos espacios por nivel de bloque y coloca en líneas nuevas las sentencias terminadas en punto y coma fuera de expresiones entre paréntesis.
¿La herramienta ejecuta el JavaScript enviado?
No. Realiza un recorrido determinista del texto y nunca evalúa ni ejecuta el código proporcionado.
¿Se conservan cadenas, comentarios, plantillas y expresiones regulares?
Sí. Su contenido queda protegido de los saltos estructurales mientras el analizador procesa el código circundante.
¿La puntuación equilibrada garantiza JavaScript válido?
No. La herramienta comprueba delimitadores y límites de formato, pero no es un validador completo de la sintaxis ECMAScript.
¿Cuánto cuesta una solicitud API?
Cada solicitud API aplica el precio base publicado de $0.002. La versión del navegador puede ejecutarse localmente sin solicitar la API.
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, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev2/beautify-js \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"javascript":"function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"}'const res = await fetch("https://api.kit.forhosting.com/dev2/beautify-js", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"javascript": "function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/beautify-js",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"javascript": "function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/beautify-js", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"javascript":"function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"javascript":"function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/beautify-js", 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
{
"javascript": "function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.beautify_js",
"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. |