두 글에서 바뀐 곳을 줄과 글자로 찾아 줍니다
텍스트 비교기는 원본과 수정본을 줄 단위로 맞춘 뒤, 수정본에 새로 생긴 줄은 추가, 원본에만 있던 줄은 삭제, 양쪽에 대응하는 줄이 있지만 내용이 달라진 줄은 수정으로 보여 줍니다. 수정 줄 안에서는 다시 글자나 단어 단위로 비교해서, '10월 27일 월요일'이 '10월 28일 화요일'로 바뀌었다면 '7'과 '8', '월'과 '화'처럼 실제로 바뀐 부분만 진한 바탕으로 강조합니다.
위 작업면에는 처음부터 공지 수정본 예시가 들어 있어 수정 3줄, 추가 1줄, 삭제 1줄, 유사도 78.1%가 바로 보입니다. 두 칸의 글을 지우고 내 글을 붙여 넣으면 입력하는 대로 다시 비교하며, 글과 파일은 이 브라우저 안에서만 처리합니다.
텍스트 비교가 필요한 때
두 글을 눈으로 번갈아 읽으면 몇 글자짜리 수정은 놓치기 쉽습니다. 특히 숫자 하나, 조사 하나가 뜻을 바꾸는 글이라면 기계적으로 대조하는 편이 빠르고 정확합니다.
- 퇴고·첨삭 결과를 확인할 때: 다른 사람이 고쳐 준 원고, 맞춤법 검사기를 거친 글, 생성형 AI가 다듬은 문장에서 어디가 얼마나 바뀌었는지 확인합니다. 의도하지 않은 고침이 섞였는지도 함께 찾을 수 있습니다.
- 계약서·약관·규정의 개정본을 받았을 때: 기간, 금액, 날짜처럼 숫자만 살짝 바뀐 조항이 가장 위험합니다. 글자 강조로 보면 '2027년'이 '2028년'으로 바뀐 한 글자까지 드러납니다.
- 공지·보도자료·안내문을 다시 보낼 때: 수정본을 보내기 전에 바뀐 줄만 모아 '변경 사항'으로 정리하거나, 이전에 보낸 글과 달라진 점을 받는 사람에게 설명할 때 씁니다.
- 번역·자막·데이터 목록을 검수할 때: 같은 원문으로 만든 두 번역본, 자막 파일의 두 버전, 내보내기 한 목록 두 개를 비교해 빠지거나 더해진 줄을 찾습니다.
- 설정 파일이나 코드 조각을 비교할 때: 개발 도구가 없는 컴퓨터에서도 두 버전의 차이를 diff 형식으로 바로 얻을 수 있습니다. 들여쓰기만 바뀐 줄은 공백 무시로 걸러 냅니다.
쓰는 법
- A 원본 칸에 이전 글을, B 수정본 칸에 고친 글을 붙여 넣습니다. 각 칸의 파일 단추로 텍스트 파일이나 DOCX를 열거나, 파일을 칸 위로 끌어 놓아도 됩니다.
- 입력하는 즉시 요약과 결과판이 바뀝니다. 순서를 거꾸로 넣었다면 두 칸 사이의 ⇄ 단추로 원본과 수정본을 맞바꿉니다.
- 띄어쓰기·들여쓰기 차이를 빼려면 공백 무시를, 영문 대소문자 차이를 빼려면 대소문자 무시를 켭니다.
- 결과판에서 나란히와 한 칸 보기, 글자와 단어 강조를 고릅니다. 긴 글은 바뀐 곳만을 켜고 위·아래 화살표로 변경 위치를 하나씩 넘기거나, 오른쪽 변경 지도에서 표시를 눌러 이동합니다.
- 결과를 남기려면 diff 복사나 저장을 누릅니다. 넓은 화면에서 보려면 전체 화면을 씁니다.
결과 읽는 법
나란히 보기에서는 왼쪽이 원본, 오른쪽이 수정본이고, 수정 줄은 같은 행에 마주 놓입니다. 한 칸 보기에서는 수정 전 줄(−) 바로 아래에 수정 후 줄(+)이 이어집니다. 줄 번호는 각 문서의 실제 줄 번호입니다.
| 표시 | 뜻 |
|---|---|
| ~ 수정 | 양쪽에 대응하는 줄이 있고 내용이 달라진 줄입니다. 원본 쪽은 붉은 바탕, 수정본 쪽은 초록 바탕이며 줄 안의 바뀐 부분만 더 진합니다. |
| + 추가 | 수정본에만 있는 줄입니다. 나란히 보기에서 원본 쪽 칸은 빗금으로 비워 둡니다. |
| − 삭제 | 원본에만 있는 줄입니다. 줄 안에서 지워진 글자는 진한 바탕에 취소선을 그어 색을 구분하기 어려워도 알아볼 수 있게 했습니다. |
| = 같음 | 두 글에서 같은 줄입니다. 바뀐 곳만 보기를 켜면 변경 앞뒤 두 줄만 남기고 접힙니다. |
| ≈ | 공백 무시나 대소문자 무시 때문에 같게 본 줄입니다. 글자는 다르지만 선택한 기준으로는 같습니다. |
| · → ⍽ □ | 공백만 바뀐 자리를 보이게 한 기호입니다. 차례대로 띄어쓰기, 탭, 줄바꿈 없는 공백, 전각 공백입니다. |
| 200B | 폭 없는 공백(U+200B)처럼 화면에 보이지 않는 글자가 바뀐 곳에 끼어 있으면 그 글자의 유니코드 번호를 작은 상자로 보입니다. |
요약의 유사도 고리는 두 글이 글자 기준으로 얼마나 같은지를, 막대는 같음·수정·삭제·추가 줄의 비율을 보여 줍니다. 결과판 오른쪽의 좁은 띠는 변경 지도입니다. 문서 전체 높이에 바뀐 위치를 색으로 찍어 두므로, 긴 글에서 변경이 어디에 몰려 있는지 한눈에 보고 눌러서 바로 갈 수 있습니다.
예시로 보는 비교 결과
작업면의 예시 단추 세 개를 누르면 아래 결과가 그대로 나옵니다. 줄 수는 결과판의 행 수가 아니라 각 분류에 들어간 줄의 수이고, 유사도는 소수 첫째 자리에서 내림한 값입니다.
| 예시 | 수정 | 추가 | 삭제 | 같음 | 유사도 | 읽는 법 |
|---|---|---|---|---|---|---|
| 공지 수정본 | 3 | 1 | 1 | 3 | 78.1% | 날짜·요일·시간·장소를 고친 줄, 새로 넣은 화상 참석 안내, 뺀 회의록 안내가 함께 있습니다. |
| 계약 조항 | 4 | 1 | 0 | 0 | 84.3% | 네 조항이 모두 수정이고 제7조가 추가입니다. 숫자만 바뀐 줄은 바뀐 자리만 진한 바탕으로 보입니다. |
| 설정 파일(그대로) | 5 | 1 | 0 | 2 | 81.4% | 들여쓰기를 2칸에서 4칸으로 바꿔 괄호 두 줄을 뺀 모든 줄이 수정으로 나옵니다. |
| 설정 파일(공백 무시) | 3 | 1 | 0 | 4 | 85.1% | 들여쓰기만 다른 두 줄을 같게 보므로 값이 바뀐 세 줄과 추가된 한 줄만 남습니다. |
설정 파일 예시는 같은 글이라도 비교 기준에 따라 결과가 크게 달라진다는 점을 보여 줍니다. 들여쓰기 규칙을 바꾼 파일을 그대로 비교하면 거의 모든 줄이 수정으로 나와 실제로 바뀐 값이 묻힙니다.
공백 무시와 대소문자 무시는 언제 켜나
공백 무시는 줄 안의 띄어쓰기·탭·전각 공백을 모두 빼고 비교합니다. 대소문자 무시는 영문 등 대소문자가 있는 글자를 소문자로 맞춰 비교합니다. 두 기준 모두 줄바꿈은 그대로 두므로 줄이 나뉘거나 합쳐진 차이는 계속 보입니다. 표에서 ·는 공백 한 칸입니다.
| 원본 줄 | 수정본 줄 | 기본 | 공백 무시 | 대소문자 무시 | 둘 다 | 차이 |
|---|---|---|---|---|---|---|
서울·부산 | 서울부산 | 수정 | 같음 | 수정 | 같음 | 띄어쓰기 한 칸 차이입니다. |
··"port":·8080, | ····"port":·8080, | 수정 | 같음 | 수정 | 같음 | 들여쓰기 2칸과 4칸입니다. |
끝·공백· | 끝·공백 | 수정 | 같음 | 수정 | 같음 | 줄 끝에 남은 공백 한 칸입니다. |
Report | report | 수정 | 수정 | 같음 | 같음 | 영문 첫 글자의 대소문자만 다릅니다. |
Seoul·Station | seoul··station | 수정 | 수정 | 수정 | 같음 | 대소문자와 공백 수가 함께 다릅니다. |
띄어쓰기 자체를 교정하는 중이라면 공백 무시를 끄고 보아야 합니다. 비밀번호, 파일 경로, 프로그램의 변수 이름처럼 대소문자를 구분하는 값을 검토할 때도 대소문자 무시는 끄는 편이 안전합니다. 줄바꿈 문자(윈도우의 CRLF와 맥·리눅스의 LF)와 마지막 줄 뒤의 줄바꿈 유무는 옵션과 상관없이 같게 보고, 그것만 다르면 상태 줄에 따로 알립니다.
이 도구가 차이를 찾는 방법
줄 맞추기: 두 글을 줄 목록으로 놓고, 줄의 순서를 지키면서 양쪽에 똑같이 남는 줄을 가장 많이 고릅니다. 이것은 최장 공통 부분열(LCS)을 찾는 문제이고, 원본을 수정본으로 바꾸는 데 필요한 줄 삭제·추가 횟수를 가장 적게 만드는 문제와 같습니다. 이 도구는 1986년 유진 마이어스(Eugene W. Myers)가 발표한 O(ND) 알고리즘으로 이 문제를 풉니다. N은 두 글의 줄 수 합, D는 필요한 삭제·추가 횟수이므로 고친 곳이 적을수록 빨리 끝나고, 가운데에서 경로를 나누는 방식이라 큰 문서에서도 메모리를 적게 씁니다. git diff의 기본 알고리즘도 이 방식입니다.
수정 줄 짝짓기: 같은 줄 사이에 끼인 삭제 줄과 추가 줄 덩어리 안에서, 두 글자씩 묶은 조각이 얼마나 겹치는지로 닮은 정도를 잽니다. 순서를 지키면서 닮은 정도의 합이 가장 큰 짝을 먼저 고르고, 남은 줄은 앞에서부터 짝지어 수정으로 봅니다. 그래서 고친 줄 바로 앞에 새 문장을 넣어도 새 문장은 추가, 고친 줄은 수정으로 제자리를 찾습니다.
줄 안 비교: 짝지은 두 줄을 다시 글자 또는 단어로 쪼개 같은 알고리즘으로 비교합니다. 글자는 유니코드 글자 묶음 기준이라 이모지나 조합형 한글이 반으로 갈리지 않고, 단어는 브라우저의 단어 경계 규칙을 따라 띄어쓰기가 없는 일본어도 낱말로 나눕니다. 그런 다음 바뀐 조각 사이에 낀 짧은 같은 조각을 변경에 합쳐 'brown → red'처럼 사람이 읽기 좋은 덩어리로 보입니다. 이 정리는 구글 diff-match-patch의 의미 정리(cleanupSemantic)에서 쓰는 규칙을 따릅니다.
유사도: 같은 줄과 수정 줄 안에서 같은 자리로 맞춰진 글자 수를 S, 원본과 수정본의 글자 수를 A와 B라고 하면 유사도 = 2 × S ÷ (A + B)입니다. 줄바꿈은 세지 않고, 공백 무시를 켜면 공백도 빼고 셉니다. 두 글이 완전히 같을 때만 100%로 표시하고, 아주 조금이라도 다르면 내림해서 100%로 올라가지 않게 했습니다.
diff 복사·저장 형식 읽는 법
diff 복사와 저장은 GNU diff의 unified 형식(diff -u)으로 만듭니다. 위 공지 예시를 복사하면 아래와 같습니다. 바뀐 줄 앞뒤로 같은 줄을 세 줄씩 붙이고, 바뀐 곳 사이가 여섯 줄 이하로 가까우면 한 구간으로 합칩니다.
--- 원본
+++ 수정본
@@ -1,7 +1,7 @@
[공지] 10월 정기 회의 안내
-회의는 10월 27일 월요일 오후 2시에 3층 회의실에서 열립니다.
+회의는 10월 28일 화요일 오후 3시에 3층 대회의실에서 열립니다.
안건은 하반기 예산 점검과 신규 프로젝트 일정입니다.
-준비물: 노트북, 지난 분기 보고서
-참석이 어려우면 금요일까지 회신해 주세요.
-회의록은 회의 다음 날 공유합니다.
+화상으로 참석하려면 회의 링크를 이용해 주세요.
+준비물: 노트북
+참석이 어려우면 목요일까지 회신해 주세요.
감사합니다.
\ No newline at end of file
---와+++줄은 원본과 수정본의 이름입니다. 파일을 열어 비교했다면 파일 이름이 들어갑니다.@@ -1,7 +1,7 @@는 원본 1번째 줄부터 7줄, 수정본 1번째 줄부터 7줄이 이 구간이라는 뜻입니다. 구간이 한 줄이면-5처럼 줄 번호만 쓰고, 한쪽이 비어 있으면+0,0처럼 그 앞 줄 번호와 0을 씁니다.- 줄 앞의 빼기(-)는 원본에만, 더하기(+)는 수정본에만 있는 줄이고, 공백으로 시작하는 줄은 양쪽이 같은 줄입니다. 한 구간 안에서는 원본 줄을 모두 쓴 뒤 수정본 줄을 씁니다.
- 이 형식은 patch 명령(
patch 원본파일 < 저장한.diff)으로 원본에 적용하면 수정본과 같아지고, 코드 리뷰 도구와 메일에서도 널리 읽힙니다. 각 줄의 원래 줄바꿈(CRLF·LF)을 그대로 담고, 마지막 줄에 줄바꿈이 없으면 그 아래에\ No newline at end of file줄을 붙입니다. 공백 무시나 대소문자 무시를 켜고 만든 diff는 그 차이를 담지 않으므로, 적용용이라면 두 옵션을 끄고 만드세요.
파일과 인코딩
텍스트 파일은 2 MB까지, DOCX는 20 MB까지 엽니다. 확장자는 따지지 않고 내용이 글자로 된 파일이면 TXT·MD·CSV·JSON·HTML·SRT·로그 파일 모두 읽습니다. 앞부분에 0 바이트가 있으면 그림이나 실행 파일 같은 이진 파일로 보고 읽지 않습니다.
- 인코딩 판별: 파일 앞의 바이트 순서 표시(BOM)가 있으면 그대로 UTF-8·UTF-16으로 읽고, 없으면 먼저 UTF-8로 읽어 봅니다. UTF-8로 맞지 않으면 EUC-KR(윈도우 확장 완성형 CP949 포함), Shift_JIS, Windows-1252로 읽어 한글·가나·라틴 글자가 자연스럽게 나오는 쪽을 고르고, 고른 인코딩을 칸 위에 적어 둡니다. 옛 윈도우 메모장에서 'ANSI'로 저장한 한글 파일이 이 경우입니다.
- DOCX: 압축된 DOCX 안의 본문(word/document.xml)에서 문단 하나를 한 줄로 읽습니다. 표는 칸마다 한 줄, 글상자 글도 본문 순서에 넣습니다. 변경 내용 추적이 남아 있으면 넣은 글은 넣고 지운 글은 뺀 상태, 곧 변경을 모두 받아들인 본문으로 읽습니다. 머리글·바닥글·각주·메모와 글꼴·색 같은 서식은 비교하지 않습니다.
- 읽지 않는 형식: HWP·HWPX·PDF·DOC·엑셀·파워포인트와 이미지 파일은 직접 읽지 않습니다. 한글 프로그램이나 PDF 보기 프로그램에서 본문을 모두 선택해 복사한 뒤 붙여 넣으세요. PDF에서 복사한 글은 쪽 끝마다 줄이 끊겨 있을 수 있으니 양쪽을 같은 방식으로 복사해야 정확합니다.
자주 틀리는 경우
- 원본과 수정본을 거꾸로 넣음: 그러면 추가와 삭제가 뒤바뀌어 보입니다. 이전 글이 A, 새 글이 B인지 확인하고, 반대라면 ⇄ 단추로 바꿉니다.
- 한쪽만 자동 줄바꿈된 글을 붙여 넣음: 이메일이나 PDF에서 복사한 글은 화면 폭에 맞춰 줄이 끊겨 있어 모든 줄이 다르게 나올 수 있습니다. 두 글을 같은 곳에서 같은 방식으로 복사하세요.
- 유사도를 표절률로 읽음: 유사도는 글자가 같은 순서로 남은 비율일 뿐 출처나 인용 여부를 판단하지 않습니다. 문장을 통째로 옮겨 적은 글도 순서가 다르면 유사도가 낮게 나옵니다.
- 무시 옵션을 켠 채 diff를 적용함: 공백 무시를 켜고 만든 diff에는 들여쓰기 변경이 빠져 있습니다. 파일에 적용할 diff는 옵션을 끄고 만듭니다.
- 보이지 않는 글자를 놓침: 웹에서 복사한 글에는 폭 없는 공백이나 줄바꿈 없는 공백이 섞여 있어, 눈으로는 같은데 다르다고 나올 수 있습니다. 바뀐 자리에 200B 같은 상자나 ⍽ 기호가 보이면 그 글자 때문입니다.
한계와 주의
- 문서마다 50만 자, 2만 줄까지 비교합니다. 더 긴 글은 장이나 쪽 단위로 나눠 비교하세요. 결과가 1,000줄을 넘는 긴 글은 결과판이 바뀐 곳만 보기로 시작합니다.
- 두 글이 대부분 다르면 줄 맞춤에 1초 시간 한도를 둡니다. 넘으면 남은 구간에서는 같은 줄을 더 찾지 않고 줄을 순서대로 짝지어 수정·추가·삭제로 나눈 뒤 상태 줄에 알리므로, 수정 줄 수가 실제보다 많게 나올 수 있습니다. 결과판은 한 번에 3,000줄까지 그리고, 나머지는 맨 아래 단추로 이어서 엽니다.
- 문단 이동은 따로 추적하지 않아 삭제와 추가로 나옵니다. 같은 문장이 여러 번 되풀이되는 글에서는 어느 줄끼리 맞출지 여러 답이 가능해, 사람이 짝지은 것과 다르게 보일 수 있습니다.
- 비교는 글자만 봅니다. 뜻이 같은 다른 표현, 맞춤법이 맞는지, 서식·글꼴·이미지는 판단하지 않습니다.
- 입력과 결과는 저장하지 않으므로 페이지를 닫으면 사라집니다. 개인정보가 담긴 비교 결과를 복사해 공유할 때는 내용을 다시 확인하세요.
출처
기준일 아래 문서는 2026년 10월 22일에 원문으로 확인했습니다. 마이어스 논문의 학술지 정보는 Crossref 서지로 확인했습니다. 예시 표의 줄 수·유사도와 diff 예시는 이 도구의 계산 결과이고, diff 형식은 무작위 문서 120쌍을 patch 명령으로 원본에 적용했을 때 수정본과 똑같아지는지, 빈 구간 표기(-0,0)가 diff 명령의 출력과 같은지 대조했습니다.
- 01Eugene W. Myers — An O(ND) Difference Algorithm and Its VariationsAlgorithmica 1권 251~266쪽(1986년 11월, DOI 10.1007/BF01840446). 최장 공통 부분열과 최단 편집 스크립트가 같은 문제라는 점, 선형 공간 변형
- 02J. W. Hunt, M. D. McIlroy — An Algorithm for Differential File Comparison벨 연구소 Computing Science Technical Report #41(1976년 7월)
- 03GNU Diffutils 설명서 — Unified Format-u 옵션, 문맥 줄 기본 3줄
- 04GNU Diffutils 설명서 — Detailed Description of Unified Format---·+++ 머리, @@ 구간 머리(한 줄 구간은 시작 줄 번호만), 줄 앞 공백·-·+의 뜻
- 05Git 설명서 — git-diff--diff-algorithm(기본 myers), --word-diff
- 06Google diff-match-patch — APIdiff_cleanupSemantic: 사람이 읽기 좋은 변경 덩어리로 정리
- 07Unicode — UAX #29 Unicode Text Segmentation글자 묶음(grapheme cluster)과 단어 경계
- 08WHATWG — Encoding StandardEUC-KR이 윈도우 코드 페이지 949(확장 완성형)까지 다룬다는 점, Shift_JIS·windows-1252 해석
- 09Ecma International — ECMA-376 Office Open XMLDOCX 본문 구조(문단 w:p, 글 w:t, 변경 추적 w:ins·w:del)
- 10MDN — DecompressionStream브라우저 안에서 deflate-raw 압축 풀기
자주 묻는 질문
텍스트 비교기는 무료이고, 넣은 글이 서버로 가지 않나요?
가입 없이 무료로 씁니다. 붙여 넣은 글과 연 파일은 이 브라우저 안에서만 비교하고 서버로 보내지 않으며, 페이지를 닫으면 남지 않습니다. 결과를 남기려면 diff 복사나 저장을 쓰세요.
'수정'과 '삭제·추가'는 어떻게 나뉘나요?
같은 줄을 기준으로 두 글을 맞춘 뒤, 그 사이에 남은 삭제 줄과 추가 줄 가운데 글자 구성이 닮은 줄끼리 먼저 짝지어 수정으로 봅니다. 나머지는 순서대로 짝짓고, 짝이 없는 줄만 삭제나 추가로 남깁니다.
유사도 78%는 어떻게 계산한 값인가요?
두 글에서 같은 자리로 맞춰진 글자 수의 두 배를 두 글의 전체 글자 수로 나눈 값입니다. 줄바꿈은 세지 않고, 공백 무시를 켜면 공백도 빼고 셉니다. 뜻이 비슷한지가 아니라 글자가 얼마나 그대로 남았는지를 나타냅니다.
글자 강조와 단어 강조는 무엇이 다른가요?
글자 강조는 '월요일'이 '화요일'로 바뀌면 '월'과 '화'만 진한 바탕으로 보여 조사·숫자처럼 작은 수정을 찾기 좋습니다. 단어 강조는 바뀐 어절이나 영어 단어를 통째로 보여 문장이 크게 바뀐 글을 읽기 편합니다.
띄어쓰기나 들여쓰기 차이만 빼고 볼 수 있나요?
공백 무시를 켜면 줄 안의 모든 공백·탭을 빼고 비교하므로 '서울 부산'과 '서울부산', 들여쓰기만 다른 코드 줄을 같은 줄로 봅니다. 이렇게 같게 본 줄은 줄 번호 옆에 ≈ 표시가 붙고 요약에 개수가 나옵니다.
워드·한글·PDF 파일도 비교할 수 있나요?
DOCX는 파일을 그대로 열면 본문 문단을 줄로 읽습니다. 변경 내용 추적이 남아 있으면 넣은 글은 넣고 지운 글은 뺀 본문으로 읽습니다. HWP와 PDF는 직접 읽지 않으니 프로그램에서 본문을 복사해 붙여 넣으세요.
문단 순서만 바꿨는데 왜 삭제와 추가로 나오나요?
이 비교는 두 글의 줄 순서를 지키면서 같은 줄을 최대한 많이 맞추는 방식이라, 위치를 옮긴 문단은 한쪽에서는 삭제, 다른 쪽에서는 추가로 나옵니다. 이동을 따로 추적하지 않으니 바뀐 곳만 보기로 두 위치를 함께 확인하세요.
diff 복사에 나오는 @@ -1,7 +1,7 @@는 무슨 뜻인가요?
unified diff의 구간 머리입니다. 원본 1번째 줄부터 7줄과 수정본 1번째 줄부터 7줄을 비교한 구간이라는 뜻이고, 그 아래 줄 앞의 빼기(-)는 원본에만, 더하기(+)는 수정본에만 있는 줄, 공백은 양쪽이 같은 줄입니다.