Prepend row numbers or generate UUID identifiers for every CSV row
Add sequential row numbers or UUID/ULID unique identifiers to every row in a CSV.
🛡️ Your rows never leave your browser.
Why Onfyt: Offers UUID v4 and ULID (sortable UUID) formats alongside sequential integers—ULIDs are time-ordered so they sort chronologically in databases.
Interactive Sample Data
| name | role | |
|---|---|---|
| Grace Kerubo | grace@corp.com | Admin |
| Peter Njoroge | peter@corp.com | User |
How this tool works
Headless CSV exports from legacy systems often lack a primary key, making it impossible to reference individual rows in downstream systems, cross-reference with audit logs, or use as foreign keys in relational imports. Adding a surrogate identifier—either a simple sequential integer or a UUID—provides a stable, unique row reference.
DataFix generates sequential integers (1, 2, 3…), resumes from a given number (1001, 1002…), or generates UUID v4 strings for each row. The new column can be placed at any position.
Appending sequential row indices or deterministic identifiers provides essential primary keys for unstructured logs and legacy spreadsheets, ensuring traceable record tracking across reconciliation workflows.
Injecting deterministic row identifiers or UUIDs creates reliable surrogate keys when joining disparate tables that lack native primary identifiers. When integrating multi-source spreadsheets into relational warehouses, surrogate index columns establish audit traceability across subsequent transformations, data cleaning steps, and rollback workflows.
Injecting surrogate keys or sequential row numbers provides unambiguous tracking identifiers for legacy tables lacking primary keys. This sequential indexing simplifies cross-referencing between source logs and transformed outputs during financial audits. Prefix formatting options allow generating structured keys such as 'ROW-0001' or 'TXN-1001' to align with corporate identification standards and warehouse conventions. Zero-padded index formats ensure alphabetical sorting parity with numerical sequence order.
Things that usually go wrong
- Row numbers restart at 1 with each run — they are not stable IDs if rows are added later.
- UUIDs are randomly generated and will differ on each run.
Edge cases we tested
🧪 CSV already has an 'id' column
New column named 'row_num' or user-specified name to avoid overwriting existing IDs.
🧪 Resume from 5000 on a 200-row file
Rows numbered 5000–5199 correctly.
🧪 UUID format requested
Each row gets a unique RFC 4122 UUID v4 string; collision probability negligible.
Frequently Asked Questions
What is the difference between row numbers and UUIDs?
Row numbers (1, 2, 3) are sequential and predictable but not unique across files. UUIDs are globally unique and suitable as database primary keys.
Can I start numbering from 0?
Yes — select 'Start from 0' in the options.
Related tools
Reshape
Transpose CSV
Flip a CSV matrix by turning rows into columns and columns into rows.
Open Tool →
Reshape
Pivot a CSV
Summarise long-format CSV data into pivot tables grouped by row and column keys.
Open Tool →
Reshape
Group By and Count
Aggregate CSV rows by one or more group-by columns with count, sum, mean, min, or max.
Open Tool →