Client-side CSV importer
and spreadsheet editor

Add a complete import flow to your app. Let your users import files, map columns, fix errors, and submit clean data without leaving the browser.

100% client-side React-first, framework-agnostic Flat $19/domain/month

What's Updog?

Nothing much, just the fastest way to import, edit, and manage your data without compromises.

  • Drop a CSV, TSV, Excel, JSON, or XML file, or pipe in a remote source like an API or a database query. Parsing happens client-side in the browser, so user files never transit a third-party server on their way into your app.

Click to upload or drag and drop


Imported columns 5/6 matched
Target columns

name
First name
surname
Last name
country
Country
level
Level
email
Email
phone
Select column
Country 5/5 matched
Show matched

Level 4/5 matched
Show matched

associate
Select value
junior
Junior
middle
Middle
senior
Senior
staff
Principal
No primary key

All rows will be appended as new entries without deduplication.

First name
Last name
Email
1
Dagny
Taggart
2
Rearden
3
Francisco
d'Anconia
4
John
Galt
5
Ragnar
Danneskjöld
6
Eddie
Willers
7
James
Taggart
8
Lillian
Rearden
9
Wesley
Mouch
10
Hugh
Akston
11
Quentin
Daniels
12
Midas
Mulligan
{
  "sources": [
    {
      "sourceId": "upload",
      "sourceName": "people-may-2026.csv",
      "rows": [
        {
          "row": { "id": 4, "email": "[email protected]" },
          "isNew": false,
          "isChanged": true,
          "isDeleted": false,
          "isValid": true
        }
      ]
    }
  ],
  "counts": { "new": 4, "changed": 2, "deleted": 1, "invalid": 0 }
}

Every feature on every plan

Import, edit, validate, ship — all included. Including on the free plan.

Five import formats

CSV, XLSX, TSV, JSON, XML. Drop a file, get structured data.

Smart column matching

Auto-maps imported columns to your schema. Fuzzy matching, synonyms, or your own callback.

Value mapping

Map imported values to the options your columns expect.

Multi-source merging

Import multiple files into one grid. Each source tracked, toggled, or removed independently.

Upsert by primary key

Second import? Existing rows update in place. New rows append. No duplicates.

1M+ rows

Canvas rendering, virtual scrolling, Web Worker filtering.

Dynamic columns

Imported file has columns your schema doesn't? Users create them on the fly.

Inline editing

Click a cell, start typing. Tab, Enter, arrow keys — it works like a spreadsheet.

Typed cell editors

Text, number, date picker, select dropdown. Each column gets the right input control.

Add / delete rows

Insert above, insert below, duplicate, delete.

Copy / paste

Cells, ranges, rows. Paste from Excel or Google Sheets.

Fill handle

Drag to fill. Source values repeat across the target range.

100% client-side

Everything runs in the browser. No backend, no data leaves the user's machine.

Undo / redo

Every edit, paste, transform, and delete goes on the stack. Full command history.

Find & replace

Search across all cells. Case-sensitive, exact match, column-scoped. Replace one or all.

Column sorting

Ascending, descending, or clear. Stable sort, locale-aware.

Configurable filters

Select lists, number ranges, date ranges. Define per column, users control from the sidebar.

Column transforms

Split, merge, trim, and more. Bulk operations at 1M-row scale.

Formulas

Spreadsheet-style expressions on columns. Concat, split, substring, substitute — recompute live as data changes.

Bring your own AI

Clean messy data with a prompt. Split names, normalize dates, fix casing. Your model, your prompt, your data.

Built-in validators

Required, unique, type checks. Errors surface inline — users fix them in place.

Custom validators

Write your own validation function per column.

Cross-field validation

Declare dependent fields. When one cell changes, related cells re-validate automatically.

Display formatters

Show "$1,000" in the cell. Store "1000" underneath. Formatters are display-only.

Input transformers

Normalize on entry. Trim whitespace, parse numbers, format dates — before they hit the store.

Clean exports

CSV, XLSX, TSV, JSON, XML. Validated and formatted. Ready for your pipeline.

