Corrector de Indentación
Detecta tabs y espacios mezclados y normaliza la indentación al ancho que elijas — sin tocar strings ni comentarios.
Código de entrada
Resultado
Cómo funciona la detección de indentación
El ancho absoluto de indentación por sí solo no revela el paso que usa un archivo — una línea indentada 8 espacios podría ser un nivel de 8 espacios o dos niveles de 4 espacios. La señal confiable, la misma que usan editores como VS Code, es la diferencia en la longitud del espacio inicial entre una línea de código real y la anterior. La diferencia positiva más común es el paso detectado; el carácter que aparece con más frecuencia entre tabs y espacios es el detectado:
// Antes (mezcla 2 espacios con indentación inconsistente)
function greet(name) {
if (name) {
console.log("Hi, " + name);
} else {
console.log("Hi!");
}
}
// Después (normalizado a 2 espacios)
function greet(name) {
if (name) {
console.log("Hi, " + name);
} else {
console.log("Hi!");
}
}
Solo se reescribe el espacio inicial de cada línea — todo desde el primer carácter que no sea espacio en blanco se deja intacto, byte por byte. Un pequeño autómata de estados compartido también rastrea strings con comilla simple o doble, template literals con backtick, strings de triple comilla de Python y comentarios de bloque /* */ mientras escanea, y evita reindentar cualquier línea que sea continuación de una de esas construcciones, ya que ese espacio en blanco es contenido de un string o comentario, no estructura de código. Si un archivo realmente mezcla dos anchos de indentación distintos en bloques diferentes, gana el ancho más común y la minoría se trata como ruido — es una limitación documentada de usar un único paso global en vez de una heurística por bloque.
Preguntas frecuentes
¿Cómo funciona la detección automática de indentación?
Usa la misma heurística que usan la mayoría de los editores de código: en vez de mirar el ancho absoluto de cada línea, mira la diferencia en la longitud del espacio inicial entre una línea de código real y la anterior. La diferencia positiva más común es el paso detectado (normalmente 2, 4 u 8), y el carácter que aparece con más frecuencia entre tabs y espacios es el detectado.
¿Puede corromper strings, template literals o comentarios?
No. Mientras escanea el código, sigue un pequeño autómata de estados (strings con comilla simple o doble, template literals con backtick, strings de triple comilla de Python y comentarios de bloque /* */) y solo reescribe el espacio inicial de una línea cuando esa línea no es continuación de una de esas construcciones. El resto de cada línea se copia sin modificar.
¿Funciona con lenguajes además de JavaScript?
Sí, funciona razonablemente bien con JS/TS, Python, CSS, JSON y lenguajes similares, porque usa un único tokenizador compartido y liviano en lugar de un parser completo por lenguaje. Sintaxis muy inusual (delimitadores de raw-string personalizados, estilos de comentario poco comunes) puede no manejarse perfectamente.
¿Es seguro pegar código propietario aquí?
Sí. Todo el procesamiento ocurre en tu navegador; ningún código se envía a un servidor.