# Check a file

> Find and fix the format problems that cause failed uploads, and test a join with business data. Runs in your browser; your file is never uploaded.

Drop the file you're about to upload. The checker reads it inside this browser tab, lists every known problem with a code, and gives you a fixed copy.

Use it on a file whose columns are already named `text`, `userId`, `incoming`, `sessionId` and `dimensionlabs_timestamp`, or on the output of the [converter](/data/convert-a-file). If your export has its own column names, convert it first: otherwise the checker reports them as missing (C09). For business data, set **File type** to **Business data**, or leave it on **Detect for me**.


## What it checks

Every rule comes from real upload failures. Each code has an entry in [Upload errors](/data/upload-errors).

| Area | Checks |
|---|---|
| The file | Encoding (F01), byte order mark (F02), null bytes (F03), line endings (F04, F05), every field quoted (F10), replacement characters (F12), size (F13), file type (F14) |
| Column names | Required columns missing (C09), names to rename (C01), missing header (F06), backslashes (F07), stray spaces (F08), rows with the wrong number of columns (F09) |
| Text | Empty text (C02), placeholder text (C03), line breaks inside a field (C04) |
| Who wrote it | `TRUE`/`FALSE` (C05), other values in `incoming` (C06), blank `userId` (C07) |
| Ids | Colons (C08), ids stored as decimals (C10), scientific notation (F11) |
| Timestamps | Empty (T00), seconds instead of milliseconds (T01), dates instead of numbers (T02), scientific notation (T03), outside 2000 to 2030 (T04), messages under a second apart (T05) |
| Business data | File name (B02), mixed date formats (B03), mixed yes/no values (B04), table naming (B05) |

## What it fixes, and what it won't

- **Fixed automatically:** byte order mark, null bytes, line endings, quoting, header spaces, column names, `TRUE`/`FALSE`, seconds to milliseconds, colons in ids, ids stored as decimals, line breaks in text, and a blank `userId` (filled from the `sessionId`).
- **Fixed when you tick the box:** saving as UTF-8, backslashes in column names, removing rows with no text or placeholder text, writing out scientific notation that lost no digits, spacing messages a second apart, and, for business data, rewriting dates as `YYYY-MM-DD` and yes/no values as `true` and `false`.
- **Not fixed here:** conversation timestamps written as dates (T02) need the [converter](/data/convert-a-file), which turns them into Unix milliseconds. Empty timestamps (T00), a missing header (F06) and rows with the wrong number of columns (F09) need a new export or a hand edit.
- **Never "fixed":** values that already lost information. A timestamp Excel saved as `1.70324E+12` has lost its last digits; any value the checker wrote back would be a guess. Re-export from the source system, or drop the original `.xlsx` file here. The checker reads the first sheet of an Excel file directly, with the column names in row 1 and every digit intact.

Files of any size are fine to upload: Dimension Labs splits a large file for you, so you don't need to split it.

## Test a join

To see how many of your conversations will match a business data file, check your conversation file first. Then open **Test a join with a business data file** below the results, drop the business file, and pick the key column in each. The test counts how many conversation keys are found in the business file, and how many keys repeat there. It doesn't upload either file. A low match rate nearly always means the ids are written differently on the two sides; see [Join business data](/data/join-business-data#the-key).

<span id="how-to-verify"></span>

## How to verify that nothing is uploaded

Open your browser's developer tools (in Chrome, View > Developer > Developer Tools on a Mac, or press F12 on Windows), go to the **Network** tab, and drop a file. No request carries your file. The page is also served with a security policy that only lets it talk to this site, and the checker's code has no way to send data: a test in our build fails if it ever does.

The report you can download is a small `.json` file. It lists issues by code, row number and column name, and contains no values from your file other than the column names, so it's safe to send to support@dimensionlabs.io.
