코멘트를 달기 전 PR 검토
GitHub의 diff 화면도 훌륭하지만, 때로는 포매터가 만든 잡음 없이 실질적인 변경만 보고 싶을 때가 있습니다. 두 버전을 붙여넣고 공백 무시를 켜면 외형적인 재정렬은 사라지고 로직 변경만 남습니다.
두 텍스트나 코드를 줄 단위와 단어 단위 하이라이트로 비교합니다. 나란히 보기 또는 통합 보기, 공백 무시, 대소문자 무시 — 모두 브라우저 안에서 처리됩니다.
아니요. 도구 전체는 이 페이지 안에서 실행되는 JavaScript입니다. diff 알고리즘(LCS, 최장 공통 부분 수열)은 사용자의 CPU에서 실행되며 결과는 곧바로 DOM에 렌더링됩니다. DevTools → Network를 열어 두고 확인해 보시면 diff 처리 중에 어떠한 요청도 발생하지 않습니다. 내부 코드, 고객 데이터, 계약서 초안 등 서버 도구에 기록되기를 원치 않는 어떤 내용이든 안심하고 붙여넣으실 수 있습니다.
먼저 두 입력을 줄 단위로 분리하고 LCS(최장 공통 부분 수열) 알고리즘을 실행합니다. 양쪽에서 모두 일치하는 줄은 동일한 줄로 표시됩니다. 일치하지 않는 줄은 추가 옆에 삭제가 나타날 때 '변경(change)' 행으로 짝지어집니다. 짝지어진 각 변경에 대해 줄 안의 단어(공백 기준 분리)에 다시 한 번 LCS를 실행하므로, 줄 전체가 아니라 실제로 편집된 단어만 빨강·초록으로 강조됩니다.
광고, 팝업, 외부 트래커가 없는 깔끔하고 빠른 텍스트 diff 환경입니다. 개발자, 작가, 그리고 변경 사항을 빠르게 찾아야 하는 모든 분을 위해 만들어졌습니다.
분할 보기(두 칼럼, 전형적인 IDE 느낌)와 통합 보기(한 칼럼에 +/− 마커 표시)를 한 번의 클릭으로 전환할 수 있습니다. 두 보기 모두 줄 번호를 표시하고 변경 사항을 인라인으로 강조합니다.
두 줄이 변경되면 두 번째 단어 단위 diff를 실행해 실제로 다른 부분만 강조 표시합니다. 줄 전체가 아니라 변경된 단어만 빛나므로 200자짜리 줄에서 오타 하나도 쉽게 찾을 수 있습니다.
공백과 대소문자 옵션을 켜고 꺼서 외형적인 변경(들여쓰기 재정렬, 대소문자 변경)을 걸러내고 실제 편집에만 집중할 수 있습니다.
두 텍스트는 모두 브라우저 탭 안에 머무릅니다. diff 알고리즘은 JavaScript로 로컬에서 실행되며, DevTools → Network에서 확인할 수 있듯이 입력하는 동안 어떠한 요청도 발생하지 않습니다.
추가, 삭제, 수정된 줄 수를 한눈에 확인할 수 있습니다. 한 번의 클릭으로 diff를 클립보드에 복사해 코드 리뷰나 커밋 메시지에 바로 붙여넣을 수 있습니다.
페이지가 한 번 로드된 뒤에는 모든 처리가 로컬에서 이루어집니다. 비행기 안, 회사 방화벽 뒤, 또는 네트워크가 전혀 없는 환경에서도 동작하므로 기밀 코드 리뷰에 유용합니다.
그 뒤에 숨은 수학은 웹보다도 오래되었습니다. 1965년에 등장한 LCS 알고리즘과 1986년 Eugene Myers가 개선한 알고리즘이 그 핵심입니다.
두 입력은 \n(또는 \r\n)을 기준으로 나누어집니다. 각 줄이 하나의 토큰이 됩니다. 실제 코드나 문서에서 일어나는 대부분의 편집이 줄 단위로 추가·삭제·수정되기 때문에, 문자 단위가 아닌 토큰 단위로 비교합니다.
최장 공통 부분 수열은 두 입력에 같은 순서로 등장하는 줄들의 가장 큰 집합입니다. 오른쪽 아래에서부터 거슬러 올라가며 DP 표를 채우고, 각 셀에는 그 위치에서 끝까지의 LCS 길이가 저장됩니다. 시간과 메모리 모두 O(m × n)이 소요됩니다.
표의 왼쪽 위에서 시작해 앞으로 진행합니다. 현재 양쪽 줄이 일치하면 equal을, 그렇지 않으면 LCS 길이를 유지하는 방향(오른쪽 또는 아래)을 골라 delete 또는 insert를 출력합니다. 그 결과로 원본을 수정본으로 바꾸는 연산의 시퀀스가 만들어집니다.
삭제 다음에 삽입이 이어지면 두 줄을 하나의 변경 행으로 묶습니다. 줄 안에서 실제로 다른 부분만 강조하기 위해, 공백을 기준으로 나눈 각 줄의 단어들에 같은 LCS 알고리즘을 한 번 더 실행합니다.
diff 체커가 실제로 필요해지는 상황들입니다.
GitHub의 diff 화면도 훌륭하지만, 때로는 포매터가 만든 잡음 없이 실질적인 변경만 보고 싶을 때가 있습니다. 두 버전을 붙여넣고 공백 무시를 켜면 외형적인 재정렬은 사라지고 로직 변경만 남습니다.
법무 담당자나 운영 팀은 종종 계약서 v1과 v2 사이의 변경 사항을 알아야 합니다. 두 문서를 붙여넣으면 단어 단위 하이라이트가 적용된 색상 diff를 즉시 확인할 수 있습니다. Word도, 변경 내용 추적도, 외부 서버에 기밀 조항을 업로드할 필요도 없습니다.
설정 파일에 sed, awk, 또는 Python regex를 적용하셨나요? 원본과 결과를 여기에 붙여넣어 스크립트가 의도한 부분만 수정했는지 확인하실 수 있습니다. 문자 단위 하이라이트가 빠르게 훑어보면 놓치기 쉬운 의도치 않은 편집까지 잡아냅니다.
번역 쌍(원문 대 번역, 또는 같은 원문에 대한 두 번역)을 비교할 때 단어 단위 diff를 사용하면 빠진 단어, 중복된 표현, 교정자가 놓친 문장 부호 변경을 손쉽게 찾을 수 있습니다.
비교하려는 텍스트는 대개 비공개입니다. 내부 저장소의 코드, 계약서 초안, 고객 데이터 내보내기, 출시 전 제품 카피 등이 그렇습니다. 그것들을 모르는 서버에 붙여넣는 순간 사용자가 통제할 수 없는 기록이 남습니다. iKit의 diff 체커는 이미 브라우저 탭에 로드되어 있는 JavaScript이며, 비교는 사용자의 CPU에서 실행될 뿐 네트워크 소켓을 거치지 않습니다.
Deep-dive tutorials and tool comparisons from the iKit blog.
Pretty-print, validate, and structurally diff messy JSON — when each one is the right tool.
Compare the best Markdown editors of 2026; pair with the diff tool for tracking documentation changes.
아니요. 도구 전체는 이 페이지 안에서 실행되는 JavaScript입니다. diff 알고리즘(LCS, 최장 공통 부분 수열)은 사용자의 CPU에서 실행되며 결과는 곧바로 DOM에 렌더링됩니다. DevTools → Network를 열어 두고 확인해 보시면 diff 처리 중에 어떠한 요청도 발생하지 않습니다. 내부 코드, 고객 데이터, 계약서 초안 등 서버 도구에 기록되기를 원치 않는 어떤 내용이든 안심하고 붙여넣으실 수 있습니다.
먼저 두 입력을 줄 단위로 분리하고 LCS(최장 공통 부분 수열) 알고리즘을 실행합니다. 양쪽에서 모두 일치하는 줄은 동일한 줄로 표시됩니다. 일치하지 않는 줄은 추가 옆에 삭제가 나타날 때 '변경(change)' 행으로 짝지어집니다. 짝지어진 각 변경에 대해 줄 안의 단어(공백 기준 분리)에 다시 한 번 LCS를 실행하므로, 줄 전체가 아니라 실제로 편집된 단어만 빨강·초록으로 강조됩니다.
분할 보기는 두 텍스트를 짝지어진 줄 번호와 함께 나란히 보여 줍니다. IDE(VS Code, JetBrains)에서 보던 diff 모습과 비슷합니다. 통합 보기는 한 칼럼에 +/− 접두사가 붙은 줄로 표시되며 `git diff` 출력과 비슷합니다. 작업 흐름에 맞는 쪽을 선택하시면 되며, 두 보기 모두 동일한 데이터를 보여 줍니다.
코드 재정렬(Prettier 실행, 탭/스페이스 전환, 줄 끝 정규화)은 시각적 잡음을 만들어 실제 변경 사항을 가립니다. '공백 무시'를 켜면 diff 처리 전에 연속된 공백이나 탭이 한 칸으로 줄어들고 줄 양 끝의 공백이 정리되므로, 외형적인 변화가 아닌 의미 있는 편집만 보이게 됩니다.
LCS 알고리즘은 양쪽 줄 수 m, n에 대해 O(m × n)의 메모리를 사용합니다. iKit는 비교를 약 400만 셀(약 16 MB)로 제한하므로 양쪽 모두 수천 줄 수준은 무리 없이 처리할 수 있습니다. 그보다 큰 diff(전체 데이터베이스 덤프, 전체 파일 로그 등)는 `diff`나 `git diff --no-index` 같은 CLI 도구를 사용하시는 것이 좋습니다. 이들은 수백만 줄까지 확장되는 더 영리한 알고리즘(Myers diff)을 사용합니다.