§

JSON 붙여넣기

§

압축 결과

text
§

절약 %

  • 원본 크기
  • 압축 후 크기
  • 절약
  • 절약 %

JSON을 최소 크기로 줄이는 작업은 한국 SI·핀테크·이커머스 현장에서 매일 반복되는 최적화입니다. 카카오페이·토스·네이버페이의 결제 API는 응답 페이로드가 작을수록 모바일 RTT가 줄어들고, 삼성 SmartThings의 IoT JSON 텔레메트리는 LG U+ 5G 망 위에서 패킷당 비용이 누적됩니다. KISA의 API 보안 가이드와 NTS 국세청 오픈 API, 그리고 쿠팡 이츠·쿠팡 윙의 셀러 API에서도 압축된 JSON이 표준이며, 외부 SaaS에 페이로드를 붙여넣을 수 없는 PIPA 준수 환경에서 본 도구는 브라우저 안에서만 동작합니다.

JSON 압축이란 무엇인가요?

JSON(JavaScript Object Notation)은 RFC 8259와 ECMA-404가 정의한 가볍고 텍스트 기반의 데이터 교환 형식입니다. 압축은 문자열 리터럴 바깥에 있는 모든 스페이스, 탭, 줄바꿈을 제거합니다 — 모든 값은 바이트 단위로 보존되고, 장식용 공백만 사라집니다. 출력은 입력과 완전히 동일한 값으로 파싱됩니다.

JSON 압축은 어떻게 작동하나요?

입력은 전적으로 브라우저 내부에서 내장된 JSON.parseJSON.stringify 함수를 사용해 처리됩니다. 주요 단계는 다음과 같습니다:

  1. 텍스트 영역의 입력을 한 글자도 빠짐없이 그대로 읽고, 모든 바이트는 로컬 메모리에 보관됩니다.
  2. 브라우저는 JSON.parse로 입력을 파싱합니다. 유효한 JSON이 아니라면 파서가 SyntaxError를 던지고, 그 내용을 그대로 보여드립니다 — 입력 텍스트는 절대 페이지를 벗어나지 않습니다.
  3. 파싱에 성공하면 결과 값은 인덴트 인자 없이 JSON.stringify(value)로 재직렬화되어, 같은 값을 표현하는 가장 짧은 유효 형태로 변환됩니다.
  4. 원본과 압축 텍스트의 바이트 길이는 new TextEncoder().encode(...).byteLength로 계산됩니다 — HTTP 서버가 실제 회선에서 보게 될 UTF-8 바이트 수와 동일합니다.
  5. 결과는 읽기 전용 텍스트 영역에 기록되고, 메트릭 스트립은 절약된 바이트와 비율을 보여주며, 다운로드 버튼은 결과를 배포 가능한 .min.json 파일로 묶어줍니다.

이 도구로 JSON을 압축하는 이유는 무엇인가요?

  • 프라이버시: 모든 파싱, 압축, 측정 작업이 브라우저 내부에서 진행됩니다. JSON은 절대 저희 서버에 도달하지 않습니다 — 업로드 없음, 텔레메트리 없음, 계정 불필요.
  • 실제 바이트 수치: 원본 크기, 압축 후 크기, 절약량은 모두 TextEncoder로 계산되어 CDN이나 API 게이트웨이가 실제로 청구하는 UTF-8 바이트 차이를 그대로 보여줍니다.
  • 데이터 손실 없음: 압축은 순수하게 장식용 작업입니다 — 모든 값이 같은 JSON 트리로 파싱되므로, 프로덕션 페이로드, 매니페스트, 임베디드 픽스처에 안전하게 사용할 수 있습니다.
  • 빠른 속도: 순수한 JSON.parse + JSON.stringify가 일반적인 클립보드 크기의 페이로드를 즉시 처리하며, 외부 라이브러리를 로드하지 않습니다.

JSON 압축의 일반적인 활용은 무엇인가요?

JSON에서 의미 없는 공백을 제거하는 작업은 웹 개발, 데이터 엔지니어링, 임베디드 시스템 전반에서 자주 보입니다:

  • API 페이로드 축소: 종량제 API 게이트웨이, 유료 출구 회선, 위성 회선을 통과하기 전에 요청·응답 본문을 줄입니다.
  • HTML 임베딩: 프리티 프린터의 공백이 렌더링된 페이지로 새지 않도록 JSON 블롭을 data-* 속성이나 <script type="application/json"> 태그 안에 넣습니다.
  • 더 작은 localStorage: 프리티 프린트 대신 압축된 JSON을 localStorage / IndexedDB에 저장하면 모바일 브라우저의 엄격한 오리진별 저장 한도에서 특히 도움이 됩니다.

JSON 압축 예시는 어떤 모습인가요?

약 1.2 KB(2 칸 들여쓰기 기준 약 1,225 바이트)의 프리티 프린트된 설정 파일을 붙여넣고 압축을 누르면 보통 0.4 KB 미만으로 줄어듭니다 — 약 66% 절감 — 모든 키와 값이 정확히 보존된 채로 말입니다. 다운로드되는 output.min.json은 포맷팅 미들웨어가 전혀 없는 HTTP 서버가 Content-Type: application/json로 응답하는 것과 바이트 단위로 일치합니다.

정말 브라우저에서 실행되나요?

네. 압축 파이프라인은 브라우저 탭 안에서 도는 순수한 JSON.parse + JSON.stringify입니다. 업로드도 없고, Service Worker가 입력을 프록시하지도 않으며, 압축 단계 자체는 네트워크 요청을 하나도 발생시키지 않습니다. 외부로 나가는 트래픽은 표준 페이지 자원(CSS, 폰트, 분석)뿐이며 — 여러분의 JSON은 Ultim8Soft에 도달하지 않습니다.

왜 JSON을 압축하나요?

압축된 JSON은 프리티 프린트 원본과 완전히 동일한 값으로 파싱되면서도 회선과 저장소에서 더 작습니다. 더 작은 페이로드는 더 적은 CDN 출구 비용, 더 빠른 모바일 다운로드, Service Worker의 메모리 부담 감소, JWT 페이로드·HTML data-* 속성·localStorage 한도 같은 고정 크기 봉투에 더 잘 맞도록 해줍니다. 트래픽이 많은 API에서는 절감이 누적됩니다 — 하루 1 GB 엔드포인트에서 30%를 줄이면 월 약 9 GB를 절약합니다.

압축하면 데이터가 손실되나요?

아니요. JSON 압축은 문자열 리터럴 외부에 있는 공백 — 스펙이 이미 비의미로 분류하는 스페이스·탭·줄바꿈 — 만 제거합니다. 모든 키, 값, 숫자, 이스케이프 시퀀스, 문자열 안의 문자는 바이트 단위로 보존됩니다. 출력은 입력과 deepEqual인 값으로 파싱되고, 사라지는 것은 장식용 들여쓰기뿐입니다.

포매터와 압축기의 차이는 무엇인가요?

동반 도구인 JSON 포매터는 반대 방향으로 동작합니다: 중첩 구조를 사람이 읽을 수 있도록 공백을 펼칩니다. 압축기는 그 공백을 다시 걷어내 전송과 저장을 위한 형태로 만듭니다. 두 도구는 서로의 역연산입니다 — JSON 문서를 포매터 → 압축기를 거치게 하면 처음 압축기에 넣었던 바이트열과 동일한 결과가 돌아옵니다. 둘 다 장식용 마크업이 아니라 파싱된 값에 대해 동작하기 때문입니다.

이 JSON 압축기는 여러분의 Node.js, Deno, 브라우저 런타임과 동일한 파서를 사용하며, 군더더기 없는 HTTP 서버가 내보내는 것과 바이트 단위로 동일한 출력을 만듭니다. 위에 JSON을 붙여넣고, 결과를 복사하거나 .min.json으로 다운로드하세요.