CSV Editor online

Code

Export

My documents

Click a document to open it. They are stored only in this browser - nothing is uploaded. Clearing the browser's site data removes them, so download the ones you want to keep.

AI Assistant

Any AI can work with you - ChatGPT, Claude, Gemini, Copilot.

  1. Click Copy prompt.
  2. Paste it into your AI and say what it should do with the table.
The AI should

The table travels in the link after the “#”, which no server sees. What you paste into your AI is handled by its provider.

Save to your server

The editor can send each saved version to your own server (a webhook), so your work is kept where you want it. Nothing is sent until you enter an address here.

What your server receives

A POST request with JSON (your server must allow CORS from https://csv.giit.ch):

{ "editor": "csv", "event": "save", "id": "…", "name": "Products",
  "content": "SKU,Product,Price\nA-100,Notebook,4.50\n",
  "updated": "2026-01-15T09:30:00.000Z" }
Embed the editor in your website
<iframe src="https://csv.giit.ch/?embed=1" style="width:100%;height:80vh;border:0"></iframe>
<script>
const frame = document.querySelector('iframe');
addEventListener('message', e => {
  if (e.origin !== 'https://csv.giit.ch' || e.source !== frame.contentWindow) return;
  if (e.data.type === 'csveditor:ready')
    frame.contentWindow.postMessage({ type: 'csveditor:load', name: 'Products',
      content: 'SKU,Product,Price\nA-100,Notebook,4.50\n' }, 'https://csv.giit.ch');
  if (e.data.type === 'csveditor:save') saveOnYourServer(e.data.content);
});
</script>

Also possible: ?src=<URL of a .csv file> opens a file, &webhook=<URL> saves this document there. The editor can also open in a window of its own (?embed=window), and your page can hand it its own AI prompt and a session key so the AI sends its result to your server (csveditor:ai, csveditor:key-request) - see "Use the editor on your own website" below the editor. Details are in llms.txt.

Help

How it works

  1. Open a CSV file, drop it into the window, or start with New. The raw text is on the left, the table in the middle.
  2. Edit cells in the table like in a spreadsheet: type, or press Enter or F2, or double-click a cell. Enter or Tab keeps the value, Escape cancels. The change goes into the CSV text right at that field - quotes only where needed, the line endings stay - and is one step for Undo.
  3. Copy and paste ranges between the table and Excel, LibreOffice or Google Sheets with Ctrl+C and Ctrl+V. Type into the row marked + to add a row.
  4. A click in the table puts the code's cursor on that field; the cursor in the code selects its cell.
  5. Sort with the arrows in the column heads and filter above the table: that only changes the view. Sort the data puts the rows of the file into that order.
  6. Format on the right sets how the text is read (separator, quote, header row) and converts it; Column shows what a column holds; Insert adds, deletes and moves rows and columns and cleans up.
  7. Problems (rows with another number of fields, unclosed quotes, empty or repeated header names) are listed above the code - click one to go there.
  8. Export makes an Excel workbook, JSON, Markdown, HTML, TSV or CSV with another separator. Download .csv saves the text as it is.

Keyboard shortcuts in the table

← → ↑ ↓, Shift + arrows
Move, select a range
Enter / F2 / typing
Edit the cell (typing replaces its value)
Alt + Enter
A line break inside the cell
Tab / Shift + Tab
Next / previous cell
Delete
Empty the selected cells
Ctrl + C / X / V
Copy / cut / paste (tab-separated, as spreadsheets use it)
Ctrl + A
Select the whole table
Ctrl + F
Filter the rows
Ctrl + Z / Y
Undo / redo
Ctrl + S / E
Save (download .csv, or to your server) / export
Ctrl + O
My documents
Ctrl + Enter in the code
Go to the cursor's cell in the table

온라인에서 CSV 파일 편집하기, 표와 텍스트로

CSV 편집기는 원본 CSV와 표를 나란히 보여 줍니다. 표에서 셀을 편집하면 편집기는 텍스트의 바로 그 필드만 바꿉니다 - 다른 따옴표, 구분자, 줄 끝은 그대로입니다. 표를 클릭하면 텍스트에서 그 필드가 보이고, 텍스트의 커서는 해당 셀을 보여 줍니다. 덕분에 쇼핑몰, 은행, 데이터베이스에서 내보낸 파일을 빠르게 고치고, 주소 목록을 정리하고, 가져오기용 데이터를 준비할 수 있습니다.

모든 것이 브라우저에서 실행됩니다. 파일은 업로드되지 않으며 가입도 광고도 없습니다.

편집기로 할 수 있는 것

스프레드시트처럼

셀에 입력하고, 화살표 키와 Tab으로 이동하고, Excel, LibreOffice, Google Sheets와 범위를 복사해 붙여 넣고, 행과 열을 추가, 삭제, 이동하세요.

어떤 CSV든

쉼표, 세미콜론, 탭, 세로 막대 구분자를 자동 감지. 머리글 행이 있든 없든, BOM 있는/없는 UTF-8과 Windows-1252, Windows와 Unix 줄 끝은 유지됩니다.

깨진 곳 찾기

필드 수가 다른 행, 닫히지 않은 따옴표, 비었거나 중복된 열 이름 - 줄 번호와 함께 나열되어 클릭 한 번이면 이동합니다.

정렬, 필터, 자세히 보기

파일은 건드리지 않고 보기만 정렬하고 필터하거나, 데이터 자체를 정렬하세요. 열 패널은 값의 종류, 빈 값과 서로 다른 값, 합계와 평균을 보여 줍니다.

큰 파일

표는 보이는 행만 그립니다: 100 000행 파일도 스크롤, 필터, 편집이 빠릅니다.

내보내기

Excel 통합 문서(XLSX), JSON, Markdown 표와 HTML 표, TSV, 또는 다른 구분자와 인코딩의 CSV - 스프레드시트 수식 방지 기능 포함.

사용 방법

  1. 열기 - CSV 파일을 창에 끌어다 놓거나 "파일 열기…"로 열거나 "새로 만들기"의 템플릿으로 시작하세요.
  2. 편집 - 표의 셀이나 왼쪽 텍스트를 바꾸세요. 둘은 서로 따라갑니다. 행과 열은 "삽입", 구분자는 "형식"을 쓰세요.
  3. 저장 - CSV를 있는 그대로 다운로드하거나 XLSX, JSON, Markdown, HTML로 내보내세요.

내 웹사이트에서 편집기 사용하기

모든 https 페이지(와 localhost)는 <iframe>과 ?embed=1로 편집기를 삽입할 수 있습니다 - 가입도 키도 필요 없습니다. 삽입되면 편집기는 이 텍스트를 숨기고 저장 버튼을 보여 줍니다. 표를 넣고 빼는 방법은 두 가지입니다.

1. 링크로 파일을 열고 내 서버에 저장하기

src=는 파일을 열고(서버가 CORS를 허용해야 합니다), webhook=은 "저장"(Ctrl+S) 시 문서를 그 주소로 보내게 합니다. Authorization: Bearer … 헤더를 쓰려면 &token=…을, 변경할 때마다 저장하려면 &auto를 추가하세요.

<iframe src="https://csv.giit.ch/?embed=1&src=https://your-site.com/data/products.csv&webhook=https://your-site.com/save.php"
        allow="clipboard-write" style="width:100%;height:800px;border:0"></iframe>

웹훅은 JSON { editor: "csv", event: "save", id, name, content, updated }이 담긴 POST를 받습니다. 이를 저장하는 작은 PHP 스크립트:

<?php
header('Access-Control-Allow-Origin: https://csv.giit.ch');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
header('Access-Control-Allow-Methods: POST, OPTIONS');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') exit;
if (($_SERVER['HTTP_AUTHORIZATION'] ?? '') !== 'Bearer SECRET') { http_response_code(403); exit; }
$d = json_decode(file_get_contents('php://input'), true);
$name = preg_replace('/[^\w\- ]/u', '_', $d['name']);
file_put_contents(__DIR__ . "/data/$name.csv", $d['content']);
echo '{"ok":true}';

2. 내 페이지가 문서를 보관하기 (postMessage)

편집기가 csveditor:ready를 보내면 페이지는 csveditor:load로 답하고, 편집기는 csveditor:loaded, 실제 편집 시 csveditor:change, 사용자가 저장할 때 csveditor:save를 알립니다. 페이지는 csveditor:get(현재 상태)이나 csveditor:save(저장 누르기)를 보낼 수 있습니다. 그러면 저장은 내 로그인과 세션을 거칩니다.

<iframe id="ed" src="https://csv.giit.ch/?embed=1" allow="clipboard-write" style="width:100%;height:800px;border:0"></iframe>
<script>
const ed = document.getElementById('ed');
const ORIGIN = 'https://csv.giit.ch';

addEventListener('message', async e => {
  if (e.source !== ed.contentWindow || e.origin !== ORIGIN) return;
  const m = e.data;
  if (m.type === 'csveditor:ready') {               // 편집기가 준비됨: 문서를 넘깁니다
    ed.contentWindow.postMessage({
      type: 'csveditor:load',
      name: 'Products',
      content: await (await fetch('/data/products.csv')).text()
    }, ORIGIN);
  }
  if (m.type === 'csveditor:change') document.title = '● not saved';   // 실제 편집
  if (m.type === 'csveditor:save') {                // 사용자가 "Save"를 클릭함
    await fetch('/api/save', { method: 'POST', headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ name: m.name, content: m.content }) });
    document.title = 'Saved';
  }
});

