tqdm

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

Library
PyPI
v4.70.1
31,362 stars
MPL-2.0 AND MIT

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
85 /100 Excellent
Development Activity 76
Maintenance 88
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
78 /100 Good
Architecture 85
Code Quality 82
Innovation 65
Learning Curve 80

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 37 apps in this directory

Python
55%
MIT

LibrePhotos

File Storage

8,111

Self-hosted photo library with AI-powered face recognition, semantic search, and automatic event albums — no cloud required.

View details
84
Repo Health
78
Technical
66
Dependency
Built with
Python 55%
TypeScript 43%
Updated 6 days ago
TypeScript
49%
Apache 2.0

LTX-Desktop

AI Design Tools · Video Editors

2,141

An open-source Electron app that runs LTX-2 text-to-video, image-to-video, and video editing models locally on your GPU, or via a cloud API when your hardware can't keep up.

View details
76
Repo Health
82
Technical
73
Dependency
Built with
TypeScript 49%
Python 46%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

23,309

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
90
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 6 days ago
Python
66%
Other

Morphik

AI Development · Databases · Search

3,717

Morphik is an AI-native ingestion and retrieval engine that lets developers store, search, and reason over visually rich documents — scanned PDFs, manuals, slides, and video — without duct-taping together OCR, an embedding model, and a vector database.

View details
64
Repo Health
71
Technical
67
Dependency
Built with
Python 66%
TypeScript 23%
Updated 1 weeks ago
Go
93%
MIT

NornicDB

AI Development · AI Memory · Databases

916

A single graph+vector+temporal database for AI workloads — Neo4j-compatible, sub-millisecond hybrid search, and built-in memory decay.

View details
80
Repo Health
82
Technical
71
Dependency
Built with
Go 93%
Updated 6 days ago
TypeScript
60%
MIT

oh-my-claudecode

AI Agents

40,215

Multi-agent orchestration for Claude Code with zero learning curve — install as a plugin or npm CLI and coordinate parallel Claude Code agents through pre-built workflows instead of managing them by hand.

View details
85
Repo Health
70
Technical
73
Dependency
Built with
TypeScript 60%
JavaScript 39%
Updated 6 days ago
Python
49%
Other

Arize Phoenix

Analytics · Devops · Monitoring

11,976

Open-source AI observability platform for tracing, evaluating, and debugging LLM applications with built-in intelligence and MCP support.

View details
92
Repo Health
88
Technical
67
Dependency
Built with
Python 49%
TypeScript 43%
Updated 6 days ago
Rust
63%
MIT

PostgresML

AI Development · Databases

6,823

Run ML training and LLM inference natively inside PostgreSQL with GPU acceleration — no data movement required.

View details
51
Repo Health
76
Technical
64
Dependency
Built with
Rust 63%
JavaScript 11%
Updated 1 years ago
TypeScript
98%
MIT

Promptfoo

AI Development

26,358

An open-source CLI and library for evaluating and red-teaming LLM applications — replace trial-and-error prompt engineering with systematic evals, vulnerability scanning, and CI/CD integration.

View details
90
Repo Health
73
Technical
67
Dependency
Built with
TypeScript 98%
Updated 6 days ago

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