I love tqdm and rich, but for quick scripts I always felt like I was importing a whole framework just to show a loading bar. So I built flashbar.
Quick start
from flashbar import track
for item in track(range(100), label="Downloading"):
do_work(item)
One import. One line. Done.
Demo
Features
- 8 built-in themes (default, retro, dots, arrow, slim, minimal, green, red)
- Spinners for unknown-duration tasks
- ETA and speed display
- Custom hex colors (#FF5733) and characters
- Context manager support
- Zero dependencies
- Python 3.8 — 3.14
Themes
from flashbar import Bar
for name in ["default", "retro", "slim", "dots", "arrow"]:
bar = Bar(30, theme=name, label=f"{name:8s}")
for _ in range(30):
bar.update()
Spinners
from flashbar import Spinner
with Spinner("Loading data...", style="dots"):
do_something()
Why not tqdm/rich?
Nothing wrong with them — they're great. But if your use case is "show me a bar while this loop runs," flashbar does it in ~300 lines with zero dependencies. No Jupyter, no nested bars, no async — just a pretty bar in your terminal.
Links
- GitHub: github.com/k38f/flashbar
- Install:
pip install flashbar - License: MIT
Feedback welcome!

Top comments (0)