FreeToGenerate.com

El consejo de siempre — cambia la coma por un punto y pon WEBVTT arriba — rompe en silencio cualquier subtítulo que lleve un ampersand.

WebVTT define b, i, u, ruby, v, lang y c. Esas se conservan; cualquier otra pasa a ser texto literal, porque una etiqueta que WebVTT no conoce no es marcado.

Pega un archivo de subtítulos para convertirlo.

También disponible en: English · Português · Français · العربية

Convertir SRT a VTT

De SubRip a WebVTT con el escapado de caracteres que la norma exige de verdad, y un informe de cada decisión que ha tomado la conversión.

¿Qué es convertir SRT a VTT?

SubRip, el formato .srt, es el archivo de subtítulos que tiene casi todo el mundo: un bloque numerado, una hora de entrada y otra de salida, y una o dos líneas de texto. WebVTT, el formato .vtt, es lo que los navegadores reproducen de verdad. El elemento video de HTML no carga un .srt en absoluto, así que poner subtítulos en una página web pasa por convertir uno en el otro.

Los dos formatos se parecen tantísimo que la conversión tiene fama de trivial. Las diferencias visibles son que los archivos WebVTT empiezan por la palabra WEBVTT y que las marcas de tiempo usan un punto antes de los milisegundos donde SubRip usa una coma. Casi todas las guías se quedan ahí.

Ese consejo está incompleto de una forma que hace daño de verdad, y el resto de esta página va sobre lo que se dejan fuera. Este conversor funciona entero en tu navegador y te informa de cada cambio que ha hecho en lugar de aplicarlo calladamente.

Cómo usarlo

  1. Pega tu archivo .srt en la primera caja. Ábrelo con cualquier editor de texto y copia el contenido. No se sube nada: la conversión ocurre en esta pestaña según escribes.
  2. Elige qué hacer con el formato y la numeración. Conservar las etiquetas de formato mantiene las que WebVTT define de verdad y convierte el resto en texto literal. Los números de subtítulo se pueden conservar como identificadores de WebVTT o quitar, porque WebVTT no los exige.
  3. Copia el resultado o descárgalo como archivo .vtt. Antes, lee el informe de debajo. Enumera todo lo que la conversión ha tenido que decidir (caracteres escapados, etiquetas conservadas o pasadas a texto, coordenadas descartadas, bloques ilegibles) para que sepas exactamente qué ha cambiado.

El escapado que casi todos los conversores hacen mal

Aquí está lo que las guías se saltan. WebVTT es una norma del W3C, y su sección 4.2 define un tramo de texto de subtítulo como una tirada de caracteres distintos del salto de línea, el retorno de carro, U+0026 AMPERSAND y U+003C SIGNO MENOR QUE. Esos dos caracteres no pueden aparecer literalmente en el texto de un subtítulo WebVTT: hay que escribirlos como referencias de carácter HTML, & y <.

SubRip no tiene esa regla, porque SubRip no tiene ninguna regla en sentido formal. Así que un subtítulo que diga Tom & Jerry, o uno que diga 5 < 6, es SubRip perfectamente normal y WebVTT mal formado. Un conversor que solo cambia la coma por un punto produce un archivo roto de una manera que no vas a notar hasta que un reproductor se coma el texto o pinte algo raro, porque un signo de menor que sin escapar abre lo que el analizador toma por una etiqueta.

Esto no es interpretable, y conviene comprobarlo en vez de creérselo. Si pasas la conversión ingenua de Tom & Jerry < 5 por el analizador de referencia de WebVTT, el que publican los propios editores de la norma, salen tres errores: un escapado incorrecto, una etiqueta de apertura que solo v y lang pueden anotar, y una etiqueta de apertura incorrecta. Si pasas por el mismo analizador la salida de este conversor, no sale ninguno, en todos los archivos de prueba.

