텍스트 비교(diff) 도구는 두 개의 텍스트를 나란히 넣으면 어떤 줄이 새로 추가됐고 어떤 줄이 지워졌는지를 색으로 구분해 보여 주는 도구입니다. 원본과 수정본을 왼쪽·오른쪽 칸에 붙여넣기만 하면, 두 글의 달라진 지점을 눈으로 하나하나 대조하지 않아도 즉시 파악할 수 있습니다.
이 도구는 줄(line) 단위로 텍스트를 비교합니다. 두 텍스트를 줄바꿈 기준으로 나눈 뒤, 두 문서에 공통으로 남아 있는 가장 긴 줄 배열(LCS, 최장 공통 부분수열)을 찾아 그대로 둔 줄은 그대로 두고, 원본에만 있는 줄은 삭제(−), 비교본에만 있는 줄은 추가(+)로 표시합니다. 문서 버전 관리 시스템(Git 등)이 변경 내역을 보여 주는 방식과 같은 원리입니다.
코드 리뷰에서 두 커밋의 차이를 확인하거나, 계약서·기획서·번역 초안의 개정 전후를 대조하거나, 긴 로그·설정 파일에서 바뀐 줄만 골라낼 때 유용합니다. 아래에서는 diff가 정확히 무엇인지, 줄 단위 비교와 문자 단위 비교의 차이, 추가·삭제·변경이 어떻게 표시되는지, 그리고 실무에서 어떻게 활용하는지 정리했습니다.
사용 방법
- 왼쪽 '원본' 칸에 기준이 되는 텍스트(수정 전 버전)를 붙여넣습니다.
- 오른쪽 '비교본' 칸에 비교할 텍스트(수정 후 버전)를 붙여넣습니다.
- 입력 즉시 두 텍스트가 줄 단위로 비교되어, 추가된 줄은 초록색(+), 삭제된 줄은 빨간색(−), 그대로인 줄은 회색으로 표시됩니다.
- 결과 위의 '+n 추가 · −n 삭제' 요약으로 전체 변경 규모를 먼저 확인한 뒤, 색으로 강조된 줄을 훑어 구체적으로 어디가 달라졌는지 확인합니다.
diff란 무엇인가요
diff는 'difference(차이)'의 줄임말로, 두 텍스트를 비교해 서로 다른 부분만 추려 보여 주는 기법을 말합니다. 사람이 두 문서를 처음부터 끝까지 눈으로 대조하는 것은 느리고 실수가 잦지만, diff는 어느 줄이 그대로이고 어느 줄이 바뀌었는지를 알고리즘으로 계산해 즉시 강조해 줍니다.
이 도구는 두 텍스트에서 '순서를 유지한 채 공통으로 등장하는 가장 긴 줄들의 배열'을 찾는 최장 공통 부분수열(LCS) 알고리즘을 씁니다. 이 공통 배열에 포함된 줄은 변경 없이 유지된 것으로 보고, 원본에서 빠진 줄은 삭제, 비교본에서 새로 등장한 줄은 추가로 판정합니다. 덕분에 중간에 몇 줄을 끼워 넣거나 지워도 나머지 줄이 통째로 어긋나 보이지 않고, 실제로 바뀐 줄만 정확히 짚어 냅니다.
왜 단순 비교보다 나은가요
두 텍스트를 위에서부터 한 줄씩 맞대어 비교하면, 앞부분에 한 줄만 추가돼도 그 아래 모든 줄이 밀려 전부 '다름'으로 표시됩니다. LCS 기반 diff는 공통으로 남은 줄을 먼저 찾아 정렬하기 때문에, 실제로 추가·삭제된 줄만 골라내 훨씬 정확한 결과를 줍니다.
줄 단위 비교 vs 문자 단위 비교
텍스트 diff는 무엇을 최소 비교 단위로 삼느냐에 따라 종류가 나뉩니다. 이 도구는 줄(line) 단위 비교를 사용합니다. 즉 한 줄 안에서 글자 하나만 달라져도 그 줄 전체를 '바뀐 줄'로 취급합니다. 각 방식의 특징은 다음과 같습니다.
| 비교 단위 | 판정 기준 | 적합한 용도 |
|---|---|---|
| 줄 단위 | 줄 전체가 같은지 다른지 | 코드·설정 파일·로그처럼 줄 단위로 의미가 나뉘는 텍스트 |
| 단어 단위 | 공백으로 나눈 단어 단위 | 문장 안에서 단어 몇 개만 고친 산문 |
| 문자 단위 | 글자 하나하나 | 짧은 문자열, 오타 한 글자 차이 대조 |
이 도구는 줄 단위입니다
이 도구는 줄 단위로 비교하므로, 한 줄에서 마침표 하나만 고쳐도 그 줄은 '삭제된 원본 줄'과 '추가된 새 줄'로 함께 표시됩니다. 문장 안에서 정확히 어느 글자가 바뀌었는지 글자 단위로 강조해 주지는 않습니다. 대신 코드·목록·설정처럼 줄 하나가 의미 단위인 텍스트에서는 이 방식이 가장 깔끔하게 읽힙니다.
추가·삭제·변경은 어떻게 표시되나요
비교 결과의 각 줄은 아래 세 가지 상태 중 하나로 표시됩니다. '변경'은 별도 색이 아니라, 원본 줄의 삭제와 새 줄의 추가가 짝을 이뤄 나타납니다.
- 한 줄을 통째로 새로 넣으면 초록색 추가(+) 한 줄로 표시됩니다.
- 한 줄을 완전히 지우면 빨간색 삭제(−) 한 줄로 표시됩니다.
- 기존 줄의 내용을 고치면 '옛 줄 삭제(−) + 새 줄 추가(+)' 두 줄로 나타납니다. 이것이 사실상 '변경'입니다.
- 결과 상단의 '+n 추가 · −n 삭제' 요약은 전체 변경 규모를 한눈에 보여 줍니다.
| 표시 | 기호 | 의미 |
|---|---|---|
| 초록색 줄 | + | 비교본에만 있는 줄 (새로 추가됨) |
| 빨간색 줄 | − | 원본에만 있는 줄 (삭제됨) |
| 회색 줄 | (없음) | 두 텍스트에 똑같이 있는 줄 (변경 없음) |
이럴 때 활용하세요
줄 단위 diff는 개발과 문서 작업 양쪽에서 두루 쓰입니다. 대표적인 활용 상황은 다음과 같습니다.
- 코드 리뷰: 함수 수정 전후 코드를 붙여넣어 바뀐 줄만 확인하거나, 동료가 보낸 코드 조각과 내 버전을 대조합니다.
- 문서 버전 비교: 계약서·기획서·이력서 초안의 개정 전후를 대조해 어느 문장이 추가·삭제됐는지 확인합니다.
- 번역·교정 대조: 원문과 수정본, 또는 번역 초안과 감수본을 나란히 넣어 손본 줄을 찾습니다.
- 설정 파일 점검: .env·config·JSON 등에서 예시 설정과 실제 설정을 비교해 빠지거나 잘못 들어간 줄을 잡아냅니다.
- 로그 분석: 정상 실행 로그와 오류 로그를 비교해 어느 줄부터 출력이 달라졌는지 추적합니다.
민감한 텍스트도 안전합니다
이 도구의 비교는 브라우저 안에서만 이뤄지며, 입력한 텍스트가 서버로 전송되거나 저장되지 않습니다. 코드나 설정처럼 외부에 노출되면 안 되는 내용도 안심하고 붙여넣어 비교할 수 있습니다.
자주 묻는 질문
- 이 도구는 줄 단위인가요, 문자 단위인가요?
- 줄(line) 단위로 비교합니다. 두 텍스트를 줄바꿈 기준으로 나눈 뒤 줄 전체가 같은지 다른지를 판정하므로, 한 줄 안에서 글자 하나만 달라져도 그 줄 전체가 삭제(−)와 추가(+) 한 쌍으로 표시됩니다. 문장 안에서 정확히 어느 글자가 바뀌었는지 글자 단위로 강조하지는 않습니다.
- '변경된 줄'은 왜 초록색과 빨간색으로 따로 나오나요?
- 이 도구는 추가(+)와 삭제(−) 두 가지만 표시하고, '변경'이라는 별도 상태는 없습니다. 그래서 기존 줄을 고치면 옛 줄이 빨간색 삭제로, 새 줄이 초록색 추가로 나란히 나타납니다. 이 삭제+추가 한 쌍이 곧 '그 줄이 바뀌었다'는 뜻입니다. Git을 비롯한 대부분의 diff 도구가 같은 방식을 씁니다.
- 줄 순서를 바꾸면 어떻게 표시되나요?
- 줄의 위치가 달라지면, 알고리즘은 공통으로 유지할 수 있는 가장 긴 줄 배열을 기준으로 정렬합니다. 그 결과 옮겨진 줄은 원래 자리에서 삭제되고 새 자리에서 추가된 것으로 표시될 수 있습니다. 순수한 '이동'을 별도로 인식하지는 않고, 삭제와 추가의 조합으로 나타납니다.
- 대소문자나 공백 차이도 다른 줄로 보나요?
- 네. 줄을 문자 그대로 비교하므로 대소문자, 앞뒤 공백, 탭과 스페이스, 마침표 하나까지 다르면 서로 다른 줄로 판정합니다. 의미상 같아 보여도 공백이 하나 더 있으면 변경으로 잡히니, 불필요한 차이를 줄이려면 비교 전에 양쪽 서식을 맞춰 주는 것이 좋습니다.
- 입력한 텍스트가 서버에 저장되나요?
- 저장되지 않습니다. 모든 비교는 브라우저 안에서 실행되며 입력 내용이 외부로 전송되지 않습니다. 코드, 계약서, 설정 파일처럼 민감한 텍스트도 안심하고 붙여넣을 수 있습니다.
- 아주 긴 텍스트도 비교할 수 있나요?
- 짧은 문서부터 수백 줄 규모까지는 즉시 비교됩니다. 다만 줄 단위 diff는 두 텍스트의 줄 수를 곱한 만큼 계산량이 늘어나므로, 수천 줄이 넘는 매우 큰 파일을 한꺼번에 넣으면 브라우저에서 다소 느려질 수 있습니다. 이럴 때는 관심 있는 부분만 잘라 비교하는 것이 빠릅니다.