AI에 표 데이터 넣을 때 — CSV·JSON·마크다운 중 뭐가 제일 쌀까
엑셀 표나 명단을 AI에게 넣고 분석시킬 때, 그냥 복사해서 붙여 넣는 경우가 많습니다. 그런데 같은 데이터라도 어떤 형식으로 넣느냐에 따라 토큰이 최대 2.6배까지 차이 납니다.
토큰은 곧 비용이자 처리 한도입니다. 직접 측정해서 어떤 형식이 유리한지 확인했습니다. 아래 수치는 전부 실제로 돌려 얻은 값이고, 맨 아래 코드로 재현할 수 있습니다.
결론부터
| 형식 | 토큰 수 | CSV 대비 |
|---|---|---|
| CSV | 99 | 100% (가장 효율적) |
| TSV (탭 구분) | 99 | 100% |
| 마크다운 표 | 124 | 125% |
| 자연어 문장 | 132 | 133% |
| 키:값 나열 | 163 | 165% |
| JSON (압축) | 166 | 168% |
| YAML | 191 | 193% |
| JSON (들여쓰기) | 261 | 264% (가장 비효율) |
가장 흔하게 쓰는 JSON 들여쓰기 형태가 가장 나쁩니다. 개발 도구에서 복사하면 대개 이 형태인데, CSV로 바꾸기만 해도 토큰이 62% 줄어듭니다.
측정 조건
직원 5명의 정보(이름·부서·직급·입사년도·연봉)를 동일한 내용으로 8가지 형식에 담아 각각의 토큰 수를 셌습니다. 토크나이저는 tiktoken 0.14.0의 o200k_base(GPT-4o 이후 세대)를 사용했습니다.
[
{
"이름": "김민수",
"부서": "영업팀",
"직급": "과장",
"입사년도": 2019,
"연봉": 5200
},
...
]
위 JSON(들여쓰기) = 261토큰
이름,부서,직급,입사년도,연봉
김민수,영업팀,과장,2019,5200
...
위 CSV = 99토큰같은 정보인데 162토큰 차이가 납니다. 데이터가 5행일 때 얘기입니다.
행이 늘어나면 격차가 더 벌어진다
5행에서는 JSON이 CSV의 1.68배였는데, 데이터가 커지면 어떻게 될까요. 같은 데이터를 반복해 행 수를 늘려가며 측정했습니다.
| 행 수 | CSV | JSON (압축) | JSON 배수 |
|---|---|---|---|
| 5행 | 99 토큰 | 166 토큰 | 1.68배 |
| 25행 | 435 토큰 | 822 토큰 | 1.89배 |
| 100행 | 1,695 토큰 | 3,282 토큰 | 1.94배 |
| 500행 | 8,415 토큰 | 16,402 토큰 | 1.95배 |
행이 많아질수록 JSON의 손해가 2배 가까이로 수렴합니다. 이유는 단순합니다. JSON은 행마다 키 이름(“이름”, “부서”…)과 중괄호·따옴표를 반복하지만, CSV는 헤더를 딱 한 번만 씁니다.
500행짜리 명단을 JSON으로 넣으면 CSV 대비 약 8,000토큰을 더 쓰는 셈입니다. 반복 작업이라면 그 차이가 그대로 비용으로 쌓입니다.
한글 키 이름도 비용이다
JSON을 꼭 써야 한다면, 키 이름을 영문으로 바꾸는 것만으로도 절약됩니다.
| JSON 키 이름 | 토큰 (5행) | 차이 |
|---|---|---|
| 한글 키 (이름, 부서, 직급…) | 166 | — |
| 영문 키 (name, dept, title…) | 136 | 18% 절약 |
앞선 측정에서 확인했듯 한국어는 영어보다 토큰을 많이 씁니다. 그 부담이 모든 행마다 반복되는 키 이름에서 특히 크게 나타납니다. 데이터 값은 한글로 두더라도 키는 영문으로 두는 것이 유리합니다.
그럼 언제 무엇을 쓸까
| 상황 | 권장 형식 | 이유 |
|---|---|---|
| 단순 표 데이터를 분석시킬 때 | CSV | 가장 저렴하고 AI도 잘 이해함 |
| 표를 그대로 보여주며 설명받을 때 | 마크다운 표 | 25% 더 비싸지만 가독성이 좋음 |
| 값에 쉼표·줄바꿈이 들어갈 때 | TSV | CSV와 비용 같고 구분자 충돌이 없음 |
| 구조가 중첩된 데이터 | JSON (압축) | 어쩔 수 없음. 단 들여쓰기는 빼기 |
| 데이터가 5~10건 정도로 적을 때 | 자연어 문장 | 차이가 미미하고 맥락 전달이 쉬움 |
실무에서 바로 적용할 것
- 엑셀에서는 CSV로 저장해 붙여 넣으세요. 화면 복사보다 확실합니다.
- JSON을 쓸 거면 들여쓰기를 빼세요. 이것만으로 36% 절약됩니다 (261 → 166).
- 필요 없는 열은 지우고 넣으세요. 열 하나를 빼면 모든 행에서 절약됩니다.
- 같은 데이터를 여러 번 질문한다면 한 번만 넣고 이어서 물으세요. 매번 다시 붙이면 매번 과금됩니다.
영어 데이터에서도 같은 경향인가
궁금해서 같은 구조의 영어 데이터로도 재봤습니다.
| 형식 | 한국어 데이터 | 영어 데이터 |
|---|---|---|
| CSV | 99 토큰 | 71 토큰 |
| 마크다운 표 | 124 토큰 | 99 토큰 |
| JSON (압축) | 166 토큰 | 115 토큰 |
경향은 동일합니다. CSV가 가장 싸고 JSON이 가장 비쌉니다. 다만 절대값은 영어가 약 30% 저렴한데, 이는 앞서 측정한 한국어의 토큰 부담과 일치합니다.
직접 재현하기
import tiktoken, json
enc = tiktoken.get_encoding("o200k_base")
rows = [
{"이름": "김민수", "부서": "영업팀", "직급": "과장", "입사년도": 2019, "연봉": 5200},
{"이름": "이지은", "부서": "개발팀", "직급": "대리", "입사년도": 2021, "연봉": 4800},
]
keys = ["이름", "부서", "직급", "입사년도", "연봉"]
csv = ",".join(keys) + "\n" + "\n".join(
",".join(str(r[k]) for k in keys) for r in rows)
js_pretty = json.dumps(rows, ensure_ascii=False, indent=2)
js_min = json.dumps(rows, ensure_ascii=False, separators=(",", ":"))
for name, text in [("CSV", csv), ("JSON 들여쓰기", js_pretty), ("JSON 압축", js_min)]:
print(name, len(enc.encode(text)), "토큰")행 수를 늘려가며 돌려보면 격차가 벌어지는 것도 확인할 수 있습니다.
정리
- 같은 데이터라도 형식에 따라 토큰이 최대 2.64배 차이 납니다.
- CSV·TSV가 가장 효율적이고, JSON 들여쓰기가 가장 비쌉니다.
- 행이 많아질수록 JSON은 CSV의 약 2배로 수렴합니다.
- JSON을 써야 한다면 들여쓰기를 빼고 키는 영문으로 두세요.
- 가독성이 필요하면 마크다운 표가 합리적인 절충안입니다 (CSV 대비 25% 추가).
측정 조건이나 결과에 이견이 있으시면 문의 페이지로 알려주세요. 재측정해서 반영하겠습니다.
측정일: 2026년 9월 20일 / tiktoken 0.14.0 / 인코딩 o200k_base