Validador JavaScript
Nombra la línea, no solo el error
Este validador JavaScript analiza un script como lo haría un motor e informa de lo primero que lo detiene. Además, cada nota lleva una línea, una columna y el token culpable, así que vas directo al grano. Nada de lo que pegas sale del navegador y nada se ejecuta.
- GratisPrecio
- ES2024Analiza
- NuncaEjecuta código
- NingunaSubidas
JavaScript Validator
Read a script and name the first syntax error, with the line and the column
Nothing read yet.
Read to the end. Every line parses, and there is nothing to fix.
Ready. Paste a script, or press the sample button.
Qué comprueba un validador JavaScript
Un motor lee un script entero antes de ejecutar una sola línea. Por lo tanto, un corchete roto en cualquier parte detiene el archivo, y la pestaña se queda en blanco.
Para ese fallo existe este validador JavaScript. Recorre el script como texto e informa del primer lugar donde se rompe la gramática, con la línea y la columna.
Además, comprueba la forma de lo que ha leído. Una llave sin pareja, una cadena que nunca cierra, una palabra clave usada como nombre, una coma suelta dentro de la lista de argumentos de una llamada.
No construye ningún contexto de ejecución, así que no crea ninguna global ni llama a ninguna función. Porque el lector solo lee el script, puedes apuntar un validador a código que nunca ejecutarías en una página propia.
Nada sale de esta pestaña. Por eso un script de cliente bajo acuerdo de confidencialidad se lee igual que uno público.
Cómo lee un script un validador JavaScript
La primera pasada convierte el texto en tokens. Un número, una cadena, una plantilla, una expresión regular, un nombre, un operador y una palabra clave son cosas distintas, y el lector decide cuál está mirando carácter a carácter.
Luego la segunda pasada recorre esos tokens en orden y comprueba la forma de lo que lee: qué corchetes siguen abiertos, qué nombres guarda ya un ámbito y si una palabra como return tiene una función alrededor. El reglamento aquí es ECMA-262, el estándar detrás de todos los motores.
El orden importa, y explica un número sorprendente de mensajes de error. Porque la tokenización va primero, un script que parece tener un problema de corchetes puede tener en realidad una comilla que nunca cerró.
Un caso pide una segunda mirada en lugar de una regla: una barra es un operador de división o el inicio de una expresión regular, y la respuesta depende del token anterior. Por eso el tokenizador pregunta al último token qué era.
Las plantillas añaden un pliegue más. Porque una plantilla puede contener una expresión dentro de llaves, el tokenizador mantiene una pila de la plantilla en la que está. Así una llave en una cadena es texto, y una llave dentro de una plantilla es código.
Por qué un script válido puede seguir estando mal
Gramática y significado son capas separadas. Un validador responde a la pregunta de la gramática, y todos los útiles se detienen ahí.
Así, un script puede pasar con una variable que nunca se declara en modo estricto, una propiedad leída de un valor que en ese momento contiene undefined, o un await dentro de una función que no es asíncrona. Cada uno de esos es un problema de ejecución.
La línea entre ambos merece recordarse. Un error de sintaxis significa que ninguna parte del archivo se ejecutó, y un error de ejecución significa que el archivo corrió hasta esa línea. Por eso los dos piden una depuración completamente distinta.
Por eso también esta página nombra el primer error en lugar de cien. Porque el análisis se detiene ahí, todo lo que viene después es conjetura, y una lista de conjeturas vale menos que un hecho.
Las seis comprobaciones y qué significa cada una
La primera comprobación es el equilibrio de corchetes. El lector informa de una llave, un corchete o un paréntesis sin pareja en el punto donde se rindió. De hecho, este es el único fallo que puede costar el archivo entero.

La segunda es una cadena o plantilla sin cerrar. Porque el tokenizador se traga todo lo que sigue a una comilla de apertura, la nota nombra tanto la comilla como el final del archivo donde paró la búsqueda.
La tercera es un token que la gramática no permite. Dos operadores seguidos, una coma en el lugar equivocado, o una flecha sin nada delante. Así cada uno viene con el token en cuestión.
La cuarta es una palabra clave mal usada como nombre. Por eso el lector rechaza una asignación a una palabra reservada, y una variable nombrada con una, antes de que algo se ejecute.
La quinta es un duplicado en un mismo ámbito. Dos parámetros con el mismo nombre, o un let que repite un nombre ya declarado en el mismo bloque. Porque el segundo gana en el primer caso y lanza en el segundo, el lector nombra los dos.
La sexta es un return fuera de una función, y sus parientes. Un break sin bucle, un case sin switch y un yield sin generador. Así, esos pertenecen a una posición y a ninguna otra.
Lo que esta página no hará
No ejecutará tu script. Nada aquí crea una función, asigna una variable o arranca un temporizador, así que nada puede actuar en la página mientras lees.

