tqdm

A fast, extensible progress bar for Python loops and CLI pipelines, with negligible overhead.

Library
PyPI
v4.70.0
31,304stars
MPL-2.0 AND MIT

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
88/100Excellent
Development Activity92
Maintenance96
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
78/100Good
Architecture85
Code Quality82
Innovation65
Learning Curve80

tqdm wraps any iterable, Python range, or shell pipe with a smart, low-overhead progress meter that shows percentage complete, elapsed/remaining time, and iteration rate in real time. It has no required dependencies outside Windows, works in terminals, GUIs, and Jupyter/IPython notebooks alike, and integrates with pandas, Dask, Keras, asyncio, and multiprocessing through dedicated submodules.

Beyond the core tqdm(iterable) wrapper, it ships a tqdm/python -m tqdm CLI entry point for piping shell output through a live progress display, notebook-aware widgets, and Discord/Slack/Telegram bar integrations for tracking long-running remote jobs from chat.

What You Get

  • Drop-in progress bars for iterables via tqdm() and trange(), no boilerplate required
  • A CLI (tqdm / python -m tqdm) that wraps stdin/stdout pipes with a live meter
  • Notebook-native widgets (tqdm.notebook) for Jupyter, IPython, and Colab
  • Framework integrations for pandas (tqdm_pandas), Dask, Keras, asyncio, and concurrent.futures
  • Messaging integrations (tqdm.contrib.discord/slack/telegram) for tracking remote or background jobs from chat

Common Use Cases

  • Wrapping a for loop over a large dataset to show live ETA and throughput during data processing
  • Piping a long-running shell command’s output through tqdm --bytes to watch backup or archive progress
  • Tracking pandas .apply() calls across large DataFrames with df.progress_apply()
  • Monitoring nested or parallel loops in multiprocessing/asyncio pipelines with per-worker bars
  • Getting a Slack or Discord progress bar for long remote training or ETL jobs

Under The Hood

Architecture tqdm’s public surface (tqdm/__init__.py) re-exports a single core class from tqdm/std.py (over 1,500 lines) that implements the base iterator/decorator, format-string rendering, smoothing math, and a TqdmDefaultWriteLock for thread/process-safe multi-bar writes; tqdm/utils.py holds cross-cutting helpers (ASCII/unicode detection, screen-shape probing, unicode-width-aware string truncation, an envwrap decorator for env-var-driven constructor defaults) that std.py composes rather than inherits from. Every other public backend — notebook.py, gui.py, tk.py, rich.py, asyncio.py, dask.py, keras.py — subclasses the core class and overrides just the render/display method, so adding a new backend means overriding one method rather than reimplementing iteration logic; contrib/ (Discord, Slack, Telegram, itertools, concurrent helpers) instead composes the core class by wrapping calls, keeping messaging-service and stdlib-iterator integrations decoupled from the core hierarchy. A background monitor thread watches for stalled bars and forces redraws, the one piece of the design that isn’t purely synchronous. In this layered, thin-subclass-per-backend architecture, the piece that would break the most downstream code if changed is the core class’s constructor parameter surface, since every backend and contrib integration depends on those exact keyword arguments.

Tech Stack Pure Python targeting a broad version range, with zero required runtime dependencies except a Windows-only terminal-color library gated by platform marker; optional extras pull in an HTTP client, a chat-SDK client, or notebook widgets only when those contrib modules are actually used. Packaging uses setuptools with git-tag-derived versioning (no hardcoded version string in source), and ships a console-script CLI entry point alongside a traditional man page. The project distributes through PyPI, Conda-Forge, a Docker image, and Snapcraft in addition to source installs, and its test matrix spans many Python versions plus optional TensorFlow/Keras backends with coverage reporting wired into CI.