La herramienta escapa el ampersand antes que el signo de menor que, lo que suena a detalle y no lo es. Al revés, los ampersands de las entidades que acabas de escribir se escaparían una segunda vez, y &lt; se convertiría en &amp;lt;, que se ve como marcado en pantalla en lugar de como un carácter.

SubRip no tiene norma, así que el conversor informa de sus conjeturas

WebVTT tiene una norma que puedes consultar. SubRip no la tiene en ninguna parte: está definido enteramente por lo que los reproductores aceptan, así que leerlo es una sucesión de decisiones. Los archivos reales usan un punto en vez de una coma, se dejan las horas de las marcas de tiempo, omiten los números de secuencia, separan los bloques con líneas de solo espacios en lugar de líneas realmente vacías, y empiezan por una marca de orden de bytes. Todo eso se acepta aquí, y cada cosa se cuenta.

Contarlo es justamente el objetivo. Como no hay ninguna autoridad a la que apelar, lo honesto que puede hacer un conversor es decirte qué ha decidido. El informe enumera cuántos ampersands y signos de menor que se han escapado, cuántas etiquetas de formato se han conservado frente a las que han pasado a texto, cuántas marcas de tiempo venían sin horas, cuántos subtítulos no traían número y si se ha eliminado una marca de orden de bytes.

También informa de problemas que ya venían en tu archivo, en vez de repararlos en silencio: subtítulos cuya hora de salida precede a la de entrada, subtítulos que duran cero y subtítulos que empiezan antes de que termine el anterior. Los invertidos se emiten en el orden que WebVTT exige, porque si no el analizador de referencia los rechaza, pero el hecho de que haya pasado se informa en vez de ocultarse.

Los bloques que no se pueden leer se quedan fuera del resultado y se te enseñan enteros. Un conversor que descarta en silencio lo que no entiende es peor que uno que falla en voz alta, porque te enteras cuando alguien ve el vídeo.

Límites honestos

Los archivos SubRip que circulan a veces llevan coordenadas X1, X2, Y1 e Y2 en la línea de tiempos, para colocar el subtítulo en pantalla. Se descartan, y el número se informa. WebVTT expresa la posición mediante ajustes de subtítulo medidos en porcentajes del vídeo, que es un modelo genuinamente distinto, y no hay forma fiel de pasar de uno al otro sin conocer las dimensiones del vídeo. Una posición equivocada es peor que ninguna, así que la herramienta se niega a adivinar.

Las etiquetas de formato se tratan según lo que WebVTT define de verdad: b, i, u, ruby, rt, v, lang y c. Esas sobreviven. Una etiqueta font con un atributo de color, muy común en SubRip, no es marcado de WebVTT, así que pasa a texto literal y se cuenta como tal. Es deliberado y es la lectura honesta: dejarla tal cual daría un archivo que el analizador de referencia rechaza, y borrarla en silencio perdería contenido que quizá quieras.

Esto convierte texto, no archivos. Pega el contenido en vez de soltar un archivo, lo que además deja la cuestión de la codificación en manos de tu editor de texto en lugar de adivinarla aquí. WebVTT tiene que ser UTF-8; si tu .srt está en una codificación antigua de Windows, ábrelo y vuelve a guardarlo como UTF-8 o las tildes no sobrevivirán.

Por último, convierte en un solo sentido. WebVTT admite regiones, bloques de estilo y ajustes de subtítulo que SubRip no puede expresar, así que ir al revés perdería cosas en silencio, que es exactamente el fallo del que se queja esta página.

¿Por qué es gratis?

Porque no cuesta nada mantenerlo. La conversión ocurre en tu navegador según escribes. No se sube nada, no se registra nada y ningún servidor ve tus subtítulos, porque no hay ningún servidor de por medio.

Ni cuenta, ni registro, ni marca de agua, ni límite de tamaño más allá de lo que aguante tu propio navegador. Las reglas de escapado salen de la norma WebVTT del W3C, y la salida se comprueba con el analizador de referencia que publican los editores de esa norma, y no con la idea que tenga otra web de cómo es un archivo .vtt.