Excel Damage Diagnostic

Paste a column that came out of a spreadsheet. This tells you what got broken — and, more usefully, whether it can still be fixed here or whether you have to go back and re-export. Some spreadsheet damage is reversible. Some of it destroys the data outright, and no tool can bring it back.

🔒 Your data never leaves your browser.

Read locally, never uploaded.

The question that actually matters

Most tools will tell you a value looks wrong. That is the easy half. The half that decides your afternoon is whether the original is still in the file — because if it is not, every minute spent repairing the export is wasted and the only fix is upstream.

Take 8.71E+12. It looks repairable: expand it and you get 8710000000000. But the notation describes a 13-digit number while carrying only 3 of its digits. The other 10 are not in the file. That expansion is a guess dressed up as a repair, and if it was a barcode you have just invented a product. Compare 8.712345678901E+12, which carries all 13 digits and really does expand to 8712345678901. This tool counts the digits and tells you which case you are in.

Why a lost leading zero is only visible in context

Spreadsheets remove leading zeros so values behave as numbers. Looking at 45678901234 on its own, nothing says a zero is missing — it is simply an eleven-digit number. Looking at it in a column where every other numeric cell is twelve digits, it is obvious. So this tool infers the intended width from the column (it needs at least three same-length cells before it will draw that conclusion) and only then offers the restored value.

The 15-digit ceiling

Spreadsheets keep a maximum of 15 significant digits and turn everything after the fifteenth into zeros. Sixteen-digit identifiers — some card numbers, long serials, certain internal SKUs — lose their tail silently. A long value ending in zeros has exactly that shape, though a genuine number could too, which is why this is reported as a signature rather than a verdict.

The cell that runs a program

A cell beginning with =, +, - or @ is executed as a formula when the file is opened — and so are tabs, carriage returns, line feeds and the full-width variants = + - @. This is a security problem rather than a formatting one: it can exfiltrate the contents of other open spreadsheets. It is also the one kind of damage that is usually still repairable, because the text is all still there.

The one that cannot be undone

When a code like MAR1 is read as a date it becomes 1-Mar, and the original text is gone. It cannot be reversed, because MAR1, 1MAR and MAR-1 all produce the same date. This tool lists the candidates rather than picking one, which is the honest answer — the famous case is gene names, but any SKU scheme mixing three letters with digits is exposed.

Every check this tool runs (11 rules)

XL-S01Scientific notation

A long number was converted to scientific notation. Whether this is repairable depends on how many significant digits survived: "8.71E+12" describes a thirteen-digit number but only carries three of its digits, so the other ten are gone and no tool can invent them. This tool counts the surviving digits and says which case you are in.

Fix: If digits were lost, re-export from the source with the column formatted as text — repairing this copy is not possible.

Source: Microsoft Support — Keeping leading zeros and large numbers

XL-S02Rounded past 15 significant digits

Spreadsheets keep a maximum of 15 significant digits and replace everything after the fifteenth with zeros. A sixteen-digit-or-longer value ending in zeros has the exact shape that damage leaves, though a genuine number could end in zeros too — which is why this is reported as a signature rather than a verdict.

Fix: Check the value against your source of truth. If it was longer than 15 digits, the tail is gone and the column needs re-exporting as text.

Source: Microsoft Support — Keeping leading zeros and large numbers

XL-L01Leading zero stripped

Spreadsheets remove leading zeros so that values behave as numbers. The damage is only detectable in context: this value is exactly one digit shorter than the rest of its column, which is what a lost leading zero looks like.

Fix: Re-export with the column formatted as text. The missing zero can be restored here because the intended width is known from the column.

Source: Microsoft Support — Keeping leading zeros and large numbers

XL-D01Code turned into a date

A product code that looked like a date was converted into one. "MAR1" becomes 1-Mar, "SEPT2" becomes 2-Sep. The classic case in the wild is gene names, but any SKU scheme that mixes three letters with digits hits it. The original text cannot be recovered with certainty because several codes map to the same date.

Fix: Re-export with the column formatted as text. The candidates listed here are possibilities, not an answer.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

XL-F01Floating-point tail

A long run of zeros or nines at the end of a decimal is the residue of binary floating-point arithmetic — 0.1 + 0.2 famously produces 0.30000000000000004. The intended value is almost always the rounded one, but the raw string will not compare equal to it.

Fix: Round to the precision the field actually needs, usually two decimal places for money.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

XL-C01Formula injection risk

A cell beginning with =, +, -, @, tab, carriage return or line feed is executed as a formula when the file is opened in a spreadsheet — and so are the full-width variants = + - @ under some locales. This is a security issue, not a formatting one: it can be used to exfiltrate the contents of open spreadsheets or to attack whoever opens the file.

Fix: Prefix the cell with a tab character inside the quoted field, or strip the leading character. Note that quote-based escaping can be undone when a spreadsheet re-saves the file.

Source: OWASP — CSV Injection

XL-E01Spreadsheet error value

An error value such as #N/A or #REF! was exported as literal text. A formula failed somewhere upstream and the failure was shipped instead of the data.

Fix: Fix the formula at the source; there is no value here to recover.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

XL-T01Display formatting baked into the value

Currency symbols, thousands separators, percent signs or accounting-style brackets for negatives are display formatting that has been written into the data. Feeds and APIs want the bare number.

Fix: Strip the formatting. Note that brackets mean a negative number in accounting format — (1,234.00) is -1234.00, not 1234.00.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

XL-T02Coerced to a boolean

A value became TRUE or FALSE. Product data that legitimately reads "true" is rare; more often a code, a flag column, or a two-letter country abbreviation was interpreted as a boolean.

Fix: Check the source column. If it was a code, re-export as text.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

XL-W01Invisible or non-breaking whitespace

The value carries a non-breaking space, a zero-width character or stray surrounding whitespace. These survive copy-paste, break exact matching, and are invisible in every preview.

Fix: Trim and replace non-breaking spaces with ordinary ones.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

XL-N01No damage detected

None of the known spreadsheet damage signatures appear in this value.

Source: Derived from the documented behaviour of spreadsheet number handling and from the shape the damage leaves behind in exported files. Each signature is matched against its own regression fixtures rather than assumed.

Precision and leading-zero behaviour follow Microsoft Support — Keeping leading zeros and large numbers; the formula-injection rule follows OWASP — CSV Injection. The remaining signatures are derived from the shape the damage leaves in exported files, and each is matched against its own regression fixtures.