Formatting Data for Import
The cleaner your data, the better InstaCharts can detect column types and build a chart for you. You don’t need to summarize or reshape anything first; just follow a few simple rules so your spreadsheet imports the way you expect.
This guide applies to every import method: uploading a file, connecting a Google Sheet, or pasting in text.
Use rows and columns
InstaCharts reads tabular data: a simple grid where every column is a field and every row is a record.
Good: a plain grid of rows and columns
| Product | Region | Units | Revenue |
|---|---|---|---|
| Notebook | East | 12 | 240 |
| Notebook | West | 8 | 160 |
| Pen | East | 40 | 80 |
| Pen | West | 25 | 50 |
Each row describes one thing, and each column holds one piece of information about it.
Columns run top to bottom
Every column is a single field, with its values stacked vertically underneath the column name. A common mistake is laying data out horizontally, putting field names down the left side and spreading each record across a row.
Avoid: fields laid out horizontally
| Name | Alice | Bob | Carol |
|---|---|---|---|
| Age | 30 | 25 | 35 |
| City | NYC | LA | SF |
Good: the same data with fields as vertical columns
| Name | Age | City |
|---|---|---|
| Alice | 30 | NYC |
| Bob | 25 | LA |
| Carol | 35 | SF |
Put column names in the first row
The first row of your sheet should be the column names. InstaCharts uses that row as the header, and each name becomes the Column Name you’ll see throughout the app: in the data table, the chart axes, filters, and legends.
Good: clear names in the first row
| Month | Signups | Revenue |
|---|---|---|
| January | 320 | 4800 |
| February | 410 | 6150 |
Avoid: no header row (data starts immediately)
| January | 320 | 4800 |
|---|---|---|
| February | 410 | 6150 |
Without a header row, your columns get generic names like A, B, and C, which make charts
harder to read.
If your sheet genuinely has no header row, uncheck Use first row as header in the import options so your first record is kept as data instead of being turned into column names.
Keep one value type per column
Each column should contain a single type of value: all numbers, all dates, or all text. InstaCharts inspects the values in each column to detect its column type. If a number column contains stray text, the whole column is treated as text and can no longer be plotted on a number axis or aggregated.
Avoid: a number column with text mixed in
| Salesperson | Deals |
|---|---|
| Alice | 12 |
| Bob | 8 |
| Carol | pending |
| Dan | 15 |
Good: numbers only, empty where unknown
| Salesperson | Deals |
|---|---|
| Alice | 12 |
| Bob | 8 |
| Carol | |
| Dan | 15 |
One set of data per sheet
Keep just one table per sheet. Don’t place a second table below or beside the first, and don’t add totals rows, titles, or notes above the data; InstaCharts reads the sheet as one continuous grid.
Avoid: two tables stacked in one sheet
| Month | Sales |
|---|---|
| Jan | 500 |
| Feb | 650 |
| Region | Sales |
| East | 700 |
| West | 450 |
Instead, split the tables into separate sheets (or separate tabs in an Excel/Google workbook; each tab imports as its own sheet).
You don’t need to summarize your data
Import your raw, row-level data; you do not need to total or group it first. InstaCharts aggregates automatically when it builds the chart, so repeated categories are expected and fine.
This raw table is perfectly good to import:
| Region | Sales |
|---|---|
| East | 100 |
| East | 150 |
| West | 200 |
| East | 50 |
| West | 175 |
You don’t have to add up the three “East” rows yourself. When you chart Region against Sales,
InstaCharts sums them into a single East bar for you, and you can switch the summary to average,
count, min, or max at any time.
JSON objects are split apart for you
If a column holds JSON objects, InstaCharts recognizes them and can split each property into its own column, so the individual values become chartable.
A column with JSON object values:
| Order | Customer |
|---|---|
| 1001 | {"city":"Austin","state":"TX","vip":true} |
| 1002 | {"city":"Reno","state":"NV","vip":false} |
Using Split Object Column from the column’s header menu turns that one column into three:
| Order | Customer.city | Customer.state | Customer.vip |
|---|---|---|---|
| 1001 | Austin | TX | true |
| 1002 | Reno | NV | false |
The same applies to lists: a value like [1,2,3] is imported as an Array and shown correctly in
the data table. See Transform Data for more on reshaping columns
after import.
Import options that fix a messy sheet
You do not always have to edit the source file. The import preview window has options that handle the most common layout problems for you, and the preview updates as soon as you change one.
| Option | What it fixes |
|---|---|
| Find first data row | Titles, notes, and blank rows sitting above the table, which stop numbers and dates from being detected |
| Use first row as header | A sheet with no header row, or one where the wrong row was used for the column names |
| Choose columns to import | Wide spreadsheets with columns you don’t need in the chart |
| File encoding | Accented or non-Latin characters showing up as garbled text |
| Pages | A workbook where only some of the tabs should be imported |
See Import Options for how each one works.
Check the colors in the preview
Before you import, the preview grid color codes each column header by the type InstaCharts detected: green for dates, blue for numbers, and pink for text. This is the quickest way to confirm your data was structured correctly.
A column you expect to be numeric showing up pink means a text value slipped into it, which is the problem described in Keep one value type per column. Clean the column in your source file and import again.
Column types
InstaCharts detects a type for every column based on the values it contains. The type controls how a column is displayed, whether it can be plotted on a number or date axis, and how it can be aggregated. Types are detected automatically, and most can be overridden from a column’s header menu on the Data tab. See Column Types for which types are detected only and can’t be manually forced.
Text and categories
Categorical values become the labels and groups in your charts.
| Type | Use it for | Example |
|---|---|---|
| Text | Names, labels, and general categories | North America |
| Boolean | Yes/no or true/false values | true |
| Integer Category | Whole numbers treated as categories instead of a number axis | 1, 2, 3 |
| Id | Identifier values that label a record | 1024 |
| UUID | Software-generated unique identifiers, treated as text | 9f1c2a7e… |
Numbers
Numeric columns can be plotted on a value axis and aggregated (sum, average, count, and more). InstaCharts strips formatting like symbols and separators so the values can be charted.
| Type | Use it for | Example |
|---|---|---|
| Integer | Whole numbers | 42 |
| Big Integer | Whole numbers greater than one billion | 5000000000 |
| Decimal | Numbers with a fractional part | 3.14 |
| Percent | Percentages | 27% |
| Currency | Money values | $1,250.00 |
| Year | A year, displayed without thousands separators | 2026 |
Dates and time
Date columns unlock time-based charts and can be split into parts like month or year.
| Type | Use it for | Example |
|---|---|---|
| Date | Calendar dates (American MM/DD/YYYY) | 07/08/2026 |
| Timestamp | Dates with time, in ISO-8601 format | 2026-07-08T15:25:18.848Z |
Structured values
These columns hold more than one value per cell. InstaCharts parses them so they display correctly, and they can be broken apart into simpler columns.
| Type | Use it for | Example |
|---|---|---|
| Object | A JSON object in a single cell | {"a":1,"b":2} |
| Array | A list of values in a single cell | [1,2,3,4,5] |
| Multiple Choice | Several comma-separated selections in one cell (surveys) | chrome, firefox, safari |
Related
- Import File: upload a CSV, Excel, or JSON file
- Import from Google Sheets: connect a live spreadsheet
- Column Types: how types are detected and how to change them
- Transform Data: pivot, unpivot, split, and clean up your data
- Aggregation: summarize the values in a column