도구 사용 FAQ: 데이터, 파일, 내보내기
핵심 요약: 데이터가 업로드되는지, 얼마나 큰 파일이 동작하는지, 로컬에 무엇이 저장되는지, 중국어가 왜 이스케이프로 바뀌는지: 온라인 JSON 도구의 실제 경계를 설명하는 열 가지 질문.

핵심부터 말하면, 파싱, 형식화, diff, 쿼리는 전부 브라우저에서 실행되고 오프라인에서도 계속 동작합니다. 민감한 데이터를 처리한 뒤 localStorage 이력을 지우세요. 10MB를 넘으면 파일을 브라우저에 붙이지 말고 명령행 스트리밍 도구로 전환하세요.
민감한 페이로드를 온라인 도구에 붙이기 전에 어디로 가는지 아세요. 이 글은 문법이 아니라 도구의 런타임 동작만 다룹니다.
1. 데이터와 프라이버시
온라인 JSON 포매터가 데이터를 서버로 업로드하나?
아니요. 파싱, 형식화, 압축, diff, 쿼리 모두 브라우저에서 일어나고 페이지는 붙여 넣은 것을 애플리케이션 서버로 절대 보내지 않습니다.
온라인 도구가 데이터를 업로드하는지 알려면 프라이버시 명세를 읽을 필요가 없고 브라우저 네트워크 패널이면 충분합니다:
- 개발자 도구를 열고 Network 패널로 전환해 로그 보존을 켭니다.
- JSON을 붙여 넣고 "Format"을 클릭합니다.
- 새 XHR이나 fetch 요청이 나타나는지, 본문에 내용이 들어 있는지 봅니다.
진짜 로컬 도구라면 이 단계에서 정적 자산 요청만 보입니다. 반대로 단일 형식화 동작이 POST /api/format을 만들고
본문이 원본 텍스트라면, 페이지가 무엇을 주장하든 데이터는 이미 브라우저를 떠났습니다.
이 사이트의 모든 도구는 순수 프런트엔드 구현이고 빌드 출력에 서버 API가 없습니다. 오프라인 후 캐시를 맞는 새로고침도 동작하며, 이것이 "완전 로컬"임을 판별하는 가장 직접적인 방법입니다.
오프라인에서도 쓸 수 있나?
예, 페이지를 한 번 로드했다면 가능합니다.
사이트 자산은 첫 방문에 브라우저 캐시로 내려오므로 이후 네트워크가 없어도 형식화, 압축, JSON5 변환, JSONPath 쿼리가 계속 동작합니다. 네트워크에 의존하는 기능(새 버전 확인, 데스크톱 설치 파일 다운로드)만 실패합니다.
오프라인 시험도 "데이터가 절대 떠나지 않는다"를 확인하는 좋은 방법입니다. 끊는 순간 전부 깨지면 모든 동작이 서버와 대화하고 있었던 것입니다.
데이터가 로컬에 저장되나? 어떻게 지우나?
예, 하지만 현재 브라우저의 localStorage에만, 그리고 이력과 UI 설정만 저장됩니다.
- 이력: 최근 처리한 100개 항목을 최신순으로, 전에 붙여 넣은 데이터를 떠올리는 데 사용
- UI 설정: 테마, 언어, 들여쓰기 선호 등
- 저장하지 않음: 파일 자체, 업로드 기록, 또는 신원을 담는 것은 없음
지우는 방법은 좁은 것에서 넓은 것 순으로 세 가지입니다:
| 방법 | 범위 | 사용 시점 |
|---|---|---|
| 이력 페이지의 "Clear history" | 이력만 삭제, 설정 유지 | 민감한 데이터 처리 후 |
개발자 도구에서 localStorage.clear() 실행 |
이 사이트의 모든 로컬 데이터 | 설정 이상 진단 |
| 이 사이트에 대한 브라우저 "Clear browsing data" | 쿠키, 캐시, 저장소 함께 | 공용 컴퓨터 사용 전 |
공용 컴퓨터에서 운영 데이터를 처리하면 탭만 닫지 말고 끝나면 이력을 지우세요. localStorage는 탭을 닫는다고 사라지지 않습니다.
중국어 문자가 왜 \u4e2d\u6587이 되나?
"이스케이프" 기능이 비 ASCII 문자를 Unicode 이스케이프 시퀀스로 변환하기 때문입니다. 깨짐이 아니라 의도된 동작입니다.
\u4e2d는 문자 中(U+4E2D)의 코드 포인트입니다. 두 형태는 JSON에서 의미상 동일하고 같은 문자열로 파싱됩니다:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
이스케이프가 필요한 때는? JSON을 ASCII만 받아들이는 옛 시스템에 내장할 때, HTTP 헤더에 쓸 때, 다른 문자열 안에 중첩할 때. 필요하지 않은 때는? 대부분 API 전송과 파일 저장에는 필요 없고, 중국어를 UTF-8로 직접 저장하면 바이트를 아낍니다. 중국어 한 문자가 3바이트이고, 이스케이프하면 6바이트가 됩니다.
중국어가 \u4e2d로 바뀌었다면 인코딩이 깨졌다고 의심하기 전에 "Escape" 버튼을 눌렀는지 먼저 확인하세요.
2. 파일과 크기
어떤 파일 크기를 지원하나?
브라우저 쪽에 하드 제한은 없고, 실제 제한은 세 곳에서 옵니다:
| 단계 | 대략 병목 | 증상 |
|---|---|---|
| 텍스트 상자에 붙여 넣기 | 1~5 MB | 붙여 넣은 뒤 입력 지연, 커서 지연 |
JSON.parse |
50~100 MB | 메인 스레드가 수 초 블록, 페이지 무응답 |
| 트리 렌더링 | 1만~2만 노드 | 확장 중 프레임 드롭, 스크롤 멈춤 |
즉 수십 MB 파일은 "파싱될 수는" 있지만 "쓸 수는 없습니다". 그런 데이터를 진짜 처리해야 할 때 올바른 선택은 더 강한 온라인 도구를 찾는 것이 아니라 스트리밍으로 전환하는 것입니다(성능과 보안 FAQ 참고).
경험 법칙: 2MB 미만은 온라인 도구가 매끄럽고, 2~10MB는 한두 번 지연을 받아들이며, 10MB를 넘으면 로컬 스크립트를 선호하세요.
붙여 넣은 뒤 브라우저가 멈춥니다. 어떻게 하나?
먼저 새로고침하지 마세요. 새로고침은 내용을 잃고 다시 붙여 넣어야 합니다. 이 순서로 구조하세요:
- 10~30초 기다립니다. 대개 메인 스레드가 파싱이나 렌더 중이라 스스로 회복합니다.
- 회복되면 즉시 "Minify" 뷰로 전환하거나 트리를 접어 DOM 노드를 줄입니다.
- 내용을 로컬 파일로 복사하고 명령행으로 전환합니다:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100
# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l
다음에 큰 파일을 만나면 먼저 wc -c로 바이트 수를 보고 브라우저에 붙일지 결정하세요.
붙여 넣은 뒤 형식이 왜 그대로인가?
흔한 세 원인, 빈도순:
- 입력이 이미 압축되어 있고 문법 오류가 없음: 형식화는 들여쓰기만 조정하므로 원본이 진짜 두 줄이면 이후에도 두 줄입니다. 문자열 안의 줄 바꿈은 확장되지 않습니다.
- 내용이 JSON이 아님: 예: JavaScript 객체 리터럴(따옴표 없는 키, 작은따옴표)을 붙여 넣어 파서가 형식화 대신 오류를 보고합니다.
- 잘못된 버튼 클릭: 압축과 형식화는 반대 방향이고 압축은 들여쓰기를 모두 제거합니다.
구분 방법: 출력 영역 우상단 문자 수를 보세요. 형식화 후에는 수가 늘어야 합니다(추가 들여쓰기와 줄 바꿈). 줄었다면 압축을 실행한 것입니다.
3. 입력과 출력
결과를 파일로 어떻게 내보내나?
세 방법, 신뢰도순:
| 방법 | 동작 | 사용 시점 |
|---|---|---|
| 다운로드 버튼 | "Download"를 클릭해 .json 파일 생성 |
보관해야 할 큰 결과 |
| 클립보드 복사 | "Copy"를 클릭 | 코드에 바로 다시 붙일 작은 결과 |
| 수동 전체 선택 복사 | 출력 영역을 선택하고 Ctrl/Cmd + C |
복사 버튼이 실패할 때 폴백 |
다운로드 파일은 기본으로 BOM 없는 UTF-8입니다. 이 점이 중요합니다. BOM이 있는 JSON은 많은 파서에서 그대로 깨집니다 (문법과 형식 FAQ의 BOM 절 참고).
JSON5와 JSONC를 지원하나?
예, 하지만 "파싱"과 "출력"을 구분하세요.
- 입력 쪽에서는 JSON5(작은따옴표, 따옴표 없는 키, 주석, 후행 쉼표, 16진수)나 JSONC(주석만)를 붙여 넣을 수 있습니다.
- 출력 쪽에서는 표준 JSON으로 변환하거나, 표준 JSON을 JSON5로 되돌려 수동 편집을 쉽게 할 수 있습니다.
시스템 경계를 넘을 때는 항상 표준 JSON을 내보내세요. JSON5는 사람이 설정을 쓰기 위한 방언이고,
Content-Type: application/json 요청 본문에 주석이나 후행 쉼표가 있으면 대개 서버가 거부합니다.
4. 환경과 호환성
휴대폰에서 동작하나?
예. 인터페이스가 단일 열로 재배치되고 형식화, 압축, diff, JSONPath가 모두 유지됩니다.
그러나 휴대폰에서 큰 파일을 처리하는 것은 경험이 나쁩니다. 소프트 키보드가 내용을 가리고, 텍스트 선택이 어려우며, 앱을 전환하면 브라우저가 페이지를 버려 내용을 잃을 수 있습니다. 응급 상황으로는 괜찮지만 매일은 데스크톱에서 하세요.
같은 파일이 Chrome에서는 열리는데 Safari에서는 오류가 나는 이유는?
대개 브라우저 차이가 아니라 인코딩 차이입니다. 이 순서로 디버그하세요:
- BOM: Windows Notepad가 저장한 UTF-8은 BOM을 포함하고, 일부 파서가 이를 용인하지 않습니다.
- 줄 끝: CRLF와 LF를 섞는 것은 JSON 자체에 영향이 없지만 보고되는 오류 줄 번호를 밀어 "오류 위치가 틀린" 것처럼 보입니다.
- 보이지 않는 문자: 웹 페이지에서 복사한 텍스트에 폭 0 공백(U+200B)이 있을 수 있고, 눈에는 안 보이지만 키 매칭을 깨기에 충분합니다.
명령 하나로 꿰뚫어 볼 수 있습니다:
# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd
5. 빠른 참조
| 질문 | 결론 |
|---|---|
| 데이터를 업로드하나 | 아니요, 모두 브라우저에서 로컬 처리, 오프라인 동작 |
| 데이터가 어디에 저장되나 | localStorage, 이력과 설정만, 파일은 절대 아님 |
| 합리적인 파일 크기 | 2MB 미만 매끄러움, 10MB 넘으면 명령행으로 |
중국어가 \u로 바뀜 |
이스케이프를 눌렀음, 동등하지만 부피가 크고 대개 불필요 |
| 멈췄을 때 | 회복 대기 → 트리 접기 → 복사해서 jq 사용 |
| 내보내기가 BOM 없음인가 | 예, BOM 없는 UTF-8 |
| 주석을 지원하나 | 입력 쪽은 JSON5/JSONC, 출력은 표준 JSON |