Herramienta de Inversión de Cadenas
Invierte cadenas de texto rápidamente con múltiples modos de inversión
Seleccionar Modo de Inversión
¿Qué es la Inversión de Cadenas?
String Reverse invierte el orden de los caracteres de un texto y produce la entrada en sentido contrario. La idea es simple, pero el texto real puede ser más complejo que invertir letras ASCII: caracteres Unicode, emojis, acentos combinados, saltos de línea, espacios y escrituras de derecha a izquierda pueden comportarse distinto según cómo se cuenten los caracteres. La herramienta sirve para experimentos de texto, pruebas de palíndromos, pequeños juegos, depuración de cadenas, enseñanza y detección de espacios ocultos o sufijos. No es un método criptográfico ni una forma segura de ocultar datos sensibles. Si hay emojis compuestos o caracteres con varios code points, conviene revisar la salida.
Cómo usar
Operaciones básicas
- Escribe o pega el texto a invertir en el cuadro de entrada izquierdo
- Selecciona un modo de inversión (invertir todo, invertir palabras, etc.)
- El lado derecho muestra automáticamente el resultado invertido
- Haz clic en 'Copiar' para copiar el resultado o en 'Intercambiar' para usarlo como entrada y seguir trabajando
Manejo de texto
- Invertir texto plano es sencillo, pero los emojis, los caracteres combinables y las escrituras de derecha a izquierda pueden dar resultados visuales inesperados.
- Para código, URL o datos estructurados, invierte solo el segmento deseado en lugar de todo el texto a ciegas.
Casos de uso
Principio técnico
La inversión a nivel de carácter usa la sintaxis spread: [...str].reverse().join(''). El operador spread itera la cadena como una secuencia de puntos de código Unicode, lo que maneja correctamente los caracteres fuera del Plano Multilingüe Básico que ocupan dos unidades de código UTF-16 (pares de sustitución). La alternativa ingenua, str.split('').reverse().join(''), divide en unidades de código y corrompe cualquier emoji como el cohete de fiesta (U+1F389), el cohete (U+1F680) o cualquier carácter por encima de U+FFFF. Los clusters de grafemas añaden otra capa. Un carácter percibido por el usuario como la e con acento agudo combinante (a + ́), un emoji de bandera construido a partir de dos indicadores regionales, o un emoji de familia unido por ZWJ (U+1F468 U+1F469 U+1F467) ocupa varios puntos de código. La inversión por punto de código aún reordena las piezas, por lo que el emoji de familia se convierte en tres figuras humanas separadas y el acento se separa de la letra base. Intl.Segmenter con granularidad 'grapheme' es la forma compatible con el estándar de iterar clusters de grafemas y mantener estas secuencias intactas durante la inversión. A nivel de operación, el coste es O(n) en el número de segmentos, donde n es la longitud de la cadena en puntos de código o grafemas según la segmentación elegida. Invertir dos veces devuelve la cadena original, lo que hace que la función sea útil para comprobaciones de palíndromos. Para entradas con mucho Unicode, la normalización NFC (str.normalize('NFC')) antes de la inversión colapsa secuencias de base + combinante en formas precompuestas cuando existe una, reduciendo sorpresas en la salida. Las escrituras de derecha a izquierda como el árabe y el hebreo se almacenan en orden lógico pero se renderizan de derecha a izquierda, por lo que una cadena árabe invertida sigue pareciendo invertida aunque el orden de los datos se haya volteado.
- Inversión por punto de código: [...str].reverse().join('') itera por punto de código y preserva los pares de sustitución por encima de U+FFFF (la mayoría de emojis)
- Trampa ingenua de bytes: str.split('').reverse().join('') divide en unidades de código UTF-16 y corrompe cualquier carácter por encima de U+FFFF
- Clusters de grafemas: Intl.Segmenter({ granularity: 'grapheme' }) mantiene intactas las marcas combinantes, secuencias de banderas y emojis ZWJ
- Inversión a nivel de palabra: split(/\s+/), reverse, join(' '); preserva internamente cada palabra y solo invierte el orden
- Complejidad: O(n) donde n es el número de segmentos; invertir dos veces devuelve la cadena original
- Normalización NFC: str.normalize('NFC') pliega secuencias combinantes en formas precompuestas antes de la inversión cuando existe una
- Texto bidi: el árabe y el hebreo se almacenan en orden lógico; la dirección renderizada es la capa BiDi del navegador, separada de la inversión de datos
Ejemplos
Invertir todos los caracteres (básico)
Modo: Invertir todo
Entrada: hello world
Salida: dlrow olleh
Entrada: 12345
Salida: 54321
Entrada: A man a plan a canal Panama
Salida: amanaP lanac a nalp a nam AInvertir palabras vs invertir cada palabra
Entrada: The quick brown fox
Modo: Invertir palabras (solo el orden de las palabras)
-> fox brown quick The
Modo: Invertir cada palabra (las letras dentro de cada palabra)
-> ehT kciuq nworb xofComprobación de palíndromo
Entrada: racecar
Invertir todo -> racecar (igual, es palíndromo)
Entrada: level
Invertir todo -> level (palíndromo)
Entrada: hello
Invertir todo -> olleh (NO es palíndromo)Seguridad con Unicode y emoji
Entrada: cafe (con acento agudo combinante en la e)
Inversión ingenua: efac (el acento se desplaza de la letra)
Consciente de grafemas: efac (el acento permanece adjunto)
Entrada: family-emoji-ZWJ-sequence
Inversión ingenua: se rompe en 3 emoji separados
Esta herramienta: mantiene el clúster intactoInvertir el orden de líneas en un archivo de log
Modo: Invertir orden de líneas
Entrada:
2026-06-10 09:00 startup
2026-06-10 09:05 login ok
2026-06-10 09:10 query slow
Salida (más reciente primero):
2026-06-10 09:10 query slow
2026-06-10 09:05 login ok
2026-06-10 09:00 startupPreguntas frecuentes
¿Qué hace invertir una cadena?
Devuelve la entrada con los caracteres en orden inverso: 'hello' → 'olleh'. Sirve para cifrados de juguete tipo ROT-13, comprobación de palíndromos, generar texto reflejado o demos rápidas de manipulación de arrays en tutoriales.
¿Invierte correctamente emojis y caracteres CJK?
La mayoría de caracteres CJK y los emojis básicos funcionan bien porque la página usa el operador de propagación ([...text]), que gestiona los pares subrogados de UTF-16. Las secuencias de emojis complejas (familias, banderas, combinaciones con tono de piel) pueden romperse al invertir, ya que están formadas por varios puntos de código que se separan.
¿Qué pasa con los acentos combinantes?
Los caracteres formados por una letra base más marcas combinantes (e + acento agudo → é) se invierten como un único grafema. La entrada en forma descompuesta puede requerir una normalización previa: la página puede aplicar NFC al introducir el texto. El resultado visible para lenguaje natural es correcto en cualquier caso.
¿En qué se diferencia invertir de reflejar?
Invertir es orden de caracteres: 'AB' → 'BA'. Reflejar es un giro visual: 'AB' mostrado como ⟨ƎA⟩, lo que requiere una transformación CSS o caracteres especiales. La página invierte el orden de caracteres, no hace un espejo de píxeles. Para efectos de texto reflejado, usa CSS scaleX(-1).
¿Conserva los saltos de línea?
Por defecto se invierte toda la entrada incluyendo los saltos de línea, así que la última línea queda primero. Activa 'invertir cada línea por separado' para invertir dentro de cada línea manteniendo el orden de líneas, útil para efectos visuales en texto multilínea.
¿El texto invertido siempre se puede leer?
Los idiomas que se leen de izquierda a derecha (inglés, chino, japonés) se vuelven ilegibles al invertirlos. Los idiomas de derecha a izquierda (árabe, hebreo) pueden parecer algo legibles, pero también se rompen porque el algoritmo bidireccional choca con la inversión. La inversión es sobre todo un ejercicio de código o un acertijo, no una transformación de texto real.
¿Se sube mi texto?
No. La inversión se ejecuta en tu navegador. El texto pegado no se transmite.