CSV to SQL for Supabase seeds. Reviewed in your browser.
Turn CSV or JSON into a seed.sql draft, review inferred types and fill missing UUID IDs with gen_random_uuid(). Nothing executes — free, no sign-up.
Loading the tool…
Draft only, no schema discovery or execution. 200 KB, 1,000 rows and 100 columns. Review types, precision, unique keys, RLS and foreign keys. Fresh UUIDs alone do not prevent duplicate records.
How to use
- Paste CSV with unique headers or JSON row objects. Enter schema and table; choose blank-cell and UUID behavior.
- Infer and review every column type against your database schema. Confirm the review before export.
- Generate INSERT with ON CONFLICT DO NOTHING. Check unique keys, required columns, RLS and foreign keys in your own test database.
Reference documentation
Frequently asked questions
Is this free, and does my input leave the browser?
Free, no sign-up. Computation, copy and downloads stay in your browser. There is no upload or processing endpoint. Usage analytics include only a fixed tool name and action, never your input or result.
How are values and identifiers escaped?
Schema, table and columns are independently quoted with doubled embedded quotes. PostgreSQL escape literals double apostrophes and escape backslashes. NUL is rejected. Values are never accepted as raw SQL.
How are types inferred?
Suggestions use all non-null values: text, numeric, boolean, UUID, offset-aware timestamptz or JSONB. Review against your schema. Leading-zero strings stay text. Unsafe JSON integers are rejected; encode exact decimals as strings to avoid JavaScript precision loss.
What happens when id is missing?
With UUID generation enabled, missing, null or empty id uses gen_random_uuid(). Existing IDs must be UUIDs. Disable that option for other ID types. The tool does not resolve foreign keys or create auth.users accounts.
Does ON CONFLICT DO NOTHING make a seed repeatable?
It skips conflicts with actual unique or exclusion constraints; it invents no unique key. Fresh random IDs alone do not prevent duplicate logical rows. Define a unique business key or supply stable IDs before rerunning.
What about blank CSV cells and missing fields?
Choose NULL or empty strings for blank CSV cells. Missing JSON properties become NULL, not database defaults. Review required fields. Nested data can use JSONB; it is not flattened into related tables.
Related tools
All free toolsSupabase JWT decoder
Decode a JWT locally and inspect Supabase role, aal, amr, metadata and expiry. Understand auth.uid() and auth.jwt() in RLS. Free, no sign-up.
PostgreSQL SQL formatter
Format PostgreSQL queries, Supabase policies and PL/pgSQL function definitions locally. Check basic syntax without running SQL. Free, no sign-up.
Next.js env & secrets generator
Generate browser-random secrets and a Next.js env template for Supabase and Stripe. Separate NEXT_PUBLIC_ values from server secrets. Free, no sign-up.