텍스트 비교
두 텍스트를 붙여 넣으면 추가·삭제·변경된 줄과 바뀐 단어를 색으로 표시해요. 대소문자와 공백 차이 무시, 차이만 보기 지원. 무료, 회원가입 없음, 업로드 없음.
- 줄 단위 비교
- 바뀐 단어 강조
- 공백·대소문자 무시
- 차이만 보기
비교 결과
텍스트는 브라우저 안에서만 비교되며 업로드되거나 저장되지 않아요.
🔒 모든 계산은 브라우저 안에서 이뤄지며 데이터는 어떤 서버에도 업로드되지 않아요.
이럴 때 쓰면 좋아요
- 계약서·문서 수정본: 두 버전의 계약서나 기획서를 비교해 상대가 어떤 글자를 고쳤는지 찾아요.
- 코드·설정 파일: Git을 쓸 수 없을 때 두 코드나 설정의 차이를 빠르게 비교해요.
- 논문·과제: 수정 전후의 차이를 확인하거나 두 글이 얼마나 같은지 살펴봐요.
- 번역·카피 교정: 수정 전후 원고를 비교하고 ‘차이만 보기’를 켜서 빠르게 확인해요.
사용 방법
- 원본 텍스트를 왼쪽에, 수정한 텍스트를 오른쪽에 붙여 넣거나 ‘왼쪽 파일 열기/오른쪽 파일 열기’로 불러와요. 아래에 비교 결과가 바로 표시돼요.
- 빨간 배경의 '−'는 왼쪽에만 있는 줄(삭제), 초록 배경의 '+'는 오른쪽에만 있는 줄(추가)이에요. 수정된 줄은 짝으로 표시되고, 바뀐 단어는 더 진한 색으로 강조돼요.
- ‘대소문자 무시’, ‘공백 차이 무시’로 중요하지 않은 차이를 뺄 수 있어요. 내용이 길면 ‘차이만 보기’를 켜서 같은 부분을 접어 두세요.
사용 예시
기본 예시는 두 버전의 SQL을 비교해요. 왼쪽 5줄, 오른쪽 6줄이고 결과는 +3줄, −2줄(같은 줄 3)이에요. 1행은 COUNT(*) AS Cnt에서 SUM(Amount) AS Total로 바뀌었고, COUNT→SUM, *→Amount, Cnt→Total만 강조되며 괄호와 AS는 강조되지 않아요. 오른쪽 4행 AND Status = 1은 순수한 추가이고, 마지막 주석 줄은 1차→2차만 강조돼요.
왼쪽이 if (x == 1) {, return TRUE;, } 세 줄이고 오른쪽이 if (x == 1) {, return true;, } 세 줄이면, 옵션 없이 비교할 때 +2줄, −2줄이며 여분의 공백까지 강조돼요. ‘공백 차이 무시’를 켜면 2행만 다르고(+1, −1) TRUE→true만 강조돼요. 여기에 ‘대소문자 무시’까지 켜면 세 줄이 모두 같아져요.
결과 해석
- 상태 표시줄의 ‘+N줄, −N줄’은 추가된 줄과 삭제된 줄의 수예요. 한 줄을 고치면 삭제 1줄과 추가 1줄로 세므로, 3줄을 고치면 +3, −3으로 표시돼요.
- 각 줄의 앞 두 칸은 행 번호로, 첫 칸은 왼쪽(원본), 둘째 칸은 오른쪽(수정본) 번호예요. 번호가 한쪽에만 있으면 그쪽에만 있는 줄이에요.
- ‘차이만 보기’를 켜면 각 변경 앞뒤로 같은 줄 2줄씩을 문맥으로 남기고, 나머지는 ‘같은 줄 N줄 생략’으로 접어요.
- 무시 옵션으로 같다고 판단된 줄은 오른쪽 원문을 보여 줘요. 대소문자를 무시하면 수정된 표기가 표시돼요.
원리와 계산 방법
- 줄 비교에는 jsdiff를 사용해요. Myers의 O(ND) 차이 알고리즘으로 왼쪽을 오른쪽으로 바꾸는 데 필요한 최소한의 추가와 삭제를 찾으며, git diff와 같은 원리예요.
- 비교 전에 각 줄을 정규화할 수 있어요. ‘공백 차이 무시’는 연속된 공백을 하나로 합치고 줄 앞뒤를 잘라 내며, ‘대소문자 무시’는 소문자로 맞춰요. 정규화는 비교에만 쓰이고 화면에는 항상 원문이 표시돼요.
- 이웃한 삭제와 추가를 하나의 변경 블록으로 보고 순서대로 짝지어 줄 안을 비교해요. 중국어와 일본어는 한 글자씩, 영어·한국어와 코드는 단어(띄어쓰기) 단위로 비교해 단어가 글자 조각으로 흩어지지 않게 해요.
- 줄 안에서 같은 부분이 긴 쪽 줄의 30% 미만이면 줄 안 강조를 하지 않아요. 줄바꿈 CRLF와 CR은 LF로 보고, 끝의 줄바꿈 하나는 차이로 치지 않아요.
- 파일은 먼저 UTF-8로 읽고, 올바른 UTF-8이 아니면 Big5로 다시 읽어요.
한계와 주의점
- 텍스트만 비교하며 글꼴, 색, 표 같은 서식은 비교하지 않아요.
- 줄 단위 비교라서 줄바꿈 위치만 바뀐 문단도 변경으로 표시돼요.
- 이동은 감지하지 않아요. 어떤 부분을 다른 곳으로 옮기면 한쪽은 삭제, 다른 쪽은 추가로 표시돼요.
- 차이가 아주 많은 큰 파일은 5초가 지나면 비교를 멈추고 오류를 표시해요. 나누어 비교해 주세요.
- 자동으로 인식하는 인코딩은 UTF-8과 Big5뿐이에요. EUC-KR 등 다른 인코딩 파일은 먼저 UTF-8로 저장해 주세요.
자주 묻는 질문
수정된 줄인데 바뀐 단어가 강조되지 않는 이유는 무엇인가요?
짝을 이룬 두 줄에서 같은 부분이 긴 쪽 줄의 30% 미만이면 거의 새로 쓴 것으로 봐요. 단어 단위로 색을 칠해도 전부 칠해질 뿐이라서, 삭제된 줄과 추가된 줄로만 표시해요.
‘공백 차이 무시’는 무엇을 무시하나요?
연속된 공백이나 탭은 공백 하나로 보고, 줄 앞뒤의 공백은 무시해요. 들여쓰기 변경이나 여분의 공백은 차이로 표시되지 않아요. 빈 줄은 여전히 한 줄로 세어요.
Word, PDF, Excel 파일도 비교할 수 있나요?
바로 열 수 있는 것은 텍스트 파일(.txt, .csv, .sql, .json, 소스 코드 등)뿐이에요. Word, PDF, Excel은 내용을 복사해서 붙여 넣어 주세요. 서식은 비교하지 않아요.
입력한 텍스트가 업로드되나요?
아니요. 비교는 모두 브라우저 안에서 이루어지며, 서버로 전송하거나 저장하지 않아요. 페이지를 닫으면 텍스트도 사라져요.
표절 검사에 쓸 수 있나요?
두 텍스트에서 완전히 같은 부분은 확인할 수 있지만, 가지고 있는 두 텍스트끼리만 비교해요. 인터넷의 다른 글을 검색하지 않으며 정식 표절 검사 시스템도 아니에요.
왜 문단 전체가 수정된 것으로 표시되나요?
흔한 원인은 줄바꿈 방식이 다른 경우예요. 예를 들어 한쪽은 문장마다 줄을 바꾸고 다른 쪽은 문단 전체가 한 줄일 때예요. 먼저 양쪽의 줄바꿈 방식을 맞추거나 ‘공백 차이 무시’를 체크한 뒤 비교하세요.
아주 긴 텍스트도 비교할 수 있나요?
일반적인 문서는 몇 초 안에 끝나요. 차이가 너무 많아 시간 제한을 넘으면 알려 드리니 범위를 줄이거나 나누어 비교하세요.
참고 자료
- jsdiff: A javascript text differencing implementation — GitHub
- git-diff Documentation — Git
- Encoding Standard — WHATWG