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
Put current value in one cell and goal in another; helper column computes percent with MIN and division.
-
2
{:"SPARKLINE bar option"=>"=SPARKLINE(C2,{\"charttype\",\"bar\";\"max\",1;\"color1\",\"#34a853\"}) when C2 is 0-1 percent."}
-
3
{:"REPT alternative"=>"=REPT(\"█\",ROUND(D2*10,0)) for ten-block text bars when sparklines are blocked."}
-
4
Apply data bar conditional formatting on the percent column for editors who prefer menu-driven setup.
-
5
Anchor charts to dynamic ranges so new rows inherit bar formulas via ARRAYFORMULA where appropriate.
-
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.
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
Create a Progress Bar - Make Progress Bars with Sparkline: Part 1
Make Color Changing Progress Bars - Make Progress Bars with Sparkline: Part 4
Hide Completed Bars - Make Progress Bars with Sparkline: Part 2
Make Vertical Bars - Make Progress Bars with Sparkline: Part 3
Building a Year Progress Clone
Related blog posts
Guides that explain progress bars in cells in more depth.
Word Tracker and Progress Tracker in Google Sheets
Ever dreamed of having a personal writing assistant right there in your Google Sheets? Imagine tracking your word count, setting goals, and watching your progress grow – all without leaving your favourite spreadsheet app. Well, your dream is about to come true! In this post, we're going to show you how to create your very own word counter and goal tracker using Google Sheets. It's super easy to set up, completely customizable, and perfect for keeping you motivated on your writing journey. L...
Read post →How To Make That Viral Growing Plant Progress Chart
Imagine checking off tasks and seeing a cute little plant sprout right before your eyes. That's exactly what we're going to create today!
Read post →How to Say "I Do Google Sheets"
We do spreadsheets. That's what we do. We use Google Sheets for everything. So how on earth are we to get across all of the nuance and power that we hold at our finger tips?
Read post →Related 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 600+ 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.