rsalmei

rsalmei/alive-progress

Python MIT Dev Tools

A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!

6.3k stars
234 forks
slow
GitHub +2 / week

6.3k

Stars

234

Forks

17

Open issues

9

Contributors

AI Analysis

alive-progress is a Python library for creating animated, real-time progress bars with throughput tracking, ETA calculation, and multi-threaded updates optimized for low CPU usage. It serves developers who need visual feedback for long-running processes in CLI and REPL environments, particularly those working with batch processing, data pipelines, or remote (SSH) sessions where responsiveness matters.

Dev Tools Developer Tool Discovery value: 5/10
Documentation 8/10
Activity 7/10
Community 8/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

progress-tracking terminal-ui multithreaded cli-tools python-library
Actively maintained Well documented MIT licensed Popular Beginner friendly Production ready
Deep Analysis · Based on README and public signals
3w ago

Python progress bar with real-time throughput, ETA, and pause/resume — a feature-rich alternative to tqdm

alive-progress is a Python terminal progress bar library focused on developer experience during long-running batch or data processing tasks. It adds real-time throughput display, exponential-smoothing ETA, a live animated spinner that reacts to processing speed, print/logging hooks that don't corrupt the bar, overflow/underflow detection, and — uniquely — a pause/resume mechanism that lets users drop back to the Python REPL mid-processing. It targets Python developers running CLI scripts, data pipelines, or ETL jobs who want richer feedback than tqdm's defaults without writing custom display logic.

Origin

Created in August 2019 by a single maintainer (rsalmei). Has evolved through multiple major versions reaching the 3.3 series, progressively adding multithreading, animation customization tools, Jupyter support, and Python version lifecycle management.

Growth

Reached ~6,300 stars over ~7 years, suggesting steady organic discovery via PyPI, blog posts, and Reddit/HN mentions rather than a single viral event. Recent star velocity (3 stars/week) indicates the project has plateaued at a stable niche audience. PyPI download badges are present but exact current figures are not extractable from available metadata.

In production

PyPI download badge is displayed in the README, implying measurable install volume, but exact current monthly figures are not available in provided metadata. The 6,286 stars and 232 forks suggest real-world use beyond casual evaluation. Adoption appears concentrated among Python developers running offline or server-side batch jobs. Broad production-scale adoption at organizational level is not verified.

Code analysis
Architecture

Likely a pure-Python package with a context-manager API wrapping an iterator or manual counter. Appears to use a multithreaded rendering loop that decouples bar update frequency from iteration speed. Animation system appears to use a 'Spinner Compiler' abstraction suggesting a declarative factory pattern for defining frame sequences. Likely minimal external runtime dependencies given its install simplicity.

Tests

Not documented in README

Maintenance

Last push was 2026-05-24, approximately 4 weeks before the evaluation date — indicating active maintenance. The project has been pushed to consistently over its 7-year life. Single-maintainer projects carry succession risk, but current activity is healthy. README documents Python EOL handling, suggesting deliberate version lifecycle management.

Honest verdict

ADOPT IF: you are writing Python CLI scripts or batch jobs and want richer terminal feedback — especially real-time throughput display, the pause/resume REPL feature, or visually distinctive spinners — without adding heavyweight dependencies. AVOID IF: your code already integrates tqdm and relies on its ecosystem hooks (pandas, HuggingFace, dask), or you need multi-bar concurrent display in a rich dashboard layout. MONITOR IF: you are evaluating it for team-wide adoption in a Python-heavy organization — watch whether the single-maintainer bus factor becomes a concern over the next 12–18 months.

Independent dimensions

Mainstream potential

3/10

Technical importance

6/10

Adoption evidence

4/10

Risks
  • Single-maintainer project: no evidence of co-maintainers or organizational backing, creating succession risk if the author reduces involvement.
  • Niche ceiling: the pause/resume and animation-focused differentiators may not be compelling enough to displace tqdm in codebases where tqdm is already embedded via library integrations.
  • Terminal compatibility: rich animation behavior may degrade in non-interactive environments (CI pipelines, Jupyter without explicit forcing), requiring configuration workarounds as noted in the README.
  • Slow recent growth: 3 stars/week suggests discovery has plateaued; the project may struggle to grow its contributor base, slowing feature development and bug triaging.
  • No documented test coverage: absence of CI badge or test documentation in the README makes it harder to assess regression safety for production use.
Prediction

Likely to remain a well-maintained niche alternative to tqdm for the next 2–3 years, retaining its existing audience without substantially expanding market share in the face of tqdm and rich dominance.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Python
99.6%
Just
0.4%

Information

Language
Python
License
MIT
Last updated
2mo ago
Created
84mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Recent releases

No releases published yet.

Similar repos

tqdm

tqdm/tqdm

tqdm is a fast, extensible progress bar library for Python that wraps iterables...

31.2k Python Dev Tools
jfelchner

jfelchner/ruby-progressbar

Ruby/ProgressBar is a terminal progress bar library for Ruby that has been...

1.6k Ruby Dev Tools
ctongfei

ctongfei/progressbar

A lightweight, terminal-based progress bar library for JVM applications with...

1.2k Java Dev Tools
schollz

schollz/progressbar

A thread-safe progress bar library for Go applications that works...

4.7k Go Dev Tools
cheggaaa

cheggaaa/pb

A lightweight Go library for rendering animated progress bars in terminal...

3.7k Go Dev Tools
vs. alternatives
tqdm

tqdm has ~5x more GitHub stars and is the de facto standard in scientific Python (NumPy, HuggingFace, etc.). alive-progress offers richer animations, pause/resume, and throughput-reactive spinners that tqdm lacks, but tqdm's ecosystem integrations (pandas, keras, dask) are far more extensive. alive-progress is a stylistic and feature upgrade for standalone scripts; tqdm wins on ecosystem fit.

rich (Progress)

rich.progress is part of the broader rich library and offers a polished multi-bar, multi-column display popular in modern CLI tools. rich has significantly higher adoption. alive-progress focuses more narrowly on single-bar use with its unique pause mechanic and animation customization; rich wins for multi-task dashboards.

progressbar2

progressbar2 is a lower-profile alternative with similar feature overlap (ETA, throughput). alive-progress appears more actively maintained and has stronger visual differentiation through its animation system. Both serve a similar niche but alive-progress has notably more stars.

enlighten

enlighten supports multiple simultaneous progress bars in a curses-style layout. alive-progress does not appear to specialize in multi-bar concurrent scenarios. The two libraries target slightly different use cases and are not direct substitutes.

cheggaaa/pb

Go-language progress bar — not a direct substitute for Python workflows. Included as a similar repo by the data source, likely due to functional similarity. Not meaningfully comparable for Python users.