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-Dateien online bearbeiten, als Tabelle und als Text

Der CSV-Editor zeigt das rohe CSV und die Tabelle nebeneinander. Bearbeite eine Zelle in der Tabelle, und der Editor ändert genau dieses Feld im Text - die übrigen Anführungszeichen, das Trennzeichen und die Zeilenenden bleiben, wie sie waren. Ein Klick in die Tabelle zeigt das Feld im Text, und der Cursor im Text zeigt seine Zelle. So korrigierst du schnell Exporte aus Shops, Banken und Datenbanken, räumst Adresslisten auf oder bereitest Daten für einen Import vor.

Alles läuft in deinem Browser. Dateien werden nicht hochgeladen, es gibt keine Anmeldung und keine Werbung.

Was der Editor kann

Wie eine Tabellenkalkulation

In Zellen tippen, mit den Pfeiltasten und Tab wandern, Bereiche aus und nach Excel, LibreOffice oder Google Sheets kopieren und einfügen, Zeilen und Spalten hinzufügen, löschen und verschieben.

Jedes CSV

Komma, Semikolon, Tab oder senkrechter Strich als Trennzeichen, automatisch erkannt; mit oder ohne Kopfzeile; UTF-8 mit oder ohne BOM und Windows-1252; Windows- und Unix-Zeilenenden bleiben erhalten.

Finden, was kaputt ist

Zeilen mit einer anderen Anzahl Felder, nie geschlossene Anführungszeichen, leere und wiederholte Spaltennamen - mit ihrer Zeile aufgelistet, einen Klick entfernt.

Sortieren, filtern, genauer hinsehen

Die Ansicht sortieren und filtern, ohne die Datei anzutasten, oder die Daten selbst sortieren. Das Spaltenfeld zeigt die Art der Werte, leere und verschiedene, Summe und Durchschnitt.

Grosse Dateien

Die Tabelle zeichnet nur die Zeilen, die du siehst: Dateien mit 100 000 Zeilen lassen sich weiterhin schnell scrollen, filtern und bearbeiten.

Export

Excel-Arbeitsmappe (XLSX), JSON, Markdown- und HTML-Tabellen, TSV oder CSV mit anderem Trennzeichen und anderer Kodierung - mit Schutz vor Tabellenformeln.

So funktioniert es

  1. Öffnen - zieh eine CSV-Datei ins Fenster, öffne sie mit «Datei öffnen …» oder beginne mit einer Vorlage unter «Neu».
  2. Bearbeiten - ändere Zellen in der Tabelle oder den Text links; beide folgen einander. Mit «Einfügen» kommen Zeilen und Spalten dazu, unter «Formatieren» stellst du das Trennzeichen ein.
  3. Speichern - lade das CSV herunter, wie es ist, oder exportiere es als XLSX, JSON, Markdown oder HTML.

Den Editor auf deiner eigenen Website nutzen

Jede https-Seite (und localhost) kann den Editor mit einem <iframe> und ?embed=1 einbetten - ohne Anmeldung, ohne Schlüssel. Eingebettet blendet der Editor diesen Text aus und zeigt einen Speichern-Knopf. Die Tabelle kommt auf zwei Arten hinein und wieder heraus.

1. Eine Datei über einen Link öffnen, auf deinem Server speichern

src= öffnet eine Datei (dein Server muss CORS erlauben), webhook= lässt «Speichern» (Ctrl+S) das Dokument an diese Adresse senden. Füge &token=… für einen Authorization: Bearer …-Header hinzu und &auto, um nach jeder Änderung zu speichern.

<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>

Der Webhook erhält einen POST mit JSON { editor: "csv", event: "save", id, name, content, updated }. Ein kleines PHP-Skript, das ihn speichert:

<?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. Deine Seite hält das Dokument (postMessage)

Der Editor meldet csveditor:ready, deine Seite antwortet mit csveditor:load, der Editor meldet csveditor:loaded, csveditor:change bei echten Änderungen und csveditor:save, wenn gespeichert wird. Deine Seite kann csveditor:get (den aktuellen Stand) oder csveditor:save (Speichern drücken) senden. Gespeichert wird dann über dein eigenes Login und deine eigene Sitzung.

<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') {               // der Editor ist bereit: ihm das Dokument geben
    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';   // eine echte Änderung
  if (m.type === 'csveditor:save') {                // es wurde auf "Speichern" geklickt
    await fetch('/api/save', { method: 'POST', headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ name: m.name, content: m.content }) });
    document.title = 'Saved';
  }
});

// Ein Speichern-Knopf auf deiner eigenen Seite: die Antwort kommt als csveditor:save
function saveNow() { ed.contentWindow.postMessage({ type: 'csveditor:get' }, ORIGIN); }
</script>

KI-Assistent in deiner Seite: Er funktioniert auch im Frame. Mit allow="clipboard-write" am iframe nutzt «Prompt kopieren» direkt die Zwischenablage (sonst greift der Editor auf den alten Kopierbefehl zurück oder zeigt den Prompt zum Kopieren von Hand). Ein Link der KI erreicht keinen Editor in einer anderen Website, darum sagt der Editor der KI und dir, die ganze Antwort der KI stattdessen in den Editor einzufügen - oder den Editor in einem eigenen Fenster zu öffnen.

3. In einem eigenen Fenster

