Skip to main content

A typed terminal progress bar library for Python. It handles custom widgets, clean output around prints and logs, multiple concurrent bars, unknown-length progress, and pipe-friendly CLI usage.

python-progressbar test status coverage status

Install

pip install progressbar2

Quick start

import time
import progressbar

for item in progressbar.progressbar(range(100), desc='Loading'):
    time.sleep(0.02)

Try it in your browser

Every example in the documentation runs live in the page. Press Run on any code block, no install required.

Progress with clean logs

progressbar2 showing clean progress output with logs
"""A build log printing above a progress bar without corrupting it."""

from __future__ import annotations

import time

import progressbar

STEPS = 24


def main() -> None:
    with progressbar.ProgressBar(
        max_value=STEPS,
        prefix='Build ',
        redirect_stdout=True,
    ) as bar:
        for step in range(STEPS):
            if step in {8, 16}:
                print(f'log: completed step {step}')
            bar.update(step + 1)
            # Longer than the bar's 0.05s update gate, so every step
            # lands as a visible redraw.
            time.sleep(0.1)


if __name__ == '__main__':
    main()

Multiple bars

multiple progress bars updating together
"""Two named bars progressing at different rates in one terminal."""

from __future__ import annotations

import sys
import time

import progressbar

STEPS = 24


def main() -> None:
    with progressbar.MultiBar(fd=sys.stdout) as multibar:
        build = multibar['build']
        test = multibar['test']
        build.max_value = STEPS
        test.max_value = STEPS
        for step in range(STEPS):
            build.update(step + 1)
            test.update(min(STEPS, max(0, round((step - 3) * 1.2))))
            # Longer than the bars' 0.05s update gate, so every step
            # lands as a visible redraw.
            time.sleep(0.1)

        # Reaching max_value doesn't finish a bar -- only finish() does.
        # A MultiBar waits for every bar to report finished() before its
        # context manager can exit, so without these calls the block
        # above would hang forever on exit.
        build.finish()
        test.finish()


if __name__ == '__main__':
    main()

Unknown length and animated bars

unknown length progress with an animated marker
"""A bar for work whose total is not known up front."""

from __future__ import annotations

import time

import progressbar


def main() -> None:
    with progressbar.ProgressBar(
        max_value=progressbar.UnknownLength,
    ) as bar:
        for value in range(0, 120, 10):
            bar.update(value)
            # Longer than the bar's 0.05s update gate, so every step
            # lands as a visible redraw.
            time.sleep(0.1)


if __name__ == '__main__':
    main()

CLI usage

progressbar --progress --timer --eta --rate --bytes input.bin -o output.bin

Known terminal caveats

  • JetBrains IDEs need “Enable terminal in output console” for advanced terminal behavior such as MultiBar.

  • IDLE does not support terminal progress bars.

  • Jupyter buffers stdout; call sys.stdout.flush() when output appears late.

Project history

progressbar2 is based on the old Python progressbar package that was published on the now defunct Google Code. Since that project was completely abandoned by its developer and the developer did not respond to email, I decided to fork the package.

This package is still backwards compatible with the original progressbar package so you can use it as a drop-in replacement for existing projects.

Metadata

Release files for progressbar2 4.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for progressbar2 4.6.0
File Size Uploaded
progressbar2-4.6.0.tar.gz 542.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for progressbar2 4.6.0
File Interpreter ABI Platform
progressbar2-4.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 646.6 kB

Release files / progressbar2-4.6.0.tar.gz

Download URL progressbar2-4.6.0.tar.gz
Size 542.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fe48c8955a84428af77bff2642ba47041e1b8f7c867a5b7cc94f8bc255a8f0cf
BLAKE2b-256 checksum
How to use checksums
0c1e5bd376abe32a392e74fffd82feb42ee1472d263bd358d628af20663d0346
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

Release files / progressbar2-4.6.0-py3-none-any.whl

Download URL progressbar2-4.6.0-py3-none-any.whl
Size 104.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d78bdeb1debef92a39dd9042e0689542bd72d6e2f30b13432db371aa9d8ee4e
BLAKE2b-256 checksum
How to use checksums
704cba64c450164fa4feaa9c4bb1c6445811d89d6a1995bfc58d039273b698af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

4.6.0 This release

2 release files

4.5.0

2 release files

4.4.3

2 release files

4.4.2

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.2

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.55.0

2 release files

3.54.0

2 release files

3.53.3

2 release files

3.52.1

2 release files

3.51.4

2 release files

3.51.1

2 release files

3.51.0

2 release files

3.50.1

2 release files

3.47.0

2 release files

3.46.1

2 release files

3.46.0

2 release files

3.45.1

2 release files

3.43.1

2 release files

3.42.0

2 release files

3.41.0

2 release files

3.39.3

2 release files

3.39.2

2 release files

3.39.0

2 release files

3.38.0

2 release files

3.37.1

2 release files

3.35.2

2 release files

3.35.1

2 release files

3.35.0

2 release files

3.34.3

2 release files

3.33.2

2 release files

3.33.1

2 release files

3.33.0

2 release files

3.32.1

2 release files

3.32.0

2 release files

3.31.1

2 release files

3.30.0

2 release files

3.20.2

2 release files

3.20.1

2 release files

3.18.1

2 release files

3.16.1

2 release files

3.16.0

2 release files

3.15.1

2 release files

3.15.0

2 release files

3.12.0

2 release files

3.11.0

2 release files

3.10.1

2 release files

3.10.0

1 release file

3.9.4

2 release files

3.9.3

2 release files

3.9.2

2 release files

3.9.1

2 release files

3.9.0

2 release files

3.8.1

2 release files

3.8.0

2 release files

3.7.0

2 release files

3.6.2

2 release files

3.6.1

1 release file

3.6.0

1 release file

3.5.2

1 release file

3.5.1

1 release file

3.5.0

1 release file

3.4.3

1 release file

3.4.2

1 release file

3.4.1

1 release file

3.4.0

1 release file

3.3.3

1 release file

3.3.2

1 release file

3.3.1

1 release file

3.3.0

1 release file

3.2.0

1 release file

3.1.0

1 release file

3.0.1

1 release file

2.7.3

1 release file

2.7.0

1 release file

2.6.9

1 release file

2.6.8

1 release file

2.6.7

1 release file

2.6.6

1 release file

2.6.5

1 release file

2.6.4

1 release file

2.6.3

1 release file

2.6.2

1 release file

2.6.1

1 release file

2.6.0

1 release file

2.5.0

1 release file

2.4.1

1 release file

2.4.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page