No informará de un error de ejecución, un error de tipo o una llamada de red fallida. Porque esos necesitan un motor, y un motor es lo que ya tienes en la pestaña de al lado.
No corregirá el código. Una conjetura sobre el corchete que falta es una nota, no una edición, porque una corrección automática puede convertir un error claro en un cambio silencioso de comportamiento.
No comprobará tipos. Un archivo con una anotación de tipo lleva más que JavaScript, así que pega la salida de tu compilador y no su entrada.
En esta página
- La herramienta
- Qué comprueba un validador JavaScript
- Cómo usar el validador JavaScript
- Por qué usar este validador JavaScript
- Hábitos que mantienen un script analizable
- Seis formas en las que un script no se analiza
- Preguntas sobre el validador JavaScript
- Herramientas que acompañan a esta
Sigue leyendo
Cómo usar el validador JavaScript
Cuatro pasos, y ninguno necesita cuenta.
- 1
Pega el script
Primero pega un archivo entero o una función. Porque el lector trabaja con texto y no con una forma compilada, un fragmento vale mientras sus corchetes estén equilibrados.
- 2
Elige el tipo de fuente
Luego elige un script o un módulo. Ya que import y export pertenecen a un módulo, esa elección decide si el lector los lee como válidos o como un fallo.
- 3
Lee la primera nota
A continuación, ve a la línea y la columna que nombra. Porque el análisis se detiene en el primer fallo, la segunda nota es una consecuencia y no un segundo error.
- 4
Corrige, vuelve a ejecutar y sigue
Finalmente, edita en tu propio editor y pégalo de vuelta para confirmar que el recuento es cero. Después, el archivo está listo para el minificador o para el navegador.
Por qué usar este validador JavaScript
Cinco razones, y cada una ahorra una sesión de depuración.
Nombra una línea y una columna
Porque la nota lleva las dos, caes en el carácter y no en la zona. Así un archivo de doscientas líneas es una lectura corta y no una búsqueda.
Explica por qué se detuvo el análisis
Una nota dice qué esperaba la gramática en ese punto. Por lo tanto, la corrección suele quedar clara con la nota sola, sin una segunda opinión.
Nada se ejecuta
Porque el script solo se lee, un fragmento de un desconocido no puede actuar mientras lo miras. Así un validador es el sitio seguro para pegar uno.
Nada se sube
El análisis ocurre aquí y en ningún otro sitio. Por eso un archivo de un repositorio privado se puede pegar sin riesgo.
Lee sintaxis moderna
Ya que la gramática sigue el estándar actual, una función flecha, un encadenamiento opcional y un campo de clase se analizan. Así un archivo moderno no se señala por ser moderno.
Hábitos que mantienen un script analizable
Seis hábitos que mantienen un script fácil de leer y rápido de validar.
- Cierra el corchete cuando lo abres Así la pareja ya está ahí cuando rellenas el medio. De hecho, es un hábito pequeño que elimina la clase más costosa de error de sintaxis.
- Escribe en modo estricto Un módulo es estricto por defecto, y un script puede pedirlo con una directiva en la primera línea. Porque el modo estricto convierte varios fallos silenciosos en errores, tu motor se detiene en ellos en lugar de seguir en silencio.
- Prefiere const, luego let Un var declarado dentro de un bloque pertenece a la función, y ahí se esconde la reutilización accidental. Por lo tanto, dos nombres que parecen separados pueden ser uno.
- Una instrucción por línea Un motor inserta puntos y comas donde faltan, y no siempre acierta con lo que querías decir. Porque una instrucción por línea elimina la ambigüedad, el lector nunca tiene que adivinar.
- Valida antes de minificar Un minificador confía en su entrada, así que un script roto sale roto y más difícil de leer. Por eso comprueba primero el archivo legible, donde los números de línea significan algo.
- Pega la salida compilada Una anotación de tipo no es JavaScript, así que un archivo con una no se analizará. Por lo tanto, ejecuta primero el compilador y comprueba lo que emitió.
Seis formas en las que un script no se analiza
Cada una de estas detiene el archivo entero, por eso ninguna pasa desapercibida una vez que ocurre.
Un corchete cerrado en el orden equivocado
Cuidado aquí. Un motor ve una pareja que no encaja en lugar de una marca que falta, así que la nota apunta a la línea que parece mal y no a la que lo está.
Una comilla dentro de una cadena del mismo tipo
Una comilla sin escapar termina la cadena antes de tiempo. Porque el tokenizador lee el resto como código, el error aparece muchas líneas después del fallo.
Una barra que significa división
Dos líneas más abajo de un punto y coma que falta, una barra puede iniciar una expresión regular en lugar de dividir. Por eso una marca que falta se convierte en un error confuso sobre un patrón.
Una plantilla que nunca se cierra
Un acento grave abierto se traga el resto del archivo. Así la nota nombra el acento de apertura y el final de la entrada en lugar de la línea que querías corregir.
Una coma donde tocaba un punto y coma
Dentro de un objeto una coma está bien y dentro de un bloque está mal. Porque los dos se parecen a primera vista, este sobrevive a una lectura cuidadosa.
Una palabra clave usada como nombre
Algo llamado class o default se analiza en una posición y no en otra. Por lo tanto, un nombre que funcionó en un archivo puede ser un error en el siguiente.
Preguntas sobre el validador JavaScript
¿Este validador JavaScript es gratis?
Sí. No hay cuenta, ni límite, ni plan de pago. Así validas tantos scripts como quieras.
¿Ejecuta mi código?
Nunca. El lector toma el script como texto y lo analiza, y no llama a ninguna función. Por eso un fragmento de un desconocido no puede actuar mientras lo miras.
¿Qué comprueba?
Seis familias: equilibrio de corchetes, cadenas y plantillas sin cerrar, tokens que la gramática rechaza, palabras reservadas usadas como nombres, duplicados en un ámbito y return, break o yield mal colocados.
¿Qué versión de JavaScript acepta?
El estándar actual, hasta ES2024. Así una función flecha, un encadenamiento opcional, un campo de clase y un await de nivel superior en un módulo se analizan sin queja.
¿Encuentra errores en tiempo de ejecución?
No. Un error en tiempo de ejecución necesita un motor que ejecute el código, y ese es otro trabajo. Por lo tanto, esta página solo responde a la pregunta de la gramática.
¿Por qué informa de un solo error?
Porque el análisis se detiene en el primer fallo. Todo lo que viene después es una conjetura, y un hecho sirve más que cien conjeturas.
¿Se sube mi script a algún sitio?
No. Toda la comprobación ocurre en esta pestaña del navegador. Así un script sujeto a una cláusula de confidencialidad se queda donde está.
¿Puedo validar un fragmento en lugar de un archivo entero?
Sí. Una sola función vale mientras sus corchetes estén equilibrados. Entonces los números de línea se refieren a las líneas que has pegado.
¿Entiende JSX o TypeScript?
No directamente, porque son extensiones y no JavaScript. Así que ejecuta primero el compilador y valida lo que emite.
¿Cuál es la diferencia entre un error de sintaxis y un error de tipo?
Un error de sintaxis significa que ninguna parte del archivo se ejecutó. Un error de tipo ocurre en tiempo de ejecución, en una línea que sí se analizó. Por eso los dos piden una depuración distinta.
¿Comprueba la compatibilidad con navegadores?
No. Una instrucción puede ser válida y aun así no hacer nada en el navegador que importa. De hecho, gramática y compatibilidad son preguntas separadas.
¿Puede corregir el error por mí?
No, y eso es deliberado. Una corrección automática puede convertir un error claro en un cambio silencioso de comportamiento, que cuesta más encontrar que la nota.
¿Por qué se señala mi código por una barra?
Una barra es una división o el inicio de una expresión regular, y la respuesta depende del token anterior. Sin un punto y coma en el lugar correcto el lector tiene que elegir uno, y entonces la nota dice cuál.
¿Funciona con un módulo?
Sí. Elige el tipo de fuente módulo y entonces import y export pasan a ser válidos, mientras que un script normal lee ambos como un error. Además, un módulo trata let, static y yield como reservadas, así que un nombre que pasa en un script puede fallar aquí.
¿Puedo validar un archivo minificado?
Sí, aunque los números de línea sirven mucho menos. Porque un archivo minificado suele ser una línea larguísima, vuelve al código legible para la corrección.
¿Cuenta algo?
Sí. El resumen informa de líneas, tokens y caracteres, lo cual sirve cuando compruebas si un pegado perdió algo al final.
¿Es lo mismo que un linter?
No. Un linter señala problemas de estilo y variables sin usar, que a un analizador no le importan. Por eso un resultado limpio aquí significa que se analiza, y nada más.
¿Funciona en el móvil?
Sí. Los paneles se apilan y las notas se ajustan. Así puedes hacer una comprobación rápida desde el móvil, aunque un archivo largo se lleva mejor con teclado.
¿Puedo descargar las notas?
Sí. La descarga escribe las notas en un archivo de texto, lo cual viene bien cuando un ticket necesita los números de línea exactos.
¿Necesito una cuenta o una extensión?
No. No hay registro, ni plugin, ni extensión que añadir. Así cierras la pestaña una vez que el script se analiza.
Herramientas que acompañan a esta
Cuatro páginas a las que suele llevar el mismo trabajo.
Minificador JavaScript
Una vez que el script se analiza, quita los espacios y los comentarios. Porque un navegador descarga cada byte, minifica después de validar y no antes.
Abrir herramienta →Embellecedor de código
Un archivo que se analiza puede leerse mal igualmente. Así que reindéntalo y fija el estilo de llaves antes de la siguiente revisión.
Abrir herramienta →Formateador de JSON
La mayoría de los fallos de script aquí vienen de los datos y no de la lógica. Así que despliega el payload y comprueba que también se analiza.
Abrir herramienta →Validador de CSS
La otra mitad de una compilación de front-end. Porque el navegador descarta una declaración con una errata en silencio, esa hoja merece la misma comprobación.
Abrir herramienta →
Encuentra la línea que el motor rechazaría
Pega el script, lee la primera nota, corrígela y vuelve a ejecutarla. Nada se ejecuta y nada se sube. Además, la mayoría de los archivos se analizan antes de que hierva el agua, porque la nota te dice qué carácter mirar.