소개
여기 있는 모든 도구는 하나의 JSON 파서를 바라보는 창입니다. JSON.parse를 감싼 것이 아니라 처음부터 직접 썼습니다. 그 결정이 이 사이트가 존재하는 이유입니다.
왜 파서를 직접 쓰는가
내장 파서를 감싸는 것이 당연한 선택이고, 온라인 JSON 도구는 거의 전부 그렇게 합니다. 검증이 공짜로 딸려 옵니다. 동시에 바깥에서는 고칠 수 없는 문제 세 가지도 딸려 옵니다.
오류가 쓸모없습니다. 내장 파서는 문제 하나를 알리고 멈춥니다. 컴파일러를 위해 쓰인 메시지를 줄 뿐, 무엇을 해야 하는지에 대한 힌트는 없고, 몇몇 런타임에서는 줄 번호조차 없습니다. 깨진 페이로드를 든 개발자에게 필요한 것은 정확한 문자, 그 자리에서 무엇이 기대됐는지, 그리고 해결책입니다. 그것을 얻으려면 스캔을 직접 소유해야 합니다.
데이터를 고쳐 씁니다. 12345678901234567890을 파싱했다가 다시 문자열로 만들면 12345678901234567000이 나옵니다. 아무 경고도 없습니다. 그렇게 만든 포매터는 무언가를 출력하기도 전에 이미 여러분의 페이로드를 바꿔 놓은 것이고, ID나 금액이라면 그것은 아무 일도 없어 보이는 심각한 버그입니다. 우리 포매터는 모든 숫자의 원본 텍스트를 그대로 다시 내보내므로 이런 일이 생길 수 없습니다. 자세한 설명은 여기.
거의 JSON인 입력에는 아무 도움이 못 됩니다. 끝 쉼표, 작은따옴표, 파이썬 리터럴, 주석, 채팅 클라이언트에서 붙여 넣은 줄바꿈 없는 공백. 이런 것들을 고치고 무엇이 바뀌었는지 설명하려면 정확히 찾아내야 하고, 그것도 결국 스캔을 직접 소유한다는 뜻입니다.
그렇게 해서 얻은 것
- 줄, 열, 강조된 구간, 무엇이 기대됐는지, 그리고 해결책이 함께 붙은 오류.
- 한 문서의 모든 오류를 한 번에 보고. 시도할 때마다 하나씩이 아니라.
- 붙여 넣은 그대로 서식을 통과하는 숫자.
- 중복 키를 둘 다의 위치와 함께 보고.
- 보이지 않는 문자를 정확히 지목. 줄바꿈 없는 공백은 "예상치 못한 토큰"이 아니라 "4행 12열의 줄바꿈 없는 공백"으로 보고됩니다.
- 거의 JSON인 것을 고치고 가한 변경을 전부 나열하는 복구 모드. 판단이 섞인 변경과 안전한 변경을 나눠 보여 줍니다.
- 반복 방식 파서. 중첩 깊이를 제한하는 것은 호출 스택이 아니라 메모리입니다.
여기서 프라이버시는 마케팅이 아니라 기술적 결정입니다
2025년 11월, 가장 큰 온라인 JSON 포매터 두 곳이 저장된 붙여넣기 8만 건 이상, 5년에 걸쳐 쌓인 약 5GB를 유출했습니다. 노출된 데이터에는 정부·의료·항공우주 조직에 속한 Active Directory 자격 증명, 클라우드 액세스 키, 개인 액세스 토큰, 은행 기록이 포함돼 있었습니다.
교훈이 되는 대목은 유출 자체가 아닙니다. 그중 한 사이트가 첫 화면에서 "여러분의 데이터는 브라우저에서 검증됩니다"라고 말하면서, 파일 업로드 버튼은 여러분의 파일을 서버로 보내고 있었다는 점입니다. 두 진술은 서로 다른 기능에 대해 각각 참이었고, 그 페이지를 읽는 누구도 어느 쪽이 어느 쪽인지 알 수 없었습니다.
그래서 이 사이트는 여러분에게 한 문장을 믿어 달라고 하지 않습니다. 모든 페이지는 목적지 하나만 지정한 connect-src 허용 목록과 함께 전송됩니다. 페이지 조회 수를 세는 애널리틱스 엔드포인트 하나입니다. 업로드 엔드포인트도, URL에서 불러오는 기능도, 저장 링크도, 계정도, 광고도 없습니다. 그중 어느 것이든 여러분의 페이로드를 실어 나를 만큼 넓은 예외를 필요로 하기 때문입니다. 전부 직접 확인하는 방법은 여기.
어떻게 만들어졌나
- Astro로 만든 정적 페이지. 서버 사이드 렌더링도 API도 없습니다.
- 파서, 포매터, 복구 엔진, CSV 작성기, XML 파서, 비교, JSONPath 엔진 모두 이 사이트를 위해 작성했고, 빌드마다 도는 테스트 스위트가 덮고 있습니다.
- 에디터는 CodeMirror 6를 쓰되, 그 자체로 동작하는 평범한 textarea 뒤에서 지연 로딩합니다. Monaco였다면 대략 5MB였을 것입니다.
- js-yaml이 유일한 런타임 서드파티 의존성이고, YAML 페이지 두 곳에서만 불러옵니다. YAML 1.2는 부분 구현이 문서를 받아들이고 조용히 틀린 값을 내놓기에 충분할 만큼 크고, 그것이야말로 이 사이트가 피하려고 존재하는 실패 형태입니다.
- 모든 파싱과 서식은 웹 워커에서 돌아가므로 10MB 문서에도 탭이 얼지 않습니다.
- 폰트는 직접 호스팅하고 부분집합으로 줄였습니다. CDN에서 가져오는 것은 아무것도 없습니다.
정정
이 사이트의 주장은 정확성에 신중하다는 것이고, 그렇다면 여기서의 오류는 다른 곳에서보다 무겁습니다. 이 사이트에 인용된 모든 오류 메시지는 기억이 아니라 실제로 파서를 돌려 얻은 것입니다. V8 문자열은 Node v24.15.0에서, 파이썬 문자열은 CPython 3.14.3에서 얻었습니다. 파이어폭스와 사파리의 문자열은 실행해 검증할 수 없었기에 의도적으로 넣지 않았습니다.
잘못된 것을 발견하면 알려 주세요. 고치고 변경 기록에 남기겠습니다.
누가 관리하는가
이 항목은 그럴듯한 이름으로 채우는 대신 의도적으로 비워 두었습니다. 이 사이트를 위한 조사에서, 기사 마크업이 "Roronoa Zoro"라는 저자와 "Infrastructure Engineer"라는 직함을 내세운 경쟁 사이트를 찾았습니다. 만화 시리즈의 가공 인물입니다. 신뢰 신호를 충족하려고 사람을 지어내는 것은 신호가 아예 없는 것보다 나쁩니다. 그러니 여기에 넣을 참된 것이 생길 때까지는 아무것도 두지 않습니다.