CsvMod is an embeddable import widget that sniffs the file, maps columns with AI, repairs errors, and hands your app clean JSON — in seconds, not weeks of engineering.
Built around the four steps every CSV ingestion flow shares — we make each one automatic, auditable, and beautiful.
Delimiter, encoding, and header-row detection happen in a Web Worker thread — your page never janks, even on 100k rows. Live parse speed and row counts included.
DeepSeek-powered zero-shot column mapping pre-fills your target schema, with confidence indicators. Human override stays one dropdown away.
"AI Fix Common Errors" normalizes misaligned emails, numbers, booleans, dates and enums in one click — with a full audit of what changed.
Virtualized rendering keeps 100k+ rows scrollable like Excel. Invalid cells glow red with hover reasons; duplicates flagged amber.
One callback receives validated rows, rejected counts, and full parse metadata — or hook the csvmod-complete event for webhook pipelines.
Long-running batch cleaning and scheduled re-imports run server-side on the OpenClaw engine — your browser never blocks, your data lake stays fresh.
This page is running the actual embed. Drop in sample.csv (10 messy rows) — or hit "Generate 100k rows" to feel the Web Worker + virtualized grid do their thing.
✓ Tested: 134/134 automated browser tests green · parses in a Web Worker · runs 100% client-side
Drop a messy CSV — delimiter, encoding & header auto-detected.
AI maps ambiguous columns; override with dropdowns.
Spot red invalid cells & duplicates in the 60fps grid. Click ✨ AI Fix.
Watch the ring fill, then get clean JSON in your callback.
// onComplete output will appear here when you import.
Five years of building importers in-house taught us exactly where they fall apart.
| DIY parser | Flatfile / OneSchema | CsvMod | |
|---|---|---|---|
| Time to embed | 4–8 engineering weeks | 1–2 weeks | ~30 minutes |
| Pricing | Hidden engineering cost | $0.05–0.20 per row | Flat monthly + 4¢/row |
| AI column mapping | ✗ | ✓ | ✓ DeepSeek |
| 100k row grid | ✗ janks | ✓ | ✓ 60fps virtualized |
| Self-host / data residency | ✓ | ✗ cloud only | ✓ single JS file |
| Batch automation | ✗ | ✗ | ✓ OpenClaw engine |
1. Copy two files to your CDN.
2. Drop a component where your users upload.
3. Write one callback that receives clean rows.
No build step. No iframe. Shadow DOM means zero CSS leakage both ways.
<link rel="stylesheet" href="https://cdn.csvmod.com/site.css">
<script src="https://cdn.csvmod.com/csvmod.embed.js"></script>
<csvmod-importer license-key="pk_live_..." theme="auto">
</csvmod-importer>
<script>
const importer = document.querySelector('csvmod-importer');
importer.schema = { fields: [
{ key: 'email', label: 'Email Address', type: 'email', required: true },
{ key: 'role', label: 'User Role', type: 'select',
options: ['Admin', 'Member'] }
]};
importer.onComplete = async (data) => {
await api.importUsers(data.validRows); // clean JSON
};
</script>