이 페이지의 코드가 시작되지 않았습니다.

index.html을 폴더에서 바로 열면 브라우저가 JavaScript 모듈을 막습니다. 그래서 파일을 골라도 아무 일도 일어나지 않아요. 폴더를 http로 띄워서 여세요:

powershell -ExecutionPolicy Bypass -File serve.ps1

그런 다음 http://localhost:8080/을 여세요.

텍스트 비교 — 두 텍스트를 나란히 비교하기

두 텍스트를 넣으면 모든 차이가 줄 단위, 단어 단위로 표시됩니다. 남의 서버에 붙여 넣는 것은 없습니다.

언어: 한국어
소스 보기
텍스트는 절대 업로드되지 않습니다. 서버가 아예 없으니까요.

비교는 문자열 두 개를 두고 하는 산술이고, 여기 이 페이지에서 이루어집니다. 알고리즘은 마이어스의 것 — git diff가 쓰는 바로 그것 — 이고 src/diff.js에 직접 손으로 쓰여 있어서 읽어 볼 수 있습니다. 이 도구에는 네트워크 기능이 하나도 없어서 가져올 것도 보낼 것도 없고, 여기서는 그 사실이 중요합니다. 사람들이 비교하는 것은 계약서이고 설정 파일이고 공개 전 코드인데, 그것도 언제나 두 벌씩이니까요.

실시간 확인: 확인 중…

오프라인: 확인 중…

그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 무언가를 비교해 보십시오. 붙여 넣은 것의 한 글자도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 비교해 보셔도 됩니다.

1 두 텍스트 붙여 넣기

비어 있음
비어 있음

2 읽는 방식 고르기

3 무엇이 달라졌는지 읽기

아직 없습니다.

Markdown으로 보기

업로드하지 않고 두 텍스트를 비교하는 방법

  1. 두 텍스트를 붙여 넣거나, 파일 두 개를 놓습니다. 원본은 왼쪽, 바뀐 쪽은 오른쪽. 선택 영역에 한꺼번에 놓인 파일 두 개는 놓은 순서대로 양쪽에 하나씩 놓입니다. 반대로 놓였다면 좌우를 바꾸시면 됩니다.
  2. 읽는 방식을 고릅니다. 나란히, 또는 한 열로. 휴대폰은 한 열로 시작합니다. 나란히 보기는 텍스트 열이 두 개 필요한데 휴대폰에는 한 열 들어갈 자리뿐이니까요. 어차피 메뉴는 바로 옆에 있습니다.
  3. 중요하지 않은 것은 무시합니다. 공백, 대소문자, 빈 줄. 각각 따로 무시할 수 있어서, 다시 정렬만 한 파일이 변경 백 개처럼 읽히지 않습니다. 기본으로는 바뀌지 않은 가운데 부분을 개수 하나로 접고, 변경마다 앞뒤로 세 줄씩 남깁니다.
  4. 무엇이 달라졌는지 읽습니다. 지워진 줄은 왼쪽에, 더해진 줄은 오른쪽에 표시되고, 달라진 줄 안에서는 다른 단어가 강조됩니다. 문단 두 개를 비교하면 문단 두 개가 통째로가 아니라 자리를 옮긴 단어가 보입니다.
  5. 패치를 가져갑니다. 내려받는 것은 통합(unified) 형식의 .patch이고, 코드 리뷰와 git apply와 모든 diff 뷰어가 기대하는 것이 바로 그것입니다. 복사도 같은 것을 클립보드에 넣습니다.

자세한 설명

JSON 파일 두 개를 비교하는 방법 두 파일을 같은 방식으로 정렬하고, 키를 정렬하고, 그다음 비교합니다. 날것의 JSON diff가 왜 거의 잡음뿐인지, 브라우저에서 양쪽을 표준형으로 만드는 법, 그리고 패치까지 살아남는 것.

자주 묻는 질문

제 텍스트가 어딘가로 업로드되나요?

아닙니다. 비교는 내 기기에서, 내 브라우저 안에서 도는 함수입니다. 이 도구에는 네트워크 기능이 하나도 없어서 무언가를 가져오지도, 보내지도 않습니다. 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 계약서나 설정 파일, 공개 전 코드에 이 도구를 써야 하는 이유가 그것입니다. 그런 것을 남의 diff 도구에 붙여 넣는 것은 두 버전을 한꺼번에 넘겨주는 일이니까요.

비교는 실제로 무엇을 하나요?

왼쪽 텍스트를 오른쪽으로 바꾸는 가장 짧은 편집 묶음을 찾습니다. git diff가 쓰는 마이어스 알고리즘으로요. diff를 읽을 만하게 만드는 것이 바로 그 "가장 짧은"입니다. 가운데 한 줄이 끼어들었으면 그 뒤의 모든 줄이 바뀐 것이 아니라 삽입 하나로 보여야 하니까요. 바뀐 줄 안에서는 달라진 단어까지 표시하므로, 두 문단을 비교하면 문단 둘이 아니라 옮겨 간 단어가 드러납니다.

붙여 넣기 대신 파일 두 개를 비교할 수 있나요?

됩니다. 둘 다 한꺼번에 선택 영역에 놓으면 놓은 순서대로 양쪽에 하나씩 놓입니다. 브라우저가 그것을 읽어 이 페이지로 들이고, 그것들이 가는 곳은 거기뿐입니다. 반대로 놓으셨다면 좌우를 바꾸시면 됩니다.

비교 결과로 무엇이 나오고, 적용할 수 있나요?

내려받는 것은 통합 diff입니다. git apply와 patch, 모든 코드 리뷰 도구가 읽는 @@ -3,5 +3,5 @@ 형식이죠. 복사도 같은 것을 클립보드에 넣습니다. 화면에 있는 것은 그것을 보여 주는 방식일 뿐입니다. 좌우로 나란히, 또는 한 열로, 그리고 달라지지 않은 부분은 전부 보여 달라고 하지 않는 한 개수로 접혀 있습니다.

공백이나 대소문자, 빈 줄을 무시할 수 있나요?

됩니다. 각각 따로요. 공백을 무시하면 다시 정렬만 한 파일이 변경 없음으로 비교되고, 대소문자를 무시하면 Error와 error가 같은 단어로 취급되고, 빈 줄을 무시하면 아무것도 싣지 않은 줄을 건너뜁니다. 그때 결과 위의 카운터는 무시해 달라고 한 차이를 무시하고 나면 둘이 같다고 말하는데, 그것은 '동일하다'와는 다른 주장이고 이 페이지는 그 두 주장을 섞지 않습니다.

얼마나 큰 비교까지 다룰 수 있나요?

여기 정해 둔 제한은 없습니다. 그 값을 치를 서버가 없으니까요. 이만 줄짜리 텍스트 둘에 변경이 한 줌뿐이라면 즉시 비교됩니다. 진짜 일이 시작되기 전에 공통의 앞부분과 뒷부분을 잘라 내니까요. 공통점이 전혀 없는 두 텍스트의 비교는 일찍 멈추고 그렇다고 말합니다. 이미 뻔한 것을 증명하느라 1분을 쓰는 대신에요. 아주 긴 비교는 처음 몇천 줄을 그리고 나머지는 내려받는 패치에 맡깁니다.

무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도 없으며 붙여 넣는 양에도 제한이 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 텍스트에 관한 것은 넘어가지 않습니다.

오프라인에서도 되나요?

됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 텍스트를 어딘가로 보내서 비교해 오는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.