텍스트 비교(diff)란 무엇인가?
텍스트 비교(diff)는 두 문서를 정렬·대조하여 추가·삭제·동일한 부분을 시각적으로 표시하는 작업입니다. 깃(Git)·SVN 같은 버전관리, 워드 프로세서의 변경 이력 추적, 계약서·논문 교정에서 가장 핵심적인 기능이며, 원리는 1976년 발표된 LCS(Longest Common Subsequence) 알고리즘에 기반합니다. 본 도구는 두 텍스트의 LCS를 동적계획법으로 계산해 변경되지 않은 줄을 기준으로 추가/삭제만 정확히 식별합니다. 결과는 라인 단위(GitHub diff와 동일 형식)와 단어 단위(워드 변경 이력 형식) 두 가지 모드로 표시되며, 추가는 초록·삭제는 빨강으로 한눈에 구분됩니다. 긴 문서·코드를 비교할 때도 변경되지 않은 90%는 그대로 두고 바뀐 10%만 강조해 검토 시간을 90% 이상 단축할 수 있습니다.
언제 텍스트 비교가 필요한가?
- • 코드 리뷰 — Pull Request에서 변경된 라인만 빠르게 확인. 본 도구로 로컬 파일 두 개를 즉시 diff.
- • 계약서·약관 검토 — 상대방이 보낸 수정본과 원본을 비교해 무단 추가/삭제 조항 적발. 한 글자 변경도 놓치지 않음.
- • 논문·자기소개서 교정 — 교수·첨삭자의 수정안과 내 원본을 대조해 어디가 어떻게 바뀌었는지 학습.
- • 이메일·공문 수정 이력 — 회의록·공문 v1과 v2를 비교해 누가 무엇을 바꿨는지 추적.
- • 번역본 일치 검증 — 원본 한국어와 번역 한국어 두 버전이 동일한지 확인.
- • 설정 파일 비교 — .env / config.json 등 두 환경의 설정 차이를 한눈에.
라인 비교 vs 단어 비교
| 모드 | 단위 | 적합한 상황 |
|---|---|---|
| 라인 비교 | 줄(line) 단위 | 코드, 로그, JSON/YAML, 표 형식 데이터 |
| 단어 비교 | 공백 구분 토큰 | 자연어 문서, 계약서, 논문, 자기소개서 |
※ 자연어 문서는 한 줄이 길어 라인 비교로는 변경 위치 식별이 어렵습니다. 단어 비교 모드를 권장합니다.
LCS 알고리즘 동작 원리
본 도구는 동적계획법으로 두 시퀀스의 가장 긴 공통 부분 수열(LCS)을 O(N×M) 시간에 계산합니다. 예를 들어 원본이 [A, B, C, D]이고 수정본이 [A, X, C, D]이면 LCS는 [A, C, D]이고, B는 삭제, X는 추가로 마킹됩니다. 단순히 다른 부분을 찾는 것이 아니라 "가장 많이 일치하는 정렬"을 찾기 때문에중간에 한 줄을 추가했을 때 그 아래 모든 줄이 변경된 것처럼 보이는 일이 발생하지 않습니다. Git, GitHub, BitBucket, VS Code의 diff도 모두 이 원리(또는 Myers diff 같은 변형)를 사용합니다.
자주 묻는 질문 (FAQ)
Q. 큰 파일도 비교 가능한가요?
A. LCS 알고리즘은 O(N×M) 메모리를 사용하므로, 한 쪽이 1만 줄을 넘으면 브라우저가 느려질 수 있습니다. 코드 파일은 보통 1천 줄 이내라 즉시 처리되며, 1만 줄 이상은 파일 분할 후 비교를 권장합니다.
Q. 한글 문서도 정확히 비교되나요?
A. 네. 라인 비교는 줄바꿈 단위, 단어 비교는 공백 단위로 동작하므로 한글·영문·이모지·중문 모두 동일하게 처리됩니다. 다만 한글 문서는 한 문장이 한 줄로 작성되는 경우가 많아 단어 비교 모드가 더 직관적입니다.
Q. 공백·줄바꿈 차이도 감지하나요?
A. 네. 라인 비교는 끝의 공백·줄바꿈도 다르면 변경으로 표시됩니다. 보이지 않는 공백 차이가 있을 때 유용합니다. 코드 들여쓰기(탭 vs 스페이스) 변경도 즉시 감지됩니다.
Q. 입력한 텍스트가 외부로 전송되나요?
A. 아니요. 모든 비교는 브라우저에서만 수행되며 서버로 전송되지 않습니다. 계약서·내부 코드도 안전하게 비교할 수 있습니다.
Q. 결과를 PDF나 이미지로 저장할 수 있나요?
A. 직접 저장 기능은 없지만, 브라우저의 인쇄(Ctrl/Cmd + P) 기능으로 PDF로 저장하면 색상 강조까지 그대로 출력됩니다. 또는 결과 영역을 스크린샷으로 캡처해 공유하세요.