Visualises progress based on a goal and current completion.
Progress Bar
Formulas
Simple Bar
if(prop("Completed") / prop("Goal") >= 1, "✅", if(empty(prop("Completed")) and not empty(prop("Goal")), "0%", slice("✦✦✦✦✦✦✦✦✦✦", 0, floor(prop("Completed") / prop("Goal") * 10)) + " " + format(floor(prop("Completed") / prop("Goal") * 100)) + "%"))
☑️ Formula Breakdown
if(prop("Completed") / prop("Goal") >= 1, "✅",
- If
Completed
divided byGoal
is greater than or equal to1
, display ✅
if(empty(prop("Completed")) and not empty(prop("Goal")), "0%",
- Otherwise if
Completed
returns nothing butGoal
returns something, display0%
slice("✦✦✦✦✦✦✦✦✦✦", 0, floor(prop("Completed") / prop("Goal") * 10))
- Otherwise divide
Completed
byGoal
, round the results to a full number, then remove that number of squares from✦✦✦✦✦✦✦✦✦✦
+ " " + format(floor(prop("Completed") / prop("Goal") * 100)) + "%"))
- Add the rounded percentage after the squares.
⚠️ Rounding Notes
Bars will be added at different progress points depending on whether
floor
, round
, or ceil
is used in the slice
part.
floor
→ 0–9% = No bar, 10–19% = 1 bar, etc.
round
→ 0–4% = No bar, 5–9% = 1 bar, etc.
ceil
→ 0% = No bar, 1–10% - 1 bar, etc.Full Bar
if(prop("Completed") / prop("Goal") >= 1, "✅", slice("✦✦✦✦✦✦✦✦✦✦", 0, floor(prop("Completed") / prop("Goal") * 10)) + slice("✧✧✧✧✧✧✧✧✧✧", 0, ceil(10 - prop("Completed") / prop("Goal") * 10)) + " " + format(floor(prop("Completed") / prop("Goal") * 100)) + "%")
☑️ Formula Breakdown
if(prop("Completed") / prop("Goal") >= 1, "✅",
- If
Completed
divided byGoal
is greater than or equal to1
, display ✅
slice("✦✦✦✦✦✦✦✦✦✦", 0, floor(prop("Completed") / prop("Goal") * 10))
- Otherwise divide
Completed
byGoal
, round the results down to a full number, then remove that number of diamonds from✦✦✦✦✦✦✦✦✦✦
+ slice("✧✧✧✧✧✧✧✧✧✧", 0, ceil(10 - prop("Completed") / prop("Goal") * 10))
- Then divide
Completed
byGoal
, subtract that from 10, then round the results up to a full number, then remove that number of diamonds from✧✧✧✧✧✧✧✧✧✧
+ " " + format(floor(prop("Completed") / prop("Goal") * 100)) + "%")
- Add the rounded percentage after the squares.
⚠️ Rounding Notes
Bars will be added at different progress points depending on whether
floor + ceil
or ceil + floor
is used in the slice
parts.
floor + ceil
→ 0–9% = No bar, 10–19% = 1 bar, etc.
ceil + floor
→ 0% = No bar, 1–10% - 1 bar, etc.Basic Bar
if(prop("Completed") / prop("Goal") >= 1, "✓", slice("++++++++++", 0, floor(prop("Completed") / prop("Goal") * 10)) + slice("−−−−−−−−−−", 0, ceil(10 - prop("Completed") / prop("Goal") * 10)))
☑️ Formula Breakdown
if(prop("Completed") / prop("Goal") >= 1, "✓" ,
- If
Completed
divided byGoal
is greater than or equal to1
, display✓
slice("++++++++++", 0, floor(prop("Completed") / prop("Goal") * 10))
- Otherwise divide
Completed
byGoal
, round the results down to a full number, then remove that number of plus signs from++++++++++
+ slice("−−−−−−−−−−", 0, ceil(10 - prop("Completed") / prop("Goal") * 10)))
- Then divide
Completed
byGoal
, subtract that from 10, then round the results up to a full number, then remove that number of subtraction signs from−−−−−−−−−−
⚠️ Rounding Notes
Bars will be added at different progress points depending on whether
floor + ceil
or ceil + floor
is used in the slice
part.
floor + ceil
→ 0–9% = No bar, 10–19% = 1 bar, etc.
ciel + floor
→ 0% = No bar, 1–10% - 1 bar, etc.Slider
if(prop("Completed") / prop("Goal") >= 1, "✓", slice("−−−−−−−−−−", 0, floor(prop("Completed") / prop("Goal") * 10)) + "♦︎" + slice("−−−−−−−−−−", 0, ceil(10 - prop("Completed") / prop("Goal") * 10)))
Inspired by Red Gregory's version
Basic Styles
Character Entity Chart → Good reference for the symbols that can be used for the bars.
Progress Bar Styles
Emoji Variations
This uses a slightly different formula that includes a
replaceAll
function to replace each x
with a chosen emoji. This is done because slice
does not play well with a lot of emojis.Emoji Progress Bar
Simple Bar
if(prop("Completed") / prop("Goal") >= 1, "✅", if(empty(prop("Completed")) and not empty(prop("Goal")), "0%", replaceAll(slice("xxxxxxxxxx", 0, floor(prop("Completed") / prop("Goal") * 10)), "x", "⭐️") + " " + format(floor(prop("Completed") / prop("Goal") * 100)) + "%"))
Full Bar
if(prop("Completed") / prop("Goal") >= 1, "✅", replaceAll(slice("xxxxxxxxxx", 0, floor(prop("Completed") / prop("Goal") * 10)), "x", "🌳") + replaceAll(slice("xxxxxxxxxx", 0, ceil(10 - prop("Completed") / prop("Goal") * 10)), "x", "🌱") + " " + format(floor(prop("Completed") / prop("Goal") * 100)) + "%")