How do you build progress bars in Google Sheets cells?

In-cell progress bars show completion as a mini chart inside one cell using SPARKLINE bar charts, REPT block characters, or colored bars driven by percent complete. They turn a number like 0.72 into a visual stripe readers grasp faster than raw decimals on dashboards and habit trackers.

When to use it

Use progress bars on KPI rows, fundraising thermometers, course completion tables, and sprint boards where space is tight and you want glanceable percent toward goal without a full chart object.

When to skip it

Skip in-cell bars when exact values matter more than visuals for auditors, or when bars would sit on tiny mobile columns where the chart becomes unreadable smears.

How it works

  1. 1

    Put current value in one cell and goal in another; helper column computes percent with MIN and division.

  2. 2

    {:"SPARKLINE bar option"=>"=SPARKLINE(C2,{\"charttype\",\"bar\";\"max\",1;\"color1\",\"#34a853\"}) when C2 is 0-1 percent."}

  3. 3

    {:"REPT alternative"=>"=REPT(\"█\",ROUND(D2*10,0)) for ten-block text bars when sparklines are blocked."}

  4. 4

    Apply data bar conditional formatting on the percent column for editors who prefer menu-driven setup.

  5. 5

    Anchor charts to dynamic ranges so new rows inherit bar formulas via ARRAYFORMULA where appropriate.

  6. 6

    Test color contrast and empty states so zero percent and over 100 percent still render sensibly.

Examples in Google Sheets

Fundraising thermometer row

Raised divided by goal feeds SPARKLINE bar in column E; dashboard shows ten campaigns as compact bars.

Course module completion

COUNTIF of checked lessons over total lessons drives percent bar per student row in roster tab.

Sprint story points

Done points over committed points with color flip conditional formatting when percent drops below fifty.

Build this without starting from a blank cell

Use a Better Sheets tool for progress bars in cells, then watch a walkthrough when you want the full pattern.

Better Sheets resources

Common mistakes

  • SPARKLINE max set to 100 while cell stores 0.75, so bar always looks empty.
  • REPT bars in narrow columns clipped without widening column or using smaller character.
  • Mixing percent and whole number in same column without format, so bars scale randomly row to row.
  • Hard-coding green for bad metrics like error rate where red would communicate risk better.
  • Duplicating full chart and in-cell bar for same metric, cluttering dashboard without added insight.

Frequently asked questions

SPARKLINE vs chart object?
SPARKLINE lives in one cell and updates with the row. Chart objects are better for legends and axes.
Progress bar with negative values?
Clamp with MAX(0, value) or use win-loss sparkline type for above or below target scenarios.
Multiple colors in one bar?
Standard SPARKLINE bar is one color. Use stacked conditional formatting or separate columns per segment.
Progress bar from checkbox column?
COUNTIF TRUE over COUNTA tasks yields percent complete feeding SPARKLINE in the status row.
Export PDF with bars?
SPARKLINE and REPT export in PDF like normal cells. Verify print scale so bars are not clipped.
Playground tools for bars?
Better Sheets character playground helps preview REPT and sparkline patterns before pasting formulas.
Bar for date range elapsed?
Use (TODAY()-start)/(end-start) clamped zero to one as the percent input to SPARKLINE.
ARRAYFORMULA with SPARKLINE?
SPARKLINE does not array down easily in all cases; fill helper percent column then sparkline per row.

Related Tutorials

Watch how progress bars in cells works

Browse more tutorials
Create a Progress Bar - Make Progress Bars with Sparkline: Part 1

Create a Progress Bar - Make Progress Bars with Sparkline: Part 1

Let's make a progress bar in Google Sheets.
Make Color Changing Progress Bars - Make Progress Bars with Sparkline: Part 4

Make Color Changing Progress Bars - Make Progress Bars with Sparkline: Part 4

Create awesome progress bars with sparkline formula. You can make progre...
Hide Completed Bars - Make Progress Bars with Sparkline: Part 2

Hide Completed Bars - Make Progress Bars with Sparkline: Part 2

Use the IF() formula to hide completed bars and display messages instead...
Make Vertical Bars - Make Progress Bars with Sparkline: Part 3

Make Vertical Bars - Make Progress Bars with Sparkline: Part 3

we're gonna go through what does it take to make a vertical progress bar.
Better Sheets Videos Checklist

Better Sheets Videos Checklist

How to create a video checklist. Create a sheet with check boxes that yo...
Building a Year Progress Clone

Building a Year Progress Clone

Create a year progress bar to see how much of the year is gone. Great mo...

Related blog posts

Guides that explain progress bars in cells in more depth.

Browse the blog

Related glossary terms

dashboards

A dashboard is a single view that answers "how are we doing?" without hunting across tabs. In Google Sheets, it is usually a summary tab with big numbers, charts, and conditional formatting fed by QUERY, pivot tables, or IMPORTRANGE from raw data you keep elsewhere.

Read guide →

conditional formatting

Conditional formatting changes how cells look when they meet rules you define, such as values above a target or dates in the past. It helps scanners spot problems fast without writing values into extra helper columns. Rules can be simple comparisons or custom formulas that reference other sheets.

Read guide →

KPI tracking

KPI tracking means choosing a small set of numbers that show whether you are winning, then updating them on a rhythm everyone trusts. In Sheets, each KPI usually has a definition, data source, target, and actual cell on a dashboard fed by formulas, not hand-typed guesses.

Read guide →

visual formulas in Sheets

Visual formulas are spreadsheet layouts where the formula output is meant to be seen, not just calculated: sparkline strips, emoji status icons, color scales, and REPT bars that communicate trend and health at a glance. They sit between raw numbers and full chart objects for dense dashboards.

Read guide →

trackers

A tracker is a living list you update over time: tasks, leads, inventory, habits, or bugs. Good trackers use one row per item, clear statuses, and columns that sort and filter without cleanup scripts. They often feed a dashboard tab when the team outgrows scanning raw rows.

Read guide →

Done reading about progress bars in cells?

Membership unlocks 636+ tutorials, unlimited generators, and every template. Practical lessons. Zero fluff.

Need this once

Jump to a free tool or a single tutorial for this topic.

Learning Sheets for real

Unlock the full library, generators, and templates with membership.