텍스트 차이(Diff) 비교

두 텍스트 블록을 줄 단위로 비교하여 추가된 줄과 삭제된 줄을 색으로 구분해 보여주는 도구입니다. 설정 파일 변경 확인, 문서 교정, Git 없이 하는 코드 리뷰 등에 활용할 수 있습니다. 비교 계산은 모두 브라우저 안에서 처리되며 입력한 내용은 서버로 전송되지 않습니다.

두 텍스트를 줄 단위로 견주어 보기

설정 파일에서 무엇이 바뀌었는지 확인하고 싶을 때, 또는 글의 어디에 손이 갔는지 알고 싶을 때 손이 가는 도구입니다. 두 텍스트를 줄마다 맞대어 더해진 줄과 지워진 줄을 다른 색으로 보여 줍니다. 모든 계산이 브라우저 안에서 끝나므로 붙여 넣은 내용이 어디로도 보내지지 않습니다.

**결과를 읽을 때 알아 둘 것은, 차이 알고리즘이 「가장 짧은 편집 절차」를 찾는다는 성질입니다.** 그런 까닭에 **사람이 「이 문단이 아래로 옮겨 갔다」고 보는 것을, 기계는 「지움」과 「더함」의 짝으로 나타냅니다.** 옮김 자체를 가리키는 기호는 없습니다. 또 하나, 비교는 줄 단위이므로 **한 글자만 다른 줄도 줄 전체가 바뀐 것으로 나옵니다.** 여기서 가장 헷갈리는 것이 줄바꿈 문자나 줄 끝 공백의 차이로, 보기에는 같은데 모든 줄이 바뀐 것으로 표시되기도 합니다. 차이가 터무니없이 크다면 먼저 그것을 의심하십시오.

사용하는 방법

  1. 원본을 A에 붙여 넣습니다 바꾸기 전의 내용을 넣습니다.
  2. 고친 것을 B에 붙여 넣습니다 바꾼 뒤의 내용을 넣습니다.
  3. 색으로 갈린 차이를 읽습니다 **더해진 줄과 지워진 줄이 다른 색으로 나옵니다.**
  4. 차이가 너무 크면 줄 끝을 의심합니다 **줄바꿈 문자나 줄 끝 공백이 다른 것만으로 모든 줄이 바뀐 것으로 나옵니다.**

더 잘 활용하기 위한 팁

  • 설정 파일(.env, YAML, JSON 등)의 변경 전후 내용을 붙여넣기만 하면 어떤 줄이 추가·삭제되었는지 한눈에 확인할 수 있습니다.
  • Git이 설치되어 있지 않은 환경에서도 두 버전을 복사해 붙여넣기만 하면 간단한 코드 리뷰나 문서 교정이 가능합니다.
  • 줄의 위치만 바뀐 경우는 "이동"이 아니라 삭제+추가로 감지됩니다. 같은 내용의 줄이 다른 위치로 옮겨졌을 뿐이어도 차이로 표시된다는 점에 유의하세요.
  • 공백, 줄바꿈, 대소문자 차이까지 한 글자 단위로 엄격하게 비교되므로 들여쓰기만 바뀐 줄도 "변경됨"으로 감지됩니다.
  • 긴 문장을 비교할 때는 문단마다 한 줄로 정리한 뒤 붙여넣으면 문단 단위로 차이를 한눈에 보기 쉬워집니다.

이럴 때 쓸 수 있습니다

설정 파일의 변경을 확인할 때

운영에 올리기 전에 뜻한 곳만 바뀌었는지 볼 수 있습니다.

글을 다듬은 결과를 맞대어 볼 때

**초고와 고친 글을 나란히 놓으면 어디에 손이 갔는지 한눈에 따라갈 수 있습니다.**

깃 없이 검토할 때

버전 관리에 들어 있지 않은 파일도 붙여 넣기만 하면 견줄 수 있습니다.

출력이 되풀이되는지 확인할 때

같은 처리를 두 번 돌린 결과를 견주어 어긋남이 없는지 확인할 수 있습니다.

차이 비교 용어

