---
title: "SPARKLINE in Google Sheets: chart types, options, examples"
canonical: "https://www.owox.com/blog/articles/sparkline-google-sheets"
updated: "2026-10-05"
---

# SPARKLINE in Google Sheets: chart types, options and examples

SPARKLINE draws a miniature chart inside one cell: a line by default, or columns, a bar or a win/loss chart. This guide lists the options of each chart type, shows them on real data, and covers progress bars, a common scale for rows that are compared, ranges that grow with the data, and the mistakes that leave the cell empty or show an error.

[Google Sheets Tips](/blog/topics/google-sheets-tips) · Updated October 2, 2026 · [Vadym Kramarenko](/team/vadym-kramarenko) · 10 min read

![SPARKLINE in Google Sheets: chart types, options and examples](https://cdn.owox.ai/www/webflow/6a106f08320ddc828725a1fc_USE-SPARKLINE.png/public)

The SPARKLINE function draws a small chart inside one cell:

> `=SPARKLINE(C3:L3)`

With no options it draws a line through the values of the range. Fill the formula down and every row of a table gets its own trend line next to the numbers.

![Google Sheets with monthly sales of one customer in C3:L3 and the formula =SPARKLINE(C3:L3) drawing a small line chart in a cell](https://cdn.owox.ai/www/webflow/68e40ad64937c0f6d79888a6_1.-Basic-Example-of-SPARKLINE.png/public)

## Syntax

> `=SPARKLINE(data, [options])`

*   **data:** the range or array to plot.
*   **options:** optional settings, written as pairs of name and value in curly braces: `{"charttype", "column"; "color", "green"}`. The name and the value are separated by a comma, the pairs by a semicolon.

The option **charttype** sets one of four chart types:

| charttype | Draws | Typical use |
| --- | --- | --- |
| `"line"` (default) | A line through the values | A trend over time |
| `"column"` | One column per value | Values of a period compared |
| `"bar"` | One stacked horizontal bar | Progress towards a target, shares of a total |
| `"winloss"` | Equal blocks above or below a line | Positive or negative, with no size |

The options of each type, from [Google’s reference for SPARKLINE](https://support.google.com/docs/answer/3093289) (checked in October 2026):

| Option | Line | Column and winloss | Bar | What it sets |
| --- | --- | --- | --- | --- |
| `color` | yes | yes |  | The color of the line or the columns |
| `color1`, `color2` |  |  | yes | The colors of the bar segments |
| `linewidth` | yes |  |  | The thickness of the line |
| `xmin`, `xmax` | yes |  |  | The ends of the horizontal axis |
| `ymin`, `ymax` | yes | yes (not winloss) |  | The ends of the vertical scale |
| `max` |  |  | yes | The value of a full-width bar |
| `lowcolor`, `highcolor` |  | yes |  | The color of the lowest and highest column |
| `firstcolor`, `lastcolor` |  | yes |  | The color of the first and last column |
| `negcolor` |  | yes |  | The color of negative columns |
| `axis`, `axiscolor` |  | yes |  | A line at zero, and its color |
| `empty` | yes | yes | yes | Empty cells: `"zero"` or `"ignore"` |
| `nan` | yes | yes | yes | Text cells: `"convert"` or `"ignore"` |
| `rtl` | yes | yes | yes | Draw from right to left: true or false |

Colors are written as names (“green”) or hex codes (“#009b3b”).

## Line sparklines

> `=SPARKLINE(C3:L3)`

![Google Sheets with monthly sales of ten customers and a line sparkline in each row](https://cdn.owox.ai/www/webflow/68e40b29043e5bae0161d8f0_2.-Line-Charts.png/public)

### Color and line width

> `=SPARKLINE(C3:L3, {"color", "#009b3b"})`

![Line sparklines in Google Sheets drawn in different colors with the color option](https://cdn.owox.ai/www/webflow/68e40b6a4937c0f6d798c720_3.-Line-Charts---Color.png/public)

> `=SPARKLINE(C3:L3, {"linewidth", 5})`

![Line sparklines in Google Sheets drawn as thick lines with the linewidth option set to 5](https://cdn.owox.ai/www/webflow/68e40bd93cbcfa49d9b210a2_5.-Line-Charts---Line-Width.png/public)

The color of a line sparkline also follows the font color of the cell, so it can be set from the toolbar or by conditional formatting.

### A common scale

By default every sparkline is scaled to its own lowest and highest value, so a customer who went from 60 to 80 and one who went from 150 to 240 draw the same rising line. To compare rows, give them the same scale:

> `=SPARKLINE(C3:L3, {"ymin", 60; "ymax", 240})`

With two columns of data, the first is the horizontal position and the second the value, and all four limits can be set:

> `=SPARKLINE(B3:C12, {"xmin", 1; "xmax", 10; "ymin", 60; "ymax", 240})`

![Google Sheets with month numbers in column B and sales in column C and a line sparkline with xmin, xmax, ymin and ymax set](https://cdn.owox.ai/www/webflow/68e40ba3de678ddad05ba9ff_4.-Line-Charts---Min-and-Max.png/public)

### Empty cells and text

By default empty cells are skipped and the line connects the neighbours. With “empty” set to “zero” they are drawn as zero:

> `=SPARKLINE(C3:L3, {"empty", "zero"})`

![Line sparklines in Google Sheets that dip to the bottom where a month is empty, drawn with the empty option set to zero](https://cdn.owox.ai/www/webflow/68e40c09d9ca555170cfcd86_6.-Line-Charts---Blank-Cells.png/public)

Cells with text such as “N/A” are skipped too; “nan” set to “convert” draws them as zero:

> `=SPARKLINE(C3:L3, {"nan", "convert"})`

![Line sparklines in Google Sheets over rows that contain N/A, Blank and Text, drawn with the nan option set to convert](https://cdn.owox.ai/www/webflow/68e40c7cdd9fd783a68c80d4_7.-Line-Charts---Non-Numeric-Values-with-_nan_.png/public)

A dip to zero reads as “no sales”. If the value is unknown, not zero, leave the default.

### Right to left

> `=SPARKLINE(C3:L3, {"rtl", true})`

![Line sparklines in Google Sheets drawn from right to left with the rtl option](https://cdn.owox.ai/www/webflow/68e40cb6566873528efb8b98_8.-Line-Charts---RTL.png/public)

## The Turning Point

OWOX Data Marts

See your first report built in real time. _15 minutes._

1.  Connect your data warehouse
2.  Pick your metrics
3.  Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

[Book a Demo](/book-a-call)

We'll use your actual use case

## Column sparklines

> `=SPARKLINE(C3:L3, {"charttype", "column"})`

![Column sparklines in Google Sheets with one column per month for each customer](https://cdn.owox.ai/www/webflow/68e411657c446fb5b84b0e7c_9.-Column-Chart.png/public)

The scale of a column sparkline starts at the lowest value of its range, so the smallest column is almost invisible and small differences look large. Set `"ymin", 0` for columns in proportion to the values:

> `=SPARKLINE(C3:L3, {"charttype", "column"; "ymin", 0})`

A fixed range for all rows makes them comparable:

> `=SPARKLINE(C3:L3, {"charttype", "column"; "ymin", 60; "ymax", 240})`

![Column sparklines in Google Sheets drawn on the same scale from 60 to 240 with ymin and ymax](https://cdn.owox.ai/www/webflow/68e41276876e099993b693f7_13.-Column-Chart---Min-and-Max-Values.png/public)

### Highlight single columns

> `=SPARKLINE(C3:L3, {"charttype", "column"; "highcolor", "green"; "lowcolor", "yellow"; "lastcolor", "blue"; "negcolor", "red"})`

![Column sparklines in Google Sheets with the highest column green, the lowest yellow, the last blue and negative columns red](https://cdn.owox.ai/www/webflow/68e4123f61e119f686e007a2_12.-Column-Chart---Color.png/public)

One highlighted column is usually enough: a neutral color for all, and `lastcolor` for the current period.

### An axis for negative values

> `=SPARKLINE(C3:L3, {"charttype", "column"; "axis", true; "axiscolor", "red"})`

![Column sparklines in Google Sheets with positive and negative values and a red axis line at zero](https://cdn.owox.ai/www/webflow/68e411ed61e119f686dfb006_11.-Column-Chart---Axis-Color.png/public)

## Bar sparklines

A bar sparkline is one horizontal bar. Each value of the data is a segment, and “max” is the value at which the bar fills the cell.

### A progress bar

> `=SPARKLINE(C3, {"charttype", "bar"; "max", MAX($C$3:$C$12)})`

![Bar sparklines in Google Sheets where the length of each bar shows the January sales of each customer relative to the highest value in the column](https://cdn.owox.ai/www/webflow/68e413ab03c21c6eadbcf476_16.-Bar-Chart---Max-Values.png/public)

With the same “max” in every row, the bars can be compared down the column. For progress towards a target, use the target: `=SPARKLINE(B2, {"charttype", "bar"; "max", C2})`, or `"max", 1` for a share between 0 and 1.

### Two segments

> `=SPARKLINE(C3:D3, {"charttype", "bar"})`

![Bar sparklines in Google Sheets with two segments for the January and February sales of each customer](https://cdn.owox.ai/www/webflow/68e41377dd9fd783a68f1f46_15.-Bar-Charts.png/public)

> `=SPARKLINE(C3:D3, {"charttype", "bar"; "color1", "green"; "color2", "red"})`

![Bar sparklines in Google Sheets with a green and a red segment set by color1 and color2](https://cdn.owox.ai/www/webflow/68e413e201642ca51d5435cc_17.-Bar-Charts---Color.png/public)

### Shares of a total

When the two values add up to 1, the bar shows their split:

> `=SPARKLINE(C3:D3, {"charttype", "bar"; "max", 1})`

![Bar sparklines in Google Sheets showing the split between new and returning sales as two segments that fill the cell](https://cdn.owox.ai/www/webflow/68e4145bb69a83412274c9e0_19.-Bar-Charts---Stacked-Bar.png/public)

## Win/loss sparklines

A win/loss chart draws one block per value, above the line for positive numbers and below it for negative ones. The size of the number is ignored.

> `=SPARKLINE(C3:L3, {"charttype", "winloss"})`

![Win/loss sparklines in Google Sheets with blocks above the line for months with growth and below it for months with a decline](https://cdn.owox.ai/www/webflow/68e41486aa537fc0a6a2c670_20.-Win-Loss-Charts.png/public)

The chart type is written “winloss”, in one word. With a hyphen, “win-loss”, the formula returns #VALUE!.

The color options of column sparklines apply here as well:

> `=SPARKLINE(C3:L3, {"charttype", "winloss"; "color", "gray"; "negcolor", "red"; "firstcolor", "blue"; "lastcolor", "orange"})`

![Win/loss sparklines in Google Sheets with custom colors for the first, last, highest, lowest and negative blocks](https://cdn.owox.ai/www/webflow/68e414c9331cdcaff63fe248_21.-Win-loss-Charts---Color.png/public)

## Advanced examples

### Options from cells

Any option value can be a cell reference, which lets each row have its own setting without a different formula:

> `=SPARKLINE(C3:L3, {"linewidth", M3; "color", N3})`

![Line sparklines in Google Sheets whose line width and color are read from two columns next to the data](https://cdn.owox.ai/www/webflow/68e41581033f60ed9e781aac_23.-SPARKLINE-Options-Using-Cell-References.png/public)

### Only some columns of a row

Join parts of a row in curly braces:

> `=SPARKLINE({C3:E3, H3:J3}, {"charttype", "column"})`

![Column sparklines in Google Sheets built from two separate parts of each row, joined in curly braces](https://cdn.owox.ai/www/webflow/68e4168fab3b267bc7af5836_27.-Multiple-Data-Ranges-in-SPARKLINE-Chart.png/public)

### A range that grows

A range without an end row includes values added later:

> `=SPARKLINE(C3:C)`

For the last four values of a growing column:

> `=SPARKLINE(CHOOSEROWS(FILTER(C3:C, C3:C <> ""), -4, -3, -2, -1))`

FILTER removes the empty cells and CHOOSEROWS takes the last four rows of what is left. The screenshot gets the same four months with INDIRECT and MATCH on the name of the last month; the formula above needs no month name.

![Google Sheets with monthly sales in column C and a line sparkline of the last four months](https://cdn.owox.ai/www/webflow/68e4163ff0ffca487907de75_26.-SPARKLINE-Ranges-with-INDIRECT-and-MATCH.png/public)

### Stock prices

[GOOGLEFINANCE](/blog/articles/googlefinance-function-google-sheets) returns a table of dates and prices, which SPARKLINE plots directly:

> `=SPARKLINE(GOOGLEFINANCE($C3, "price", TODAY()-60, TODAY(), "DAILY"), {"linewidth", 2; "color", "#5f88cc"})`

![Google Sheets with company names and ticker symbols and a line sparkline of the last 60 days of each stock price](https://cdn.owox.ai/www/webflow/68e415bf033f60ed9e783bc5_24.-Stock-Price-SPARKLINES-Using-GOOGLEFINANCE.png/public)

## Errors and empty cells

**⚠️ Error:** #VALUE!

✅ **Solution:** An option value is not valid, most often “win-loss” for “winloss”.

**⚠️ Error:** #N/A

✅ **Solution:** The data holds no numbers. Check that the range is the right one and that the numbers are not stored as text.

**⚠️ Error:** An option has no effect and there is no error.

✅ **Solution:** A misspelled option name is ignored silently. Check the spelling against the table above: “colour” does nothing, “color” works. Also check that the option belongs to the chart type: “max” is for bars, “ymax” for lines and columns.

**⚠️ Error:** The cell looks empty.

✅ **Solution:** There is one value only (a line needs two points), the line is the same color as the background, or the row is too low to show the chart. Make the row taller or the column wider.

**⚠️ Error:** Rows cannot be compared: every line fills its cell.

✅ **Solution:** Each sparkline has its own scale. Set the same “ymin” and “ymax”, or the same “max” for bars, in every row.

**⚠️ Error:** A formula parse error in a locale with decimal commas.

✅ **Solution:** Inside the option braces, such locales use a backslash between name and value: `{"charttype"\"column"}`.

## Related guides

*   [Charts in Google Sheets](/blog/articles/charts-for-visualization-google-sheets): Full-size charts and their settings.
*   [Bar graphs](/blog/articles/bar-graphs-in-google-sheets): Bar and column charts with labels.
*   [GOOGLEFINANCE](/blog/articles/googlefinance-function-google-sheets): Prices and rates to plot.
*   [CHAR](/blog/articles/char-function-google-sheets) and [REPT](/blog/articles/rept-function-google-sheets): Symbols and text bars in a cell.
*   [Array formulas](/blog/articles/array-formulas-google-sheets): Curly braces and their separators.
*   [FILTER](/blog/articles/google-sheets-filter-function): Choose the rows a sparkline plots.

## A trend line needs every period in the row

A sparkline is useful because it sits next to the number it explains. It is only as good as the row behind it: twelve months in twelve cells, the same metric in each. When those cells are filled by hand from exports, a missing month is a gap that the default settings quietly skip, and the line looks smoother than the business was.

The [OWOX Data Marts extension for Google Sheets](https://workspace.google.com/marketplace/app/owox_data_marts/94902851409) covers that half. A data analyst publishes a data mart (a table or an SQL query in your data warehouse) and makes it available for reports. In Sheets you open the extension, pick the data mart, tick the columns you want and run it. The rows land in a tab, ready for your formulas.

![Google Sheets with the OWOX Data Marts extension open beside an ad spend table: the Unified Ad Spend data mart, nine of fourteen columns ticked and a Save & Run button – the rows in the sheet come from a governed data mart, not a pasted export](https://cdn.owox.ai/www/content-marketing-article/sparkline-google-sheets/screens/1.png/public)

What changes for the person who maintains the sheet:

*   **Refresh replaces re-export.** _Refresh current report_ in the extension menu re-runs the same pull, and a scheduled refresh keeps the tab current without anyone touching it.
*   **The source is written on the sheet.** The header cell of an imported tab carries a note with the data mart it came from, the time of the import and a link to the report.
*   **No SQL and no warehouse access needed.** The analyst decides which data marts and columns are available. You choose from that list.

The extension does not write or change the analyst’s SQL. Each refresh fills the same columns with the current periods, and the sparklines next to them redraw on their own. The extension comes with the OWOX Cloud plans of [OWOX Data Marts](https://www.owox.com/app-signup); [spreadsheet reporting](/features/spreadsheet-reporting) describes both ways data reaches a sheet.

## Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

*   No AI hallucinations
*   Analyst-governed definitions
*   Every number traces to SQL

[Get started free](https://www.owox.com/app-signup)

## FAQ

## Frequently Asked Questions

How do I compare multiple SPARKLINES on the same scale?

To ensure fair comparison, use the "min" and "max" options in each SPARKLINE formula to standardize Y-axis values across rows or columns.

Can I use SPARKLINE with dynamic data?

Yes, SPARKLINE works with dynamic ranges, helper formulas like INDIRECT or QUERY, and real-time sources like GOOGLEFINANCE.

Why is my SPARKLINE not displaying?

Check four things. An invalid option value returns #VALUE!: the win/loss chart type is written "winloss", in one word. Data without numbers returns #N/A. A misspelled option name is ignored without an error, so the chart keeps its default look. And a cell that seems empty may hold a line in the background color, a single value, or a row too low to show the chart.

How do I change the color of a SPARKLINE?

Use the "color" option inside the SPARKLINE formula to define custom colors, either by name (e.g., "green") or by hex code.

What types of charts can SPARKLINE create?

Google Sheets SPARKLINE supports line, bar, column, and win/loss charts directly inside cells, based on structured numeric data ranges.

What is the SPARKLINE function in Google Sheets?

SPARKLINE creates mini inline charts inside a single cell to visualize trends, performance, or patterns using formula-based configurations.

## Who wrote this

![Vadym Kramarenko](https://cdn.owox.ai/www/webflow/6798e703afdf787334941cde_Vadym-Kramarenko.png/public)

[Vadym Kramarenko](/team/vadym-kramarenko) · Growth Marketing Manager

Vadym Kramarenko is a Growth Marketing Manager at OWOX, where he drives user acquisition and product-led growth strategies. He hosts the OWOX podcast, interviewing analytics professionals about data-driven marketing, attribution, and reporting best practices. Vadym specializes in turning complex analytics concepts into practical, actionable marketing frameworks.

[LinkedIn](https://www.linkedin.com/in/vadim-kramarenko/) · [All articles](/team/vadym-kramarenko)

[Google Sheets Tips](/blog/topics/google-sheets-tips)

## Related articles

[Google Sheets Tips · UNIQUE function in Google Sheets: syntax, examples and errors · October 2, 2026](/blog/articles/unique-function-google-sheets)

[Google Sheets Tips · How to average in Google Sheets: AVERAGE and AVERAGEIF · October 2, 2026](/blog/articles/average-functions-google-sheets)

[Google Sheets Tips · XLOOKUP vs VLOOKUP in Google Sheets: the key differences · October 2, 2026](/blog/articles/key-differences-of-xlookup-vs-vlookup)

[See all articles →](/blog/articles)

## Book a call

You are booked. The invitation is on its way to , with the calendar invite and the meeting link.

[Reschedule](#)

[Cancel](#)

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Google Sheets Tips](https://www.owox.com/blog/topics/google-sheets-tips) — /blog/topics/google-sheets-tips.md
- [Vadym Kramarenko](https://www.owox.com/team/vadym-kramarenko) — /team/vadym-kramarenko.md
- [Book a Demo](https://www.owox.com/book-a-call) — /book-a-call.md
- [GOOGLEFINANCE](https://www.owox.com/blog/articles/googlefinance-function-google-sheets) — /blog/articles/googlefinance-function-google-sheets.md
- [Charts in Google Sheets](https://www.owox.com/blog/articles/charts-for-visualization-google-sheets) — /blog/articles/charts-for-visualization-google-sheets.md
- [Bar graphs](https://www.owox.com/blog/articles/bar-graphs-in-google-sheets) — /blog/articles/bar-graphs-in-google-sheets.md
- [CHAR](https://www.owox.com/blog/articles/char-function-google-sheets) — /blog/articles/char-function-google-sheets.md
- [REPT](https://www.owox.com/blog/articles/rept-function-google-sheets) — /blog/articles/rept-function-google-sheets.md
- [Array formulas](https://www.owox.com/blog/articles/array-formulas-google-sheets) — /blog/articles/array-formulas-google-sheets.md
- [FILTER](https://www.owox.com/blog/articles/google-sheets-filter-function) — /blog/articles/google-sheets-filter-function.md
- [OWOX Data Marts](https://www.owox.com/app-signup)
- [spreadsheet reporting](https://www.owox.com/features/spreadsheet-reporting) — /features/spreadsheet-reporting.md
- [Google Sheets Tips · UNIQUE function in Google Sheets: syntax, examples and errors · October 2, 2026](https://www.owox.com/blog/articles/unique-function-google-sheets) — /blog/articles/unique-function-google-sheets.md
- [Google Sheets Tips · How to average in Google Sheets: AVERAGE and AVERAGEIF · October 2, 2026](https://www.owox.com/blog/articles/average-functions-google-sheets) — /blog/articles/average-functions-google-sheets.md
- [Google Sheets Tips · XLOOKUP vs VLOOKUP in Google Sheets: the key differences · October 2, 2026](https://www.owox.com/blog/articles/key-differences-of-xlookup-vs-vlookup) — /blog/articles/key-differences-of-xlookup-vs-vlookup.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
