🔒 100% private — runs in your browser, nothing is uploaded

SKU Reconciliation

Compare two spreadsheets by SKU — rows only in one file, quantity and price differences, in one downloadable table.

Two exports of what should be the same stock list rarely agree exactly: a supplier sheet against your inventory export, a warehouse count against the marketplace listing file, last month against this month. Reconciliation is the job of lining the two up by SKU and listing every place they disagree, so you can fix the records instead of discovering the gap in a failed order. This tool does that lining-up in your browser: load or paste Table A and Table B, confirm which columns hold the SKU, the quantity and the price, and read one differences table.

Load or paste the two tables, check the column mapping, and compare. SKUs are matched after trimming, case-sensitively; prices are compared with a 0.005 tolerance. The prefilled sample is a complete worked example — run it as-is to see the expected shape of a result.

Operations aid only — this tool compares the two files you give it and does not verify which file is correct; it is not accounting, tax, customs or legal advice. Files are read locally in your browser and are never uploaded, and the tables and results stay in page memory only: nothing is saved, and no price or quantity is written into the page address. Downloading or printing happens only when you click those buttons.

⚠️ Operations aid only — this tool is an estimation and operations aid, not accounting, tax, customs or legal advice, and not a substitute for advice from a qualified professional. It compares the two files you give it exactly as described on this page; it does not verify which file is correct, does not check your inventory, orders or accounts, and does not prove that either file is complete or accurate. A row reported as identical only means the compared fields match in the two files you supplied. Prices and quantities are compared as written, with the price tolerance stated on this page; currency, tax treatment and rounding policy are yours to confirm. Files are read locally in your browser and are never uploaded to any server.

Quick answers

How do I reconcile two spreadsheets by SKU?

Load or paste the two tables, check that the SKU, quantity and price columns are mapped correctly, and run the comparison. Rows are matched by SKU (trimmed, case-sensitive): the prefilled sample has 5 distinct SKUs, 1 identical match (A-100) and 4 difference rows — A-200 quantity 5 vs 4, A-300 price 5.50 vs 5.75, A-400 only in Table A and A-500 only in Table B.

The summary always accounts for every SKU in either file, so the identical matches plus the difference rows plus the one-file-only rows cover the whole union of both files. You can turn the quantity or price comparison off with the checkboxes if you only want one of them checked.

What differences does a SKU reconciliation report?

Four issue types: a SKU found only in Table A, a SKU found only in Table B, a quantity that differs between the two files, and a price that differs by more than 0.005. A SKU whose quantity and price both differ produces two rows in the differences table, one per issue.

Duplicate SKUs inside a single file are not a difference row: they are flagged in a note above the table, and the first occurrence in that file is the row that gets compared. Rows with a blank SKU are skipped and counted in the same note area.

Are my spreadsheet files uploaded anywhere?

No. Files are read by your browser on your device and parsed in page memory; pasted CSV text stays on the page too. Nothing is sent to a server, saved in the browser or written into the page address, which is why the tool is safe to run on a live supplier price list or stock export.

You can confirm it in your browser network panel: running a comparison makes no requests. The differences table is only turned into a downloaded file, or sent to your printer, when you click Download or Print. Close or refresh the page and both tables and the results are gone.

How to use

  1. Load Table A and Table B with the file pickers (.csv, .tsv, .txt, or the first sheet of an .xlsx file — read locally, never uploaded), or paste CSV text straight into the two boxes. The prefilled sample is a complete worked example you can run as-is.
  2. Check the three column dropdowns, which list the headers of Table A: the SKU column is auto-detected from a header containing sku or named id, code or item; the quantity column from a header containing qty, quantity, stock or inventory; the price column from a header containing price or cost. Remap any of them if detection picked wrong.
  3. Leave the quantity and price checkboxes ticked to compare both fields, or untick either one to skip that comparison. Table B is matched using the same column names, falling back to the same column positions if a name is missing.
  4. Click Compare by SKU and read the summary first: distinct SKUs, identical matches, and the difference count. Any duplicate-SKU or blank-SKU rows are flagged in the note under the summary.
  5. Work through the differences table — SKU, issue, and the value in each table side by side — then download it as a CSV or print it for whoever owns the other file.

About this tool

The matching rules are deliberately plain and are stated in full below. Rows are matched by SKU after trimming leading and trailing spaces, and the match is case-sensitive after that trim — A-100 and a-100 are two different SKUs here, because in most stock systems they are. Quantities are compared as numbers when both sides are numeric. Prices are compared as numbers with a tolerance of 0.005, so a half-cent rounding difference between two systems does not flood the report, while a real change from 5.50 to 5.75 is always reported. If both the quantity and the price differ for one SKU, that SKU appears twice in the differences table, once for each issue.

Nothing here is checked against the outside world. The tool cannot tell you which file is right — if Table A says 5 and Table B says 4, one of them may be a miscount, a stale export or a genuine sale in between, and only your own records can say which. What the tool does guarantee is the comparison itself: every SKU in either file is accounted for in the summary, as an identical match, as a difference row, or as a row found in only one file. Duplicate SKUs inside one file are flagged in a note and the first occurrence is the one compared.

Files are read locally and never uploaded. File inputs hand the file to the page on your own device, pasted text never leaves the page, and the inputs and results live only in page memory: they are not saved in the browser, and business data such as prices and quantities is never written into the page address. Downloading the differences table or printing it happens only when you click those buttons.

