Subtítulos desincronizados: medir el desfase y desplazar un SRT un número exacto de segundos
Publicado el 5/8/2026 · 15 min de lectura · Herramientas para desarrolladores
Daniel Okonkwo — Desarrollador front-end y redactor de Tecnología en OneKitly
Rendimiento web · Formatos de archivo
Verificado con 4 fuentes
Mide el desfase antes de desplazar nada. Busca una réplica inconfundible cerca del principio, anota el instante exacto en que se pronuncia en el reproductor, resta la marca de inicio del subtítulo y tienes el desfase en segundos; luego repite la medición cerca del final de la película. Si las dos cifras coinciden, la pista tiene un desfase constante y un solo desplazamiento arregla el archivo entero: pega el SRT, introduce el desfase en segundos (positivo retrasa, negativo adelanta) y recoge el archivo corregido. Si la segunda cifra es mayor que la primera, no es un desfase, es una deriva, y ningún desplazamiento la arreglará. La deriva casi siempre significa un conflicto de fotogramas por segundo. Una pista ajustada a un máster de 25 fps y reproducida sobre una transferencia a 23,976 fps —23,976 es exactamente 24000/1001— necesita que sus marcas se multipliquen por 1,042708, no que se muevan: el error crece 2,5625 segundos por cada minuto de metraje, o sea un segundo cada 23,4 segundos y 3 minutos 50,6 segundos a lo largo de una línea de tiempo de subtítulos de 90 minutos. El par más suave, 24 contra 23,976 o 30 contra 29,97, vale exactamente 1,001: solo 5,4 segundos en esos mismos 90 minutos, y por eso se confunde con un desfase constante durante la primera media hora. Un comportamiento que conviene conocer antes de escribir un valor negativo: un subtítulo empujado del todo antes del cero se elimina, no se aplasta, y una línea ámbar sobre la salida cuenta cuántos se fueron. Un subtítulo a caballo del cero conserva su final real y empieza en 00:00:00,000. Eso convierte además un desplazamiento negativo grande en una forma viable de recortar una introducción: los subtítulos que estaban dentro desaparecen, todo lo que sigue conserva su espaciado y se te dice qué se ha perdido.
Mide el desfase en dos puntos en vez de adivinarlo una vez. Si es constante, un solo desplazamiento arregla el archivo. Si crece, es un problema de fotogramas por segundo —25 fps contra 23,976 deriva 2,5625 segundos por minuto— y ningún desplazamiento lo arreglará.
Mide el desfase, no lo calcules a ojo
Elige una réplica que no puedas confundir: un nombre, una cifra, un grito, cualquier cosa que empiece por una consonante clara. Reproduce la película, pausa en el fotograma donde arranca el sonido y lee el reloj del reproductor. Después busca esa misma réplica en el archivo de subtítulos y lee su marca de inicio. El desfase es el tiempo del vídeo menos el tiempo del subtítulo. Si el vídeo marca 00:04:12,500 y el subtítulo 00:04:09,000, los subtítulos van 3,5 segundos adelantados y el desfase que necesitas es de +3,5 segundos.
Ahora hazlo una segunda vez, tan cerca del final de la película como encuentres una réplica limpia. Esta segunda medición es todo el diagnóstico, y saltársela es la razón por la que se desplaza cuatro veces el mismo archivo sin arreglarlo nunca. Dos números que coinciden dentro de unas décimas significan desfase constante: un desplazamiento y listo. Dos números que difieren en minutos significan que el archivo no está desfasado, va a la velocidad equivocada, y cada desplazamiento arreglará un extremo de la película empeorando el otro.
Una nota práctica sobre leer el reloj: la mayoría de los reproductores muestran la posición a la décima de segundo, y una décima queda muy por debajo de lo que nota un espectador, así que aquí no hace falta precisión de fotograma. Lo que sí hace falta es honestidad sobre qué instante mediste. Mide el instante en que arranca el sonido, no aquel en que lo notas, y mide el mismo tipo de instante las dos veces; de lo contrario tus dos lecturas difieren en tu tiempo de reacción y te inventas una deriva que no existe.
Cuando el desfase crece: la aritmética de los fotogramas por segundo
La misma película existe en dos familias de velocidad, y el archivo de subtítulos recuerda contra cuál se escribió. La familia de cine va a 24 fotogramas por segundo, o a 24000/1001 —23,976— en cualquier transferencia que tuviera que caber en la cadencia de la televisión en color estadounidense. La familia de difusión de casi toda Europa va a 25. No son etiquetas decorativas: las propias abreviaturas de tasa de ffmpeg las escriben como fracciones exactas, film = 24/1, pal = 25/1, ntsc-film = 24000/1001, ntsc = 30000/1001. Un archivo de subtítulos hecho para una y reproducido sobre la otra no está en el sitio equivocado, avanza a la velocidad equivocada.
La corrección es una multiplicación, no una suma. Las marcas escritas para una versión a 25 fps, reproducidas sobre una versión a 23,976 fps, deben multiplicarse por 25 ÷ (24000/1001) = 25025/24000 = 1,042708. Léelo como una tasa de error y se vuelve reconocible a simple vista: 2,5625 segundos de deriva por minuto de metraje, un segundo entero cada 23,4 segundos. A lo largo de una línea de tiempo de subtítulos de 90 minutos se acumulan 230,6 segundos: 3 minutos 50,6 segundos. Al revés, una réplica que corresponde al minuto 90 de la transferencia a 23,976 lleva una marca de 25 fps de 86 minutos 18,8 segundos y aparece 3 minutos 41,2 segundos antes de tiempo.
El par peligroso es el pequeño. Pasar de 24 a 23,976, o de 30 a 29,97, es una razón de exactamente 1,001, que sobre esos mismos 90 minutos son 5,4 segundos. Durante los primeros veinte minutos es invisible; en el último rollo es una frase entera fuera de sitio. Se desplaza ese archivo dos segundos, se ve el principio con satisfacción y una hora después reaparece el mismo problema, porque nunca fue un desfase. Dos mediciones separadas por una hora te dicen cuál de los dos tienes en unos noventa segundos de trabajo.
Esta herramienta desplaza y no reescala, y conviene decirlo con claridad en vez de dejar que lo descubras. Si tus dos mediciones no concuerdan, el archivo necesita que cada marca se multiplique, lo que implica una herramienta de conversión de cadencia o un script corto, y el multiplicador es la razón entre tus dos posiciones medidas, no un valor que haya que adivinar. Divide el tiempo real de vídeo de la réplica tardía entre el de la réplica temprana, haz lo mismo con las dos marcas de subtítulo; la razón entre esas dos razones es lo que hay que aplicar.
Qué hace realmente aquí un desplazamiento negativo
Un desplazamiento negativo es el caso habitual —los subtítulos que llegan tarde hay que adelantarlos— y es el único punto en que una herramienta de subtítulos debe tomar una decisión que el formato no toma por ella. Un subtítulo en 00:00:01,000 desplazado −5 segundos empezaría en −4 segundos. SubRip no tiene forma de escribir eso. Caben tres respuestas: escribir igualmente una marca negativa y que el reproductor se atragante, descartar el subtítulo, o recortarlo a cero. Esta herramienta elige entre las dos últimas, subtítulo por subtítulo, según lo que quede después del origen.
La prueba se hace sobre la marca de fin del subtítulo, lo que produce dos resultados distintos. Un subtítulo a caballo del cero queda truncado: a −2,5 segundos, 00:00:01,000 --> 00:00:04,000 vuelve como 00:00:00,000 --> 00:00:01,500. Conserva su final real, así que aparece en el primerísimo fotograma y dura segundo y medio menos de lo debido: visible, pero no fatal. Un subtítulo empujado del todo antes del cero es otra cosa. A −5 segundos, ese mismo subtítulo terminaría en −1 segundo: no le queda nada que mostrar y se elimina del archivo. Los subtítulos que sobreviven se renumeran desde 1, de modo que lo que vuelve es un archivo más corto y no uno relleno.
Empuja todo el archivo lo bastante atrás y los subtítulos comprendidos en ese tramo desaparecen sin más. Un desplazamiento de −20 segundos aplicado a un archivo cuyos tres primeros subtítulos caben en los primeros doce segundos ya no devuelve nada, y una línea ámbar sobre la salida indica que todos los subtítulos quedan ahora antes de cero. Por debajo de ese extremo, esa misma línea lleva dos recuentos: cuántos subtítulos se han eliminado y cuántos empezaban antes de cero y ahora empiezan en el origen. Lo que la herramienta ya no hace es perder subtítulos sin decirlo: lee los recuentos antes de sobrescribir nada y compáralos con lo que esperabas perder.
Eso convierte además un desplazamiento negativo grande en una verdadera herramienta de corte. Quita una introducción de treinta segundos del principio de un vídeo, desplaza los subtítulos −30 segundos, y los que pertenecían a la introducción se eliminan, el que cabalga sobre el corte empieza en el primer fotograma con su final real, y todo lo que sigue conserva su espaciado. El recuento del aviso es la comprobación: si dice cuatro subtítulos eliminados y tú contabas con perder dos, tu desfase superaba la duración de la introducción.
Qué sale de vuelta, y qué cambia sin decirlo
La salida es siempre SubRip, entre lo que entre. Los subtítulos se renumeran desde 1 en el orden del archivo, las marcas se escriben como HH:MM:SS,mmm con una coma antes de los milisegundos, y todo lo que hay entre la línea de marca y la línea en blanco pasa intacto, incluidas tus etiquetas de cursiva o tus guiones de diálogo. Ese último punto importa: esto es un reajustador de tiempos, no un limpiador, y no alterará tu texto en absoluto.
También lee un archivo WebVTT, y conviene saberlo porque el resultado no es el que espera un usuario desprevenido. Pega un .vtt: la herramienta encuentra los subtítulos, tira la línea de encabezado WEBVTT, tira los identificadores de subtítulo y cualquier ajuste situado tras la flecha, convierte el punto decimal en coma y te devuelve SubRip. Los tiempos se desplazan correctamente. Pero el archivo que vuelve ya no es WebVTT válido: el encabezado es una exigencia estricta de la especificación, y los ajustes de posición en los que quizá confiabas han desaparecido. Si querías un .vtt desplazado, este no es el camino.
Dos pequeños hechos sobre los bordes, ambos hallados dándole a la herramienta su propia salida. El lector de marcas acepta hasta tres dígitos en el campo de horas, así que una marca como 111:06:41,000 se relee sin problema; el techo está en 999:59:59,999, más allá del cual la herramienta escribiría horas que ya no sabría releer, un muro que ninguna película alcanzará. Y el desfase se redondea a milisegundos enteros en la salida, de modo que un valor de 0,0005 segundos se convierte en un movimiento de un milisegundo en vez de en nada. Ninguno molestará a una película, pero conviene conocer ambos si encadenas operaciones.
| Conflicto | Multiplicador a aplicar | Deriva por minuto | Deriva en 90 minutos | Cómo se ve al mirar |
|---|---|---|---|---|
| Desfase constante (cualquier causa) | 1,000000 — desplaza en su lugar | 0 s | 0 s | Igual de mal en el minuto 1 y en el 89: un solo desplazamiento lo arregla |
| Subtítulos a 24 fps sobre vídeo a 23,976 fps (o 30 sobre 29,97) | 1,001000 | 0,060 s | 5,4 s | Invisible durante veinte minutos, una frase fuera de sitio al final: el caso peor diagnosticado |
| Subtítulos a 25 fps sobre vídeo a 24 fps | 1,041667 | 2,500 s | 3 min 45,0 s | Los subtítulos se adelantan y la brecha se abre ya en el primer rollo |
| Subtítulos a 25 fps sobre vídeo a 23,976 fps | 1,042708 | 2,563 s | 3 min 50,6 s | El clásico conflicto PAL-cine: un segundo perdido cada 23,4 segundos |
| Subtítulos a 23,976 fps sobre vídeo a 25 fps | 0,959041 | −2,458 s | −3 min 41,2 s | El mismo conflicto al revés: los subtítulos se retrasan cada vez más |
Preguntas frecuentes
- ¿Cómo mido el desfase con precisión sin avanzar fotograma a fotograma por toda la película?
- Bastan dos mediciones, y con precisión de décimas de segundo. Busca una réplica que empiece con consonante clara cerca del principio de la película, pausa en el fotograma donde arranca el sonido y lee la posición del reproductor; réstale la marca de inicio del subtítulo. Haz lo mismo con una réplica cercana al final. Si los dos desfases coinciden, aplica su media y ya está. Aquí importa más la constancia del método que la precisión: mide siempre el mismo instante —el comienzo del sonido, no el momento en que lo reconoces—, porque un error de tiempo de reacción de medio segundo en una de las dos mediciones basta para inventar una deriva inexistente. Si tu reproductor solo muestra segundos enteros, usa uno que muestre décimas: la diferencia entre 3 y 3,5 segundos de desfase se ve en pantalla.
- Mis subtítulos van perfectos al principio y unos cuatro minutos adelantados al final. ¿Qué es eso?
- Es un conflicto de cadencia, y su tamaño dice cuál. Unos cuatro minutos de deriva a lo largo de un largometraje es la firma de subtítulos a 25 fps sobre un vídeo a 23,976 fps: el multiplicador es 1,042708, la deriva 2,5625 segundos por minuto, y sobre una línea de tiempo de subtítulos de 90 minutos suma 230,6 segundos —3 minutos 50,6 segundos, o 3 minutos 41,2 segundos si lo mides contra el reloj del vídeo. Un desplazamiento no puede repararlo, porque suma el mismo número a cada marca mientras que tu error es proporcional a la marca. Lo que hace falta es multiplicar cada marca por 1,042708, es decir conversión de cadencia y no desplazamiento temporal. Esta herramienta no lo hace, y aplicar un desplazamiento solo moverá de un extremo de la película al otro el punto donde los subtítulos caen bien.
- ¿Qué pasa con los subtítulos que un desplazamiento negativo empuja antes de 00:00:00,000?
- Se eliminan, y la herramienta dice cuántos. La decisión se toma sobre la marca de fin, de ahí dos resultados. Un subtítulo a caballo del cero conserva su final real: desplazar 00:00:01,000 --> 00:00:04,000 en −2,5 segundos devuelve 00:00:00,000 --> 00:00:01,500, que se muestra desde el primer fotograma y dura segundo y medio de menos. Un subtítulo cuyo final también ha pasado antes del cero no tiene nada que mostrar y se descarta; los supervivientes se renumeran desde 1, de modo que la salida es un archivo válido más corto y no uno relleno de entradas vacías. Una línea ámbar sobre la salida lleva los recuentos —cuántos subtítulos se eliminaron, cuántos empiezan ahora en el origen— y si el desplazamiento lo borra todo, lo dice en vez de entregarte un archivo. Nunca se escriben tiempos negativos. En la práctica esto convierte un desplazamiento negativo grande en una forma viable de recortar una introducción: compara el número eliminado con los subtítulos que pensabas perder antes de sobrescribir nada.
- ¿Puedo pegar un archivo WebVTT, o solo acepta SubRip?
- Lee WebVTT, pero te devuelve SubRip, y esa conversión no es gratis. WebVTT es una especificación del W3C: el archivo debe abrir con una línea WEBVTT, las marcas usan un punto antes de la fracción de tres dígitos y no una coma, el campo de horas es opcional, y una línea de tiempos puede llevar una lista de ajustes tras la flecha —alineación, posición, región— además de un identificador opcional en la línea de encima. Esta herramienta encuentra los tiempos, los desplaza y escribe SubRip: el encabezado desaparece, los identificadores desaparecen, los ajustes desaparecen y el punto se vuelve coma. Si tu origen era WebVTT con estilo o posicionado, todo eso se descarta sin avisar. Si lo que quieres en realidad es texto plano a partir de un archivo de subtítulos y no un archivo reajustado, el conversor de VTT a TXT es la vía honesta.
- ¿Existe una especificación oficial de SubRip con la que comprobar mi archivo?
- No, y conviene saberlo antes de discutir con una herramienta sobre qué es válido. El formato es lo que producía el programa SubRip original, más lo que los reproductores decidieron luego tolerar. La Biblioteca del Congreso lo describe como parcialmente documentado y mal normalizado, y no lista ningún documento de especificación; su ficha da la forma del código de tiempo como horas:minutos:segundos,milisegundos, con la coma, y la flecha como dos guiones y un signo de mayor que. Tampoco existe un tipo de medio registrado, mientras que WebVTT tiene text/vtt registrado en la IANA. En la práctica esto significa que la codificación es una conjetura —el programa original salía por defecto en una página de códigos de Windows, así que cualquier analizador debe intentar detectar el juego de caracteres— y que cuando dos herramientas discrepan sobre tu archivo, ninguna se equivoca respecto de una norma. Prueba en el reproductor que vayas a usar de verdad.
Artículos que podrían interesarte
Todas las guías →Herramientas relacionadas
SubRip no tiene especificación. La Biblioteca del Congreso lo describe como parcialmente documentado y mal normalizado, así que lo que cuenta como archivo .srt válido lo decide el reproductor, el codificador o la plataforma que lo lee, y dos de ellos acabarán discrepando. Todo lo que se describe aquí se comprobó contra la salida real de la herramienta, no contra una norma, porque este formato no tiene ninguna. WebVTT es distinto —tiene una especificación publicada por el W3C— pero sigue siendo un Candidate Recommendation Draft y no una recomendación terminada. Guarda el archivo original, prueba el convertido en el reproductor o el gestor de subida que de verdad vayas a usar antes de tirar nada, y trata cualquier afirmación sobre lo que hacen «todos los reproductores», incluidas las de esta página, como algo que verificar en el tuyo.
Fuentes
- Library of Congress — Sustainability of Digital Formats, format description FDD000569, SubRip Subtitle format (SRT): records the format as "Partial documented" and "not well standardized", lists no specification document, gives the timecode as hours:minutes:seconds,milliseconds (00:00:00,000) and the separator as two hyphens plus a right angle bracket, and notes that SRT has no character-encoding standard so a parser must attempt charset detection
- W3C — WebVTT: The Web Video Text Tracks Format, Candidate Recommendation Draft of 20 May 2026 — the file must begin with the string WEBVTT after an optional byte order mark, the timestamp fraction is separated by a U+002E FULL STOP and carries three digits, the hours component is optional and takes two or more digits, and a cue timings line may be followed by a cue settings list
- FFmpeg — ffmpeg-utils documentation, "Video rate" section: the exact rational values behind the named rates — film = 24/1, pal = 25/1, ntsc-film = 24000/1001, ntsc = 30000/1001 — which are the numbers the drift arithmetic in this article is computed from
- IANA — Media type registration for text/vtt, registered 14 October 2019 with the W3C WebVTT specification as its reference — the contrast with SubRip, which has no registered media type
¿Has detectado un error en este artículo?