Code Quality Testing is extensive and CI-enforced: the test suite spans nearly twenty modules covering the core class plus every backend (asyncio, concurrent, Dask, Keras, notebook, pandas, Rich, Tk, GUI), run under pytest with coverage, a per-test timeout, and warnings promoted to errors — a notably strict setting. A dedicated performance test guards against overhead regressions, so the library’s low-overhead claim is unit-tested rather than merely asserted, and a separate CI job runs a packaging sanity check plus a hard wheel-size budget given the project’s very high download volume. Error handling favors typed, library-specific exception and warning subclasses over bare exceptions or silent failures. Style is enforced through linter, formatter, and import-sort configuration plus pre-commit hooks, though the codebase has no static type hints or type-checker configuration, and the more delicate thread/process-safety code is documented with explicit platform caveats rather than type-checked.

What Makes It Unique tqdm’s differentiator is less a novel algorithm and more making an extremely common annoyance — instrumenting a plain loop — close to free: the documented per-iteration overhead is unit-tested and benchmarked against a comparable library, achieved by skipping redundant terminal redraws via an adaptive minimum-interval heuristic instead of redrawing on every iteration. Its environment-variable override mechanism, letting essentially every constructor argument be set externally, is a genuinely uncommon pattern for solving “silence progress bars in CI/cloud logs without touching call sites” across an entire codebase at once. The breadth of first-class backend subclasses (notebook, GUI, Tk, Rich, asyncio, Dask, Keras) plus messaging-service integrations for tracking remote jobs is broader than comparable progress-bar libraries, though each individual backend is a straightforward render-method override rather than a technical breakthrough.

Used by 33 apps in this directory

Python
98%
MIT

Agent Lightning

AI Development

17,917

A Microsoft-built training framework that optimizes AI agents with reinforcement learning, automatic prompt optimization, or supervised fine-tuning — with near-zero code changes to your existing agent, in any framework.

View details
83
Repo Health
68
Technical
69
Dependency
Built with
Python98%
Updated 2 days ago
TypeScript
60%
Other

agenta

Developer Tools · Devops · AI Development

4,640

The open-source LLMOps platform unifying prompt engineering, evaluation, and observability for teams building reliable LLM applications.

View details
91
Repo Health
77
Technical
67
Dependency
Built with
TypeScript60%
Python37%
Updated today
Python
100%
Apache 2.0

Agno

Devops · AI Development · Automation

41,969

Build, run, and manage agent platforms with a full production stack — SDK, runtime, and control plane included.

View details
93
Repo Health
87
Technical
66
Dependency
Built with
Python100%
Updated today
Python
90%
Apache 2.0

Apache Airflow

Data Engineering

46,645

Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.

View details
96
Repo Health
89
Technical
65
Dependency
Built with
Python90%
Updated today
Python
59%
Apache 2.0

argilla

AI Development · Data Engineering

5,088

Collaborate on high-quality AI training data with a self-hosted annotation platform built for LLMs, NLP, and multimodal models.

View details
65
Repo Health
81
Technical
61
Dependency
Built with
Python59%
Jupyter Notebook21%
Updated 6 days ago
Python
68%
Other

Baserow

No Code Platforms · Databases

5,747

Open-source no-code platform to build databases, apps, automations, and AI agents — self-hosted or cloud, with full data ownership.

View details
88
Repo Health
84
Technical
69
Dependency
Built with
Python68%
JavaScript16%
Vue12%
Updated 2 days ago
Python
100%
Apache 2.0

ClearML

Devops · Automation

6,846

Auto-magical MLOps platform that tracks experiments, versions data, orchestrates pipelines, and serves models with just two lines of code.

View details
94
Repo Health
79
Technical
69
Dependency
Built with
Python100%
Updated 1 weeks ago
C++
69%
Apache 2.0

ClickHouse

Databases · Analytics · Data Engineering

49,535

Open-source column-oriented database that delivers real-time analytical queries on petabyte-scale data with millisecond latency.

View details
95
Repo Health
90
Technical
68
Dependency
Built with
C++69%
Python13%
Updated today
Python
100%
GPL 3.0

ComfyUI

AI Design Tools · AI Development

130,686

The most powerful node-based AI workflow engine for creating images, video, 3D models, and audio with full control over every generation step.

View details
92
Repo Health
81
Technical
75
Dependency
Built with
Python100%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search