What is a text progress bar?

A text progress bar shows how far along something is using ordinary characters instead of an image, for example ████████░░░░░░░░░░░░ 42% or [=========> ]. Because it is plain text, it can go anywhere text goes: a README, a Discord or Slack message, a commit message, a terminal script, a status line, or a social media post.

Tool description

This tool turns a value and a total into a text progress bar you can copy. Pick one of the ready-made styles or type your own characters, set the width, add borders, and choose whether to show the percentage, the value out of the total, or both. Add several rows to draw a small bar chart, such as the languages in a project or the progress of several tasks, with the labels and bars lined up.

Features

  • Styles made of blocks, shades, hashes, arrows, circles, squares, and emoji, plus custom fill, empty, and head characters
  • Smooth blocks that fill eighths of a character for a finer bar
  • Width from 1 to 100 characters
  • Optional left and right borders, such as [ and ]
  • Percentage, value out of total, both, or no label, with a chosen number of decimal places
  • Several bars at once, with labels padded so the bars line up
  • Copy the result or download it as a text file

How it works

The value is divided by the total and multiplied by the width to find how many characters to fill, rounded to the nearest character. The smooth style rounds to the nearest eighth of a character and draws the partial cell with one of the Unicode blocks ▏▎▍▌▋▊▉. The arrow style and custom bars with a head character replace the last filled character with the head until the bar is full. Values below zero draw an empty bar, and values above the total draw a full bar while the label still shows the real percentage, such as 150%.

Tips

  • Paste the bars into a code block (three backticks in Markdown, Discord, or Slack) so they are shown in a monospace font and line up.
  • Emoji and some symbols are wider than one character in many fonts, so emoji bars may not line up with text in the same line.
  • For a terminal or log file that may not support Unicode, use the Hash or Arrow style, which only use ASCII characters.