White-label

Match your brand colors, fonts, and design system. Every Updog plan includes full white labeling at no extra cost.

Any frontend framework

Native React component. Web Component wrapper for Vue, Angular, Svelte, or plain HTML.

Sticky columns

Pin columns so identifiers stay visible while users scroll horizontally.

Accessibility

Shadow table for screen readers. ARIA roles, live regions, full keyboard navigation.

i18n & RTL

Override every string. Right-to-left layout where the locale demands it.

Read-only mode

One prop. The grid becomes view-only. No editing, no deletion, no import.

No data processor agreement required.

User data is parsed, validated, and edited in the user's browser. It never reaches our infrastructure or anyone else's. That removes the GDPR data processor relationship, the DPA review, and the data residency conversation entirely.

Bring your own AI

Your model. Your prompts. Your data. Updog just wires them together.

Matching

Map messy column headers and dropdown values to your schema with any AI model. Whatever the model skips falls back to built-in fuzzy matching.

Chat

A chat shell beside the grid where users describe a fix in plain language. Your model returns a transformation and Updog applies it across every row, in the browser.

Updog never makes the call. Bring your own AI means your model, your provider, your request. With every message Updog passes along the context you need to build a prompt that you send to any LLM, then you return a transformation function that Updog applies across every row, keeping the whole thing fast and private.

Flat pricing

Same price at 100 imports as at 100,000. 14-day free trial. No credit card.

Dev

Free

Local development and personal projects.

  • Development domains
  • All features
  • Community support

Team

2 months free when paid yearly
$19 /domain/month

Production domains.

  • Add domains as you grow
  • All features
  • Email support

Predictable from your first import to your millionth. No per-import fees, no row caps, no usage tiers. Your first domain includes a free staging domain.

Frequently Asked Questions

Everything you need to know about Updog.

Is it really 100% client-side?

Yes. Parsing, validation, transformation, and editing all run in the browser. Your users' data never leaves their machine. No server, no data residency, no third-party processing.

Can Updog really handle 1 million rows in the browser?

Yes. Updog's 1M-row benchmark covers the full client-side import workflow: parsing, column mapping, validation, filtering, sorting, editing, undo/redo, transformations, and export. In our 1,000,000-row by 20-column benchmark, Updog uses around 800MB on the main thread, plus about 350MB in a Web Worker for the full working set.

Which frameworks are supported?

React as a first-class component. For Vue, Svelte, Angular, or any other framework — a Web Component that works anywhere.

What file formats can users import?

CSV, Excel (including legacy .xls and OpenDocument .ods), JSON, TSV, and XML. Users can also paste directly from Google Sheets or Excel, and merge multiple files into one import.

Is it just an importer or also an editor?

Both. Take a messy file and clean it up. Or start with data you already have. Users get undo/redo, find & replace, copy/paste, fill handle, and built-in transformation functions.

Does the editor work like a real spreadsheet?

Yes. Copy, cut, and paste, including from spreadsheets your users already use. Select a cell, a range, a full row or column, or hold Cmd/Ctrl to pick non-adjacent cells. Keyboard navigation and the fill handle work the way people expect. If they have used a spreadsheet before, they already know this one.

How does pricing work?

$0 for development. $19 per production domain per month, and your first domain includes a free bonus domain for your staging site. Each domain after that is $19/mo. Subdomains count as their own domains. Every plan includes every feature. No per-row fees, no per-import fees, no usage caps.

Can I remove all Updog branding?

Yes, on every plan including free. No logos, no "Powered by" badges. Full CSS theming — override any visual element to match your brand.

How does the AI assistant work?

You own the prompt. Choose any LLM provider, write a prompt that returns a transformation function. That function is applied against the data — locally, in the browser.

Do I need SOC 2 or compliance audits?

No. Data never leaves the browser, so there is nothing to audit. No PII exposure to third parties. No data residency concerns.

How fast is integration?

npm install @updog/data-editor, define your columns, render the component. Under 10 minutes to a working import flow.