Free CSV append · No signup · Nothing uploaded

Twelve monthly exports, one file.

Select all the files at once. Columns align by name — not position — so a renamed or added column doesn't silently corrupt the stack, and the reconciliation report tells you exactly what differed per file.

01 · How it works

Drop, declare, done.

Copy-pasting files together in a spreadsheet aligns columns by POSITION — one inserted column in March and your whole year is silently shifted. This aligns by name and tells you about every mismatch.

i. select

Drop all the files

Choose them in one go (Ctrl-click) or add more later. Each file is parsed locally and listed with its row and column counts.

ii. reconcile

Columns align by name

Union mode keeps every column and blank-fills gaps; common-only mode keeps just the columns every file shares. The report shows what was blank-filled or dropped, per file.

iii. take

One stacked file

Optionally with a _source column saying which file each row came from — then download or open in the dashboard.

02 · Why this one

Stacking that can't lie to you.

The failure mode of manual stacking is silence. This is loud about every mismatch.

  • 01

    By name, not position

    A column added, removed or reordered in one file can't shift data into the wrong column.

  • 02

    The reconciliation report

    Per file: row count, columns blank-filled, columns dropped. 'Columns aligned ✓' is something you verify, not hope.

  • 03

    The _source column

    One checkbox tags every row with its origin file — instant month/region grouping in the dashboard afterwards.

  • 04

    Private by design

    All files are parsed and stacked in your browser. Nothing is uploaded.

"Stacked 12 monthly exports; the report flagged that October was missing the channel column. That used to take an afternoon to discover."
— the reconciliation report, earning its keep
03 · FAQ

Append / stack CSVs questions.

Do the files need identical columns?
No. Union mode (default) keeps every column that appears anywhere and blank-fills files that lack it; common-only mode keeps just the shared set. Either way the report lists the differences per file.
Leave 'Add a _source column' ticked — every row gets its origin filename, which also makes a great grouping column in the dashboard.
As many as you can select — they're processed one by one in your browser. Total size is bound by memory; hundreds of MB combined is realistic.
Yes — every file needs a header row, because alignment is by column name. Headerless files would have nothing to align on.
No — selection, parsing and stacking all happen locally.