How it works

Matching: a row from Table A and a row from Table B are the same item when their SKU values are equal after trimming leading and trailing spaces. The comparison is case-sensitive after trimming, so A-100 and a-100 do not match. The SKU column is found in Table B by the same header name chosen for Table A, or by the same column position when Table B has no header with that name; the quantity and price columns follow the same rule.

Issues: Only in A means the SKU appears in Table A and not in Table B (and Only in B the reverse); for those rows the value shown is the quantity and price from the file that has the row. Quantity differs means both files have the SKU and the quantities, read as numbers, are not equal. Price differs means both files have the SKU and the prices, read as numbers, differ by more than 0.005 — a difference of exactly 0.005 or less is treated as rounding and is not reported. A non-numeric quantity or price is compared as trimmed text instead. Duplicate SKUs within one file: the first occurrence is compared and every duplicate is flagged in a note. Rows with a blank SKU are skipped. An identical match is a SKU present in both files with no reported issue under the comparisons you switched on.

Worked examples

The prefilled sample — 5 SKUs, 1 match, 4 difference rows: Table A: A-100 qty 10 price 9.99; A-200 qty 5 price 19.99; A-300 qty 7 price 5.50; A-400 qty 3 price 12.00. Table B: A-100 qty 10 price 9.99; A-200 qty 4 price 19.99; A-300 qty 7 price 5.75; A-500 qty 2 price 7.25. Result: 5 distinct SKUs, 1 identical match (A-100), and exactly 4 difference rows — A-200 Quantity differs (5 vs 4), A-300 Price differs (5.50 vs 5.75), A-400 Only in A, A-500 Only in B. These are the default inputs, so the live page shows exactly this case.

A rounding difference that is not reported: If Table A lists a price of 9.99 and Table B lists 9.994 for the same SKU, the difference is 0.004 — within the 0.005 tolerance — so the SKU counts as an identical match (assuming the quantities also agree). A price of 9.996 in Table B would differ by 0.006 and would be reported as Price differs.

Duplicate SKUs in one file: If Table A lists A-200 twice — qty 5 on the first row and qty 99 on a later row — the note flags A-200 as a duplicate in Table A, and the comparison uses qty 5, the first occurrence. The duplicate row itself never becomes a difference row.

Issue types reported by this tool

IssueMeaningValues shown
Only in AThe SKU is present in Table A and absent from Table BTable A quantity and price; Table B side blank
Only in BThe SKU is present in Table B and absent from Table ATable B quantity and price; Table A side blank
Quantity differsBoth files have the SKU and the quantities are not equalThe quantity from each file
Price differsBoth files have the SKU and the prices differ by more than 0.005The price from each file
Duplicate SKU (note only)The same SKU appears more than once in one file; the first occurrence is comparedNamed in the note under the summary, not a difference row
Identical match (summary only)The SKU is in both files with no issue under the comparisons switched onCounted in the summary, not listed in the differences table

Matching rules in brief: SKUs are trimmed and then compared case-sensitively; prices use a 0.005 tolerance; quantities are compared exactly as numbers. Files are parsed locally in your browser and are never uploaded.

Frequently asked questions

Are my files uploaded or stored?

No. The file pickers read the file on your device with the browser file API and the parsing happens in page memory; pasted text stays on the page as well. Nothing is sent to a server, saved in browser storage, or written into the page address in the query string or after the #. Refresh the page and the tables and results are gone.

Which file does the tool say is correct?

Neither — and no comparison tool honestly can. It reports where the two files disagree: a quantity of 5 in Table A against 4 in Table B is a fact about the files, not a verdict about your stockroom. Which side is right has to come from your own counts, orders and receipts.

How exactly are SKUs matched?

By the trimmed SKU value, case-sensitively: leading and trailing spaces are removed, then A-100 matches only A-100 — not a-100, and not A-100 with a suffix. This mirrors how most inventory and marketplace systems treat SKUs. If your two systems differ only in letter case, normalise one file before comparing.

What happens when a file lists the same SKU twice?

The first occurrence is the row that gets compared, and each duplicated SKU is named in a note under the summary so you can clean the source file. Duplicates are never silently merged or added together, because a duplicated SKU is usually itself a data problem worth seeing.

Why is a tiny price difference not reported?

Because two systems that round the same price differently would otherwise fill the report with noise. Prices are compared with a tolerance of 0.005: differences of half a cent or less are treated as rounding, anything larger is reported. Quantities have no tolerance — quantities are counts, so any numeric difference is reported.

Which file formats and layouts are supported?

Delimited text — CSV, TSV and plain text — with comma, semicolon, tab or pipe delimiters auto-detected and RFC 4180 quoted fields handled properly, plus .xlsx workbooks, of which the first worksheet is read. The first row of each table must be the header row. Formula cells in an .xlsx file report the value stored in the file by the spreadsheet program that saved it.

📦 Embed this tool on your site

<iframe src="https://verystep.com/embed/sku-reconciliation/" title="SKU Reconciliation" width="100%" height="520" loading="lazy" style="border:0"></iframe>

Free to use. The embed shows a small "Powered by Verystep" link.

First time embedding? Read the step-by-step guide →

More free tools