더해진 줄
B에만 있는 줄입니다.
지워진 줄
A에만 있는 줄입니다. **자리만 옮긴 줄도 지움과 더함의 짝으로 나타납니다.**
줄 단위 비교
줄을 한 덩어리로 다루는 비교입니다. **한 글자만 달라도 줄 전체가 바뀐 것으로 나옵니다.**
줄바꿈 문자
줄의 끝을 나타내는 문자로, 윈도우는 CRLF를, 유닉스 계열은 LF를 씁니다. **이 차이가 모든 줄의 차이로 드러나기도 합니다.**
헝크
차이 가운데 변경이 한데 모인 한 덩어리를 가리킵니다.
문맥
바뀐 줄의 위아래에 곁들이는, 달라지지 않은 줄입니다. 자리를 가늠하기 쉽도록 보여 줍니다.

자주 묻는 질문

설정 파일이나 문서의 변경 전후를 비교하거나, Git을 사용하지 않는 환경에서 코드 리뷰를 하거나, 계약서나 약관의 개정 부분을 확인하는 등 줄 단위로 텍스트 변경 사항을 파악하고 싶은 모든 상황에서 활용할 수 있습니다.

CSV 차이 비교 도구는 열 구조를 가진 표 형식 데이터를 키 열로 대응시켜 셀 단위로 비교합니다. 반면 이 도구는 열 구조가 없는 자유 형식 텍스트를 줄 단위로 비교하므로, 설정 파일이나 문장처럼 표 형식이 아닌 데이터에 적합합니다.

JSON 차이 비교 도구는 JSON의 구조(객체·배열의 계층)를 해석해 키 단위로 차이를 감지합니다. 이 도구는 구조를 전혀 해석하지 않고 각 줄을 단순히 문자열로 비교하므로, JSON이 아닌 임의의 텍스트에도 사용할 수 있는 범용 도구입니다.

줄의 순서 변경은 "이동"으로 감지되지 않고, 원래 위치에서의 삭제와 새 위치로의 추가가 조합된 형태로 표시됩니다. 이는 Git의 diff 명령어를 포함한 일반적인 줄 단위 diff 알고리즘에 공통된 동작입니다.

아니요. 차이 계산은 모두 브라우저 내 JavaScript에서 처리되며, 입력한 텍스트가 서버로 전송되는 일은 없습니다. 민감한 정보가 포함된 문서라도 안심하고 사용할 수 있습니다.
툴군

여담 ― LCS(최장 공통 부분열)로 차이를 구하는 원리

두 텍스트의 차이를 감지하는 알고리즘으로는 1970년대 IBM의 컴퓨터 과학자 유진 마이어스(Eugene Myers)가 발표한 "마이어스 차이 알고리즘"이 널리 알려져 있습니다. Git이나 SVN 같은 주요 버전 관리 시스템의 `diff` 명령어는 이 계열의 알고리즘을 채택하고 있으며, 줄 단위의 추가·삭제를 효율적으로 감지합니다. 이 도구도 같은 발상을 바탕으로 최장 공통 부분열(LCS)을 구해 변경 사항을 최소한으로 좁혀냅니다.

최장 공통 부분열(LCS)이란 두 수열(여기서는 줄의 나열) 양쪽에 순서대로 공통으로 나타나는 부분열 중 가장 긴 것을 말합니다. 두 텍스트의 차이는 이 LCS에 포함되지 않는 줄을 "삭제" 또는 "추가"로 간주해 구하며, LCS가 길수록 화면에 표시되는 변경 사항은 줄어듭니다. 동적 계획법(DP)이라는 알고리즘 기법을 사용하면 줄 수가 많은 텍스트라도 현실적인 시간 안에 계산할 수 있습니다.

diff 알고리즘에는 약점도 있습니다. 어떤 줄이 단순히 다른 위치로 이동했을 뿐인 경우, 대부분의 구현은 이를 "이동"으로 감지하지 않고 "삭제"와 "추가"의 조합으로 표시합니다. 줄 순서가 크게 뒤바뀐 텍스트를 비교하면 실제 변경량보다 차이가 더 많아 보이는 것은 이 때문입니다. 이런 특성을 알아두면 차이 결과를 읽을 때 오해가 줄어듭니다.