window.open("https://csv.giit.ch/?embed=window", "csveditor-17") öffnet den vollen Editor in einem eigenen Fenster, das dieselben Meldungen mit window.opener austauscht. Links einer KI erreichen ihn dort. csveditor:load kann auch context: { host, title, rules } mitgeben - der KI-Prompt sagt dann, wohin das Dokument gehört, und befolgt deine Regeln - sowie hook: { url, token }, einen Webhook nur für dieses Dokument, der nie gespeichert wird. Wird das Fenster mit ungespeicherten Änderungen geschlossen, kommt csveditor:closing.

4. KI über deinen eigenen Server

Gib dem Editor deinen eigenen Prompt, eine Adresse auf deiner Website und einen Schlüssel für diese Editor-Sitzung. Der KI-Dialog zeigt dann «Verbunden mit» deiner Website, was du der KI sagst, und die Wahl das aktuelle Dokument ändern oder ein neues erstellen; Prompt kopieren setzt alles zusammen. Die KI sendet ihr Ergebnis mit dem Schlüssel an deinen Server, und deine Seite öffnet es im Editor - ein neues Dokument öffnet sich separat und bleibt im Browser der Person, die schreibt. Ein Schlüssel pro Editor-Sitzung: Er bleibt gültig, solange der Editor offen ist, und nur solange er keinen hat, fragt der Editor mit csveditor:key-request danach. Der Editor sendet den Schlüssel selbst nie und speichert ihn nie; die Adresse muss https auf deinem eigenen Host oder einer Subdomain davon sein.

const key = async () => (await fetch('/api/ai-key.php?doc=17')).json();   // ein Schlüssel pro Editor-Sitzung
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);
// die id aus csveditor:loaded merken und change/save/closing mit anderer id ignorieren
// nur solange der Editor keinen Schlüssel hat:
if (m.type === 'csveditor:key-request') { const k = await key(); ed.contentWindow.postMessage({ type: 'csveditor:ai', key: k.key }, ORIGIN); }
// solange der Editor offen ist, jede Minute deinem Server melden; Schliessen des Editors oder der Seite macht den Schlüssel ungültig
setInterval(() => fetch('/api/ai-key.php?alive=' + k.key.slice(0, 8)), 60000);
// dein Server hat ein Ergebnis (Polling, SSE …): target ist "current" oder "new"
ed.contentWindow.postMessage({ type: 'csveditor:load', name: 'Products', content: draft, from: 'ai', target }, ORIGIN);

Erzeuge Schlüssel mit mindestens 128 Zufallsbits, speichere nur ihren Hash, binde jeden an die angemeldete Person, das Dokument und diese Editor-Sitzung, erzeuge einen pro Sitzung, lass ihn nur gültig, solange deine Seite die Sitzung als offen meldet, und mach ihn ungültig, wenn der Editor oder die Seite schliesst.

Das ganze Protokoll steht in llms.txt - gib es einer KI, und sie baut die Anbindung für dein System. Die anderen giit-Editoren funktionieren gleich, mit ihrem eigenen Präfix, zum Beispiel der LaTeX-Editor mit latexeditor: - latex.giit.ch.

Häufige Fragen

Wird meine CSV-Datei hochgeladen?

Nein. Der Editor läuft ganz in deinem Browser. Deine Dateien werden nie an einen Server gesendet, ausser du richtest selbst einen Webhook zu deinem eigenen Server ein.

Ändert der Editor meine Datei, wenn ich eine Zelle bearbeite?

Nur diese Zelle. Der Editor schreibt die Änderung genau dort in den CSV-Text, wo das Feld steht, und lässt den Rest, wie er war: Die übrigen Anführungszeichen, das Trennzeichen und die Zeilenenden bleiben. Ein Feld kommt nur dann in Anführungszeichen, wenn es sie braucht.

Mein CSV nutzt Semikolons - geht das?

Ja. Der Editor erkennt Komma, Semikolon, Tab und senkrechten Strich als Trennzeichen; du kannst es auch unter Formatieren wählen. Umwandeln stellt die Datei auf ein anderes Trennzeichen um.

Wie öffne ich das CSV in Excel ohne kaputte Umlaute?

Exportiere es als XLSX, oder lade das CSV mit Byte Order Mark (BOM) herunter - setze das Häkchen unter Formatieren oder wähle im Export «UTF-8 mit BOM». Excel liest UTF-8 dann richtig.

Kommt er mit grossen Dateien zurecht?

Ja. Die Tabelle zeichnet nur die Zeilen, die du siehst, darum lassen sich Dateien mit 100 000 Zeilen weiterhin schnell scrollen, filtern und bearbeiten.

Wo werden meine Dokumente gespeichert?

Nur in deinem Browser. Klicke oben links auf den Ordner-Knopf (Meine Dokumente), um sie zu öffnen, umzubenennen, zu duplizieren, herunterzuladen oder zu löschen. Löschst du die Website-Daten deines Browsers, sind sie weg - lade also herunter, was du behalten willst, oder lass den Editor sie an deinen eigenen Server senden («Auf Server speichern»). Sehr grosse Dateien passen eventuell nicht in den Speicher des Browsers; der Editor sagt es dir, wenn das passiert.

Kann eine KI im CSV-Editor schreiben?

Ja, jede KI - ChatGPT, Claude, Gemini, Copilot oder die KI in deinem Programmier-Tool. Klicke auf «KI-Assistent», dann auf «Prompt kopieren», füge ihn in deine KI ein und sag, was sie tun soll. Die KI antwortet mit einem Link; klickst du ihn an, erscheint die Tabelle in deinem Editor. «Rückgängig» nimmt jede Änderung zurück.

Kostet der CSV-Editor etwas?

Nein. Der Editor ist kostenlos, ohne Werbung und ohne Anmeldung.