네 가지 뒤집기의 차이
글자 순서 반전은 문자열 전체를 끝에서부터 거꾸로 다시 씁니다. 줄바꿈과 공백도 글자로 취급되므로 여러 줄을 넣으면 줄의 순서도 같이 뒤집힙니다. 단어 순서 반전은 공백으로 나뉜 덩어리의 순서만 바꾸고 각 덩어리 안의 글자는 그대로 둡니다. 줄 순서 반전은 각 줄 내용은 그대로 두고 위아래 순서만 바꿉니다(로그 파일을 최신순으로 읽거나 목록을 거꾸로 쓸 때 편합니다). 거꾸로 텍스트는 알파벳과 숫자를 위아래가 뒤집힌 모양의 유니코드 문자에 대응시킨 뒤 순서를 반전해, 종이를 180도 돌려 본 것처럼 보이게 합니다.
입력 → 출력 예시 (코드로 계산한 값)
| 경우 | 방식 | 입력 (줄바꿈은 ↵) | 출력 |
|---|---|---|---|
| 영문+기호 | 글자 순서 | Hello, World! | !dlroW ,olleH |
| 한글 문장 | 글자 순서 | 오늘 하루도 수고했어요 | 요어했고수 도루하 늘오 |
| 한글 문장 | 단어 순서 | 오늘 하루도 수고했어요 | 수고했어요 하루도 오늘 |
| 두 줄 입력 | 단어 순서 | a b↵c d | d c↵b a |
| 두 줄 입력 | 줄 순서 | a b↵c d | c d↵a b |
| 영문 | 거꾸로 텍스트 | Hello 123 | ƐᄅƖ ollǝH |
| 이모지 섞임 | 글자 순서 | a😀b | b😀a |
네 번째와 다섯 번째 행을 비교해 보세요. 두 줄 입력에 단어 순서 반전을 적용하면 줄바꿈도 "공백류 덩어리"로 취급되어 위치가 바뀌고, 결과적으로 줄 순서와 줄 안의 단어 순서가 모두 뒤집힙니다. 줄 안의 단어 순서는 유지하고 싶다면 "줄 순서 반전"을 사용하세요. 영문 거꾸로 변환 예시에서 숫자 1은 Ɩ, 2는 ᄅ, 3은 Ɛ로 바뀌고 순서가 뒤집혀 읽히기 때문에, 원문의 마지막 글자가 맨 앞에 옵니다.
이모지·한글·결합 문자: 왜 "글자" 정의가 중요한가
자바스크립트의 단순한 뒤집기(split('').reverse())는 UTF-16 단위로 쪼개 😀 같은 문자를 반으로 갈라 깨진 글자(�)를 만듭니다. 코드 포인트 단위(Array.from)는 이를 막지만, 가족 이모지처럼 여러 코드 포인트를 ZWJ로 이은 이모지나 e와 악센트 결합 문자는 여전히 분해됩니다. 이 도구는 브라우저에 Intl.Segmenter가 있으면 사용자가 하나의 글자로 인식하는 단위(자소 클러스터)로 뒤집고, 없으면 코드 포인트 단위로 뒤집습니다. 아래는 같은 입력을 두 방식으로 뒤집었을 때의 차이입니다.
| 경우 | 이 도구(자소 단위) | 코드 포인트 단위 뒤집기 |
|---|---|---|
| 가족 이모지 (x+👨👩👧+y) | y👨👩👧x (유지) | y👧👩👨x (ZWJ로 이어진 구성원 순서가 역전되어 다른 모양이 되거나 분리됨) |
| 결합 악센트 (cafe + U+0301) | éfac (악센트가 e에 유지) | ́efac (악센트가 엉뚱한 글자에 붙음) |
| 자모 분리형 한글 (한글 NFD) | 글한 (음절 유지) | ᆯᅳᄀᆫᅡᄒ (자모가 뒤섞임) |
한글을 뒤집으면 음절 단위로 뒤집힙니다. 음절을 자모로 분해해 뒤집는 것은 일반적인 목적이 아니므로 지원하지 않습니다. 또한 오른쪽에서 왼쪽으로 쓰는 아랍어·히브리어는 화면에 그려지는 방향이 별도의 규칙(양방향 알고리즘)으로 결정되므로, 뒤집은 결과가 화면에서 어떻게 보이는지는 환경마다 다를 수 있습니다.
같은 글자를 세는 세 가지 단위
"글자 수"는 세는 단위에 따라 달라집니다. 자바스크립트의 .length는 UTF-16 코드 유닛, Array.from은 코드 포인트, Intl.Segmenter는 사람이 하나로 인식하는 자소 클러스터를 셉니다. 아래 표는 이 페이지를 만들 때 같은 문자열을 세 방식으로 센 값입니다(빌드 환경의 유니코드 데이터 기준이며, 아주 새로운 이모지는 브라우저 버전에 따라 다르게 세어질 수 있습니다).
| 문자열 | UTF-16 길이 | 코드 포인트 | 자소 클러스터 |
|---|---|---|---|
| 영문 Hello | 5 | 5 | 5 |
| 한글 음절 "한글" | 2 | 2 | 2 |
| 자모 분리형 "한글"(NFD) | 6 | 6 | 2 |
| 이모지 😀 | 2 | 1 | 1 |
| 피부색 변형 👍🏽 | 4 | 2 | 1 |
| 국기 🇰🇷 | 4 | 2 | 1 |
| 가족 이모지 | 8 | 5 | 1 |
| e + 결합 악센트 | 2 | 2 | 1 |
이 표에서 자소 클러스터 열이 1인 줄은 모두 "화면에서 한 글자로 보이는 것"입니다. 가족 이모지는 UTF-16으로는 8, 코드 포인트로는 5개로 쪼개지지만 한 덩어리로 뒤집혀야 하므로, 이 도구가 결과 아래에 보여 주는 글자 수 칩도 같은 자소 단위로 센 값입니다. 반면 자모 분리형 "한글"은 자소 클러스터가 2개로 세어져 음절 단위로 취급됩니다. 이 계산 방식을 알면 문자 수 제한이 있는 입력란(예: 20자 제한)에 붙여 넣을 때 칩의 숫자와 해당 서비스의 숫자가 왜 다를 수 있는지도 이해할 수 있습니다. 서비스마다 세는 단위가 다르기 때문입니다.
회문(팰린드롬) 확인
글자 순서 반전 결과가 원문과 같으면 회문입니다. 이 도구는 결과가 원문과 동일하면 안내 문구로 알려 줍니다. 예를 들어 "level"이나 "기러기"는 뒤집어도 같습니다. 다만 공백·구두점·대소문자를 무시하고 판정하는 문장 회문(예: "A man, a plan, a canal: Panama")은 단순 반전으로는 같지 않으므로 회문(팰린드롬) 판별기를 쓰세요.
거꾸로 텍스트의 원리와 한계
거꾸로 텍스트는 글꼴을 뒤집는 것이 아니라, 모양이 비슷한 다른 문자를 가져다 쓰는 방식입니다. a는 ɐ(라틴 소문자 뒤집힌 a), e는 ǝ, t는 ʇ, 대문자 A는 수학 기호 ∀, 숫자 6과 9는 서로 맞바꿉니다. 그래서 한계가 있습니다. 한글과 한자는 대응 문자가 없어 원형 그대로 남고(순서만 뒤집힘), 일부 문자(l, o, s, x, z)는 뒤집어도 같은 모양이라 그대로입니다. 글꼴이 해당 유니코드 문자를 지원하지 않으면 네모(□)로 보일 수 있고, 검색엔진이나 스크린 리더는 이를 일반 영문으로 읽지 못하므로 중요한 안내문에는 쓰지 마세요.
거꾸로 텍스트 대응표 규모
이 도구의 거꾸로 텍스트 대응표에는 문자 68개가 등록되어 있고, 그중 51개가 다른 문자로 바뀌며 17개(0 8 l o s x z B D H I N O Q S X Z)는 뒤집어도 같은 모양이라 그대로 남습니다. 대응표에 없는 문자(한글, 한자, 공백, 다른 기호)는 변환 없이 순서만 뒤집힙니다. 대문자 K와 소문자 k가 모두 ʞ로 대응되므로, 거꾸로 변환한 결과만 보고는 원래 대문자였는지 소문자였는지 구분할 수 없습니다. 또 이 방식은 글자 하나하나를 바꾸는 방식이라 코드 포인트 단위로 처리하며, 결합 악센트가 붙은 글자는 다른 반전 방식과 달리 악센트가 떨어질 수 있습니다.
사용 시나리오
로그를 최신순으로 읽고 싶을 때. 오래된 것부터 쌓인 로그 다섯 줄을 붙여 넣고 "줄 순서 반전"을 누르면 마지막 줄이 맨 위로 올라옵니다. 각 줄의 글자는 건드리지 않으므로 타임스탬프가 그대로 유지됩니다. 줄 수 칩은 입력과 같아야 정상입니다.
방탈출·퀴즈 힌트를 만들 때. 정답 단어를 글자 순서 반전으로 뒤집어 힌트로 제시하면 풀이하는 사람이 거울에 비추듯 읽어야 합니다. 한글 정답도 음절 단위로 뒤집히므로 읽기 쉬운 편이고, 난이도를 올리려면 여기에 단어 순서 반전을 한 번 더 겹치면 됩니다. 다만 뒤집기는 암호화가 아니므로 이 방식으로 비밀번호를 숨기면 안 됩니다.
알고리즘 연습 결과를 검증할 때. 문자열 뒤집기 함수를 직접 구현한 뒤, 같은 입력을 이 도구에 넣어 결과를 비교하면 이모지나 결합 문자 처리 차이를 바로 확인할 수 있습니다. 위 단위 표에서 가족 이모지처럼 자소 클러스터가 1이 되는 입력이 좋은 시험 문자열입니다.
흔한 실수
- "단어 순서 반전"을 문장 번역처럼 기대하는 경우: 단어 안의 글자와 문장부호는 그대로 붙어 이동합니다. 문장 끝 마침표가 붙은 단어는 마침표와 함께 맨 앞으로 갑니다.
- 여러 줄을 글자 순서로 뒤집고 줄 순서만 바뀌길 기대하는 경우: 각 줄의 글자도 같이 뒤집힙니다. 줄 순서만 필요하면 줄 순서 반전을 쓰세요.
- 거꾸로 텍스트를 한글에 쓰는 경우: 한글은 변환되지 않습니다.
- 연속된 공백이나 탭이 있는 텍스트를 단어 순서로 뒤집는 경우: 공백 덩어리도 하나의 단위로 이동해 간격이 뒤바뀌어 보입니다.
결과를 검증하는 방법
글자 순서 반전이 올바른지는 가장 짧은 입력으로 확인할 수 있습니다. "abc"는 "cba"가 되어야 하고, 이모지 하나를 가운데 넣은 "a😀b"는 "b😀a"가 되어야 합니다. 이모지가 네모나 물음표 모양으로 보이면 사용 중인 글꼴이 해당 이모지를 지원하지 않는 것이지 변환 오류가 아닐 수 있으니 다른 앱에 붙여 확인해 보세요. 결과의 "글자 수" 칩은 글자 순서·단어 순서·줄 순서 반전에서 원문과 같아야 하며, 숫자가 다르면 입력에 보이지 않는 문자가 섞여 있을 가능성이 있습니다. 거꾸로 텍스트에서는 따옴표(") 하나가 쉼표 두 개로 바뀌기 때문에 글자 수가 늘 수 있습니다.
개인정보·보안
뒤집기는 모두 이 페이지의 스크립트가 브라우저 안에서 수행하고, 입력·결과를 서버로 보내는 코드는 없습니다. 복사 버튼은 클립보드 기능만 사용합니다. 뒤집기는 암호화가 아니라 누구나 되돌릴 수 있는 변환이므로 비밀번호나 개인정보를 "가리는" 용도로 쓰면 안 됩니다.
활용 아이디어
글자 반전은 게시판 장난 문구, 퀴즈·방탈출 암호 힌트, 회문 확인, 간단한 문자열 처리 알고리즘 연습(결과 검증)에 쓰입니다. 줄 순서 반전은 시간순으로 쌓인 로그나 채팅을 최신순으로 바꿔 볼 때 유용합니다. 결과를 다른 형태로 이어서 가공하려면텍스트 대소문자/케이스 변환기나유니코드 문자 정보 도구로 문자 구성을 확인해 보세요.
관련 도구
자주 묻는 질문
한글도 거꾸로(업사이드다운) 텍스트로 만들 수 있나요?
한글은 위아래로 뒤집힌 모양의 유니코드 문자가 따로 없어 변환되지 않습니다. 영문 알파벳과 숫자, 일부 기호에만 적용되고 한글은 원래 모양으로 남으며 순서만 반전됩니다.
단어 순서 반전은 문장부호도 함께 이동하나요?
네. 공백으로 나뉜 덩어리를 한 단위로 보므로 단어에 붙은 쉼표나 마침표는 그 단어와 함께 움직입니다. 줄바꿈과 연속 공백도 하나의 덩어리로 위치가 바뀝니다.
이모지를 뒤집으면 깨지지 않나요?
이 도구는 이모지 한 개를 한 글자로 취급해 뒤집으므로 가족·피부색 변형 이모지도 유지됩니다. 다만 Intl.Segmenter가 없는 오래된 브라우저에서는 코드 포인트 단위로 처리되어 일부 복합 이모지가 분해될 수 있습니다.
입력이 아주 길어도 되나요?
입력 길이에 별도 제한은 두지 않았습니다. 다만 자소 단위로 쪼개는 작업은 단순 뒤집기보다 느리고 처리 시간은 기기와 브라우저에 따라 다르므로, 아주 큰 텍스트에서 화면이 잠시 멈추면 나눠서 처리하세요. 빈 입력은 "원본 텍스트가 비어 있습니다" 안내와 함께 빈 결과가 나옵니다.
결과의 글자 수가 다른 서비스의 글자 수와 다른 이유는 무엇인가요?
이 도구는 사람이 하나로 보는 단위(자소 클러스터)로 세고, 다른 서비스는 UTF-16 길이나 바이트 수로 세는 경우가 있습니다. 이모지나 자모 분리형 한글이 섞이면 숫자가 달라집니다.
줄바꿈이 윈도우(CRLF) 방식인 텍스트도 되나요?
줄 순서 반전은 CRLF, CR, LF를 모두 줄바꿈으로 인식하고 결과는 LF로 통일해 출력합니다. 글자 순서 반전에서는 CRLF가 하나의 단위로 유지됩니다.
마지막 줄 끝에 빈 줄이 있으면 줄 순서 반전 결과가 어떻게 되나요?
끝의 빈 줄도 하나의 줄로 세어져 반전 결과의 맨 앞에 빈 줄이 생깁니다. 필요 없다면 입력 끝의 줄바꿈을 지운 뒤 변환하세요.
뒤집은 텍스트를 다시 원래대로 되돌릴 수 있나요?
글자 순서 반전 결과를 다시 입력창에 넣고 한 번 더 반전하면 원문이 됩니다. 거꾸로 텍스트는 l, o, s, x, z 같은 대칭 문자와 대문자 K/소문자 k처럼 중복 대응이 있어 완전히 같은 방식으로 역변환되지 않을 수 있습니다.