JSON 정리(포맷) vs 압축(미니파이), 언제 뭘 쓸까
같은 JSON도 두 가지 얼굴이 있습니다. 들여쓰기를 펼쳐서 사람이 읽기 좋게 만든 정리(포맷) 상태와, 공백을 전부 걷어 내 한 줄로 만든 압축(미니파이) 상태입니다. 데이터는 완전히 같은데 쓰임새가 다릅니다. 요약하면 사람이 읽을 때는 펼치고, 기계에 보낼 때는 압축합니다. 각각 언제 필요한지, 들여쓰기는 몇 칸이 관례인지, 키 정렬은 언제 쓰는지 정리합니다.
최종 업데이트: 2026년 7월
1. 정리(포맷)가 필요한 순간
API 응답이나 로그의 JSON은 대부분 한 줄로 붙어서 옵니다. 전송에는 그게 효율적이지만 사람 눈에는 고문입니다. 이런 순간에는 들여쓰기를 펼쳐야 합니다.
- 디버깅: “응답에 이 필드가 있긴 한가? 값이 null인가?”를 확인하려면 구조가 눈에 보여야 합니다. 한 줄짜리에서는 중첩 관계를 따라가는 것 자체가 일입니다.
- 코드 리뷰·이슈 공유: 동료에게 “이 응답이 이상해요”라고 전달할 때 정리된 JSON을 붙이면 받는 사람이 바로 읽습니다. 한 줄짜리를 붙이면 결국 상대방이 다시 정리하게 됩니다.
- 문서화: API 문서나 위키에 넣는 예시는 들여쓰기가 맞아야 예시 구실을 합니다. 문서 속 JSON은 읽히려고 존재하니까요.
압축 상태: {"user":{"name":"홍길동","roles":["admin","editor"]}}
정리 상태:
{
"user": {
"name": "홍길동",
"roles": ["admin", "editor"]
}
}
2. 압축(미니파이)이 필요한 순간
반대로 사람이 읽을 일이 없는 JSON은 공백이 전부 낭비입니다. 이런 때는 한 줄로 압축합니다.
- 전송 크기 줄이기: 들여쓰기와 줄바꿈도 전부 용량입니다. 깊이 중첩된 JSON이라면 공백이 전체의 상당 부분을 차지하기도 합니다. 요청 본문이나 저장 용량에 제한이 있을 때 효과가 있습니다.
- 한 줄 설정값: 환경 변수, 명령줄 인자, 스프레드시트의 한 칸처럼 “한 줄만 들어가는 자리”에 JSON을 넣어야 할 때가 있습니다. 줄바꿈이 들어가면 그 자리에서 값이 깨지므로 압축이 필수입니다.
JSON 포맷터·검증기에서는 들여쓰기 옵션에서 압축(한 줄)을 고르면 됩니다. 정리든 압축이든 문법 검사를 먼저 통과해야 하니, 틀린 JSON이 그대로 나가는 사고도 막아 줍니다.
3. 들여쓰기, 2칸·4칸·탭 중 무엇으로
정리할 때 들여쓰기 폭은 취향과 관례의 문제입니다. 데이터가 달라지는 것은 아니니 가볍게 정하면 되지만, 통용되는 감각은 있습니다.
- 2칸: 웹·자바스크립트 생태계의 사실상 표준입니다. JSON은 중첩이 깊어지기 쉬워서, 폭이 좁은 2칸이 화면을 아낍니다. 무엇을 쓸지 모르겠다면 2칸이 무난합니다.
- 4칸: 파이썬 등 4칸 들여쓰기에 익숙한 팀이나, 구조를 시원시원하게 보고 싶을 때 선택합니다. 깊이 중첩된 JSON에서는 줄이 길어지는 게 단점입니다.
- 탭: 보는 사람의 편집기 설정에 따라 폭이 달라진다는 특징이 있습니다. 탭을 표준으로 정한 팀이라면 맞추면 됩니다.
중요한 것은 폭 자체보다 한 프로젝트 안에서 통일하는 것입니다. 파일마다 들여쓰기가 다르면 버전 관리에서 공백 차이가 변경 사항처럼 잡혀 diff가 지저분해집니다.
4. 키 정렬은 언제 쓰나
키 정렬은 객체의 키를 일정한 순서(이 도구에서는 가나다순)로 재배열하는 기능입니다. JSON 표준에서 키 순서는 의미가 없으므로, 정렬해도 대부분의 프로그램은 똑같이 동작합니다. 그럼 왜 쓰냐면, 비교(diff)를 위해서입니다.
두 JSON이 “내용은 같은데 키 순서만 다른” 경우가 흔합니다. 서버가 응답할 때마다 순서가 달라지기도 하고, 손으로 편집하다가 순서가 바뀌기도 합니다. 이 상태로 비교하면 순서 차이가 전부 변경처럼 보여서 진짜 달라진 값을 찾기 어렵습니다. 양쪽 다 키를 정렬해 두면 순서 차이가 사라지고 실제로 달라진 값만 남습니다.
정렬한 두 결과를 텍스트 비교에 나란히 붙여넣으면 달라진 줄이 색으로 표시됩니다. 배열은 순서 자체가 데이터라서 정렬 대상이 아니며, 이 도구도 배열 순서는 그대로 둡니다. 드물게 키 순서에 의존하는 프로그램이 있다면 그때만 정렬을 끄면 됩니다.
5. 민감한 데이터를 온라인 도구에 붙여넣기 전에
JSON에는 API 키, 회원 정보, 내부 설정 같은 민감한 내용이 담기기 쉽습니다. 온라인 포맷터 중에는 입력을 서버로 보내 처리하는 곳도 있어서, 붙여넣는 순간 데이터가 외부로 나가는 셈이 될 수 있습니다. 습관 두 가지를 권합니다.
- 처음 쓰는 도구라면 서버 전송 여부를 확인하세요. 안내가 아예 없는 도구라면 민감한 데이터는 넣지 않는 편이 안전합니다.
- 확인이 어려우면 키나 개인정보 값을
"***"같은 자리표시자로 바꾼 뒤 붙여넣는 것도 방법입니다. 문법 검사에는 지장이 없습니다.
참고로 이 사이트의 JSON 포맷터·검증기는 검사와 정리를 전부 브라우저 안에서만 처리하고, 입력한 내용이 서버로 전송되거나 저장되지 않습니다. 내부 정보가 담긴 JSON도 외부로 나가지 않습니다.
붙여넣으면 즉시 검사하고, 들여쓰기 2칸·4칸·탭·압축과 키 정렬까지 한 화면에서 끝납니다.
JSON 정리·압축하러 가기6. 자주 묻는 질문
정리하거나 압축하면 데이터가 달라지나요?
아니요. 정리와 압축은 공백과 줄바꿈만 바꾸는 것이라 값 자체는 그대로입니다. 정리한 JSON을 다시 압축해도 원래의 한 줄과 같은 데이터입니다. 다만 브라우저 특성상 15~16자리가 넘는 아주 긴 숫자는 끝자리가 반올림될 수 있는데, 이 도구는 그런 숫자를 발견하면 경고를 띄웁니다.
압축하면 용량이 얼마나 줄어드나요?
들여쓰기 깊이와 구조에 따라 다릅니다. 얕은 JSON은 몇 퍼센트 수준이지만, 깊게 중첩되고 항목이 많은 JSON은 공백 비중이 커서 체감할 만큼 줄어듭니다. 이 도구는 정리 결과와 함께 크기 요약을 보여주므로 직접 비교해 볼 수 있습니다.
한글이 \ud55c\uae00처럼 깨져 보여요.
깨진 게 아니라 한글을 \uXXXX 형태로 이스케이프해 둔 것입니다. 데이터로는
동일하며, 이 도구에 붙여넣으면 읽을 수 있는 한글로 풀어서 보여줍니다. 반대로 ASCII만 허용하는
시스템에 보내야 한다면 \u 이스케이프 옵션을 켜서 변환할 수도 있습니다.
정리한 설정 파일, 어디가 바뀌었는지 확인하고 싶어요.
수정 전 버전과 수정 후 버전을 텍스트 비교에 나란히 붙여넣으면 달라진 줄만 색으로 표시됩니다. 비교 전에 양쪽을 같은 들여쓰기로 정리해 두면 공백 차이가 사라져서 훨씬 깔끔하게 보입니다.