// 내 페이지의 저장 버튼: 응답은 csveditor:save로 옵니다
function saveNow() { ed.contentWindow.postMessage({ type: 'csveditor:get' }, ORIGIN); }
</script>

내 페이지 안의 AI 도우미: 프레임 안에서도 작동합니다. iframe에 allow="clipboard-write"가 있으면 "프롬프트 복사"가 클립보드를 직접 사용합니다(없으면 편집기가 예전 복사 명령을 쓰거나 손으로 복사할 프롬프트를 보여 줍니다). AI가 보낸 링크는 다른 웹사이트 안의 편집기에 닿을 수 없으므로, 편집기는 AI와 사용자에게 AI의 답변 전체를 편집기에 붙여 넣거나 편집기를 별도의 창으로 열라고 안내합니다.

3. 별도의 창에서

window.open("https://csv.giit.ch/?embed=window", "csveditor-17")은 전체 편집기를 별도의 창으로 열고 window.opener와 같은 메시지를 주고받습니다. AI의 링크는 그 창에 닿습니다. csveditor:load에는 context: { host, title, rules }도 담을 수 있으며(그러면 AI 프롬프트가 문서의 소속을 알리고 내 규칙을 따릅니다), hook: { url, token }, 즉 저장되지 않는 이 문서 전용 웹훅도 담을 수 있습니다. 저장하지 않은 변경이 있는 채로 창을 닫으면 csveditor:closing을 보냅니다.

4. 내 서버를 통한 AI

편집기에 내 프롬프트, 내 사이트의 주소, 이 편집기 세션용 키를 넘기세요. 그러면 AI 대화 상자에 내 사이트와 "연결됨", AI에게 전하는 내용, 현재 문서 변경 또는 새 문서 만들기 선택이 표시되고, 프롬프트 복사가 이를 모두 합칩니다. AI는 결과를 키와 함께 내 서버로 POST하고, 페이지가 이를 편집기에서 엽니다. 새 문서는 따로 열리며 사용자의 브라우저에 남습니다. 편집기 세션당 키 하나: 편집기가 열려 있는 동안 유효하며, 키가 없을 때만 편집기가 csveditor:key-request로 요청합니다. 편집기는 키를 직접 보내거나 저장하지 않습니다. 주소는 내 호스트나 그 하위 도메인의 https여야 합니다.

const key = async () => (await fetch('/api/ai-key.php?doc=17')).json();   // 편집기 세션당 키 하나
const k = await key();
ed.contentWindow.postMessage({ type: 'csveditor:load', name: 'Products', content, ai: {
  label: 'My Site', prompt: 'Keep the column names. Prices in CHF.',
  endpoint: 'https://your-site.com/api/ai-result.php', key: k.key } }, ORIGIN);
// csveditor:loaded의 id를 기억하고 id가 다른 change/save/closing은 무시
// 편집기에 키가 없을 때만:
if (m.type === 'csveditor:key-request') { const k = await key(); ed.contentWindow.postMessage({ type: 'csveditor:ai', key: k.key }, ORIGIN); }
// 편집기가 열려 있는 동안 매분 서버에 알림. 편집기나 페이지를 닫으면 키가 무효가 됨
setInterval(() => fetch('/api/ai-key.php?alive=' + k.key.slice(0, 8)), 60000);
// 서버에 결과가 있음(폴링, SSE …): target은 "current" 또는 "new"
ed.contentWindow.postMessage({ type: 'csveditor:load', name: 'Products', content: draft, from: 'ai', target }, ORIGIN);

키는 최소 128비트의 무작위 값으로 만들고, 해시만 저장하고, 각각을 로그인한 사용자, 문서, 이 편집기 세션에 묶고, 세션마다 하나씩 만들고, 페이지가 세션이 열려 있다고 알리는 동안만 유효하게 하며, 편집기나 페이지가 닫히면 무효로 하세요.

전체 프로토콜은 llms.txt에 있습니다 - AI에게 주면 내 시스템에 맞는 연결을 만들어 줍니다. 다른 giit 편집기도 각자의 접두사로 똑같이 작동합니다. 예를 들어 LaTeX 편집기는 latexeditor: - latex.giit.ch.

자주 묻는 질문

내 CSV 파일이 업로드되나요?

아니요. 편집기는 전부 브라우저에서 실행됩니다. 직접 내 서버로 웹훅을 설정하지 않는 한, 파일은 어떤 서버로도 보내지지 않습니다.

셀 하나를 편집하면 편집기가 파일을 바꾸나요?

그 셀만 바꿉니다. 편집기는 CSV 텍스트에서 필드가 있는 바로 그 자리에 변경을 쓰고 나머지는 그대로 둡니다: 다른 따옴표, 구분자, 줄 끝은 유지됩니다. 필드는 필요할 때만 따옴표로 감쌉니다.

내 CSV는 세미콜론을 씁니다 - 작동하나요?

네. 편집기는 쉼표, 세미콜론, 탭, 세로 막대를 구분자로 감지합니다. 형식에서 직접 고를 수도 있습니다. 변환은 파일을 다른 구분자로 바꿉니다.

글자가 깨지지 않게 CSV를 Excel에서 열려면 어떻게 하나요?

XLSX로 내보내거나, 바이트 순서 표시(BOM)를 붙여 CSV를 다운로드하세요 - 형식에서 선택하거나 내보내기에서 "BOM 포함 UTF-8"을 고르면 됩니다. 그러면 Excel이 UTF-8을 올바르게 읽습니다.

큰 파일도 다룰 수 있나요?

네. 표는 보이는 행만 그리므로 100 000행 파일도 스크롤, 필터, 편집이 빠릅니다.

내 문서는 어디에 저장되나요?

브라우저에만 저장됩니다. 왼쪽 위의 폴더 버튼(내 문서)을 클릭해 열기, 이름 바꾸기, 복제, 다운로드, 삭제를 할 수 있습니다. 브라우저의 사이트 데이터를 지우면 함께 삭제되므로 보관할 문서는 다운로드하거나, 편집기가 내 서버로 보내게 하세요("서버에 저장"). 아주 큰 파일은 브라우저 저장 공간에 들어가지 않을 수 있으며, 그럴 때는 편집기가 알려 줍니다.

AI가 CSV 편집기에서 쓸 수 있나요?

네, 어떤 AI든 됩니다 - ChatGPT, Claude, Gemini, Copilot 또는 코딩 도구의 AI. "AI 도우미", 이어서 "프롬프트 복사"를 클릭하고 AI에 붙여 넣은 뒤 무엇을 할지 말해 주세요. AI가 링크로 답하면 클릭하세요. 표가 편집기에 나타납니다. "실행 취소"로 모든 변경을 되돌릴 수 있습니다.

CSV 편집기는 유료인가요?

아니요. 편집기는 무료이며 광고도 가입도 없습니다.