skillfed

halo

Beautiful terminal spinners in Python

halo v0.0.31 1.2M downloads/30d#4,214 on PyPI3,026
Permissive license MIT DORMANT released

What it is and what it does

Halo is a Python library that renders animated spinners in the terminal to provide visual feedback during long-running operations. It wraps text with a rotating animation frame, letting you indicate that work is in progress without blocking output. The package supports multiple spinner styles, custom colors for both text and spinner, and terminal placement options (left or right of text). It integrates with IPython and Jupyter notebooks as well as standard terminal environments.

You can use halo as a context manager (with statement), a decorator, or by calling start/stop methods directly. It provides terminal-friendly completion symbols—checkmark for success, X for failure, warning triangle, or info icon—and lets you update the spinner text dynamically. The library depends on log-symbols, spinners, termcolor, colorama, six, and backports.shutil-get-terminal-size to handle cross-platform terminal rendering and color output.

Use it for:

  • Show a spinner while downloading files or making network requests to indicate the operation is ongoing
  • Display progress feedback during long-running data processing or database queries in CLI tools
  • Provide visual status during build or deployment scripts, ending with success or failure symbols
  • Add loading indicators to interactive CLI applications that perform background tasks
  • Decorate long-running functions to automatically show a spinner without manual start/stop calls

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Halo displays animated spinners in the terminal to indicate progress or loading state during long-running operations, with support for custom text, colors, and completion symbols.

Yes, if you need terminal spinners in a CLI tool or script. The package is stable, has low install friction, carries no known vulnerabilities, and is permissively licensed. The dormant maintenance status is not a blocker for a mature, single-purpose library—but verify compatibility with your target Python versions and terminal environment before relying on it for new projects.

Install

halo on PyPI

pip

pip install halo

uv

uv add halo

poetry

poetry add halo

Installing halo

Before you install

Low install friction with six runtime dependencies. Maintenance is dormant—last release was 2020-11-10 and no commits since 2024-06-16—but the package is stable and widely used (monthly downloads in the millions, top 5000 on PyPI).

License in practice

MIT license is permissive; you can use, modify, and distribute halo freely in commercial and private projects with minimal restrictions.

Quickstart

pip install halo

from halo import Halo

spinner = Halo(text='Loading', spinner='dots')
spinner.start()
# Run time consuming work here
spinner.stop()

Verify before relying

  • Whether the package works reliably with Python versions beyond 3.8 (classifiers list only up to 3.8, but requires_python is >=3.4)
  • Current compatibility with modern terminal emulators and Windows console changes since 2020

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.4)
Install friction low — pure-Python wheel
Runtime dependencies 6 — log-symbols, spinners, termcolor, colorama, six, backports.shutil-get-terminal-size
Maintenance dormant — 2,103 days since the last release
Last repo commit
First released
Downloads 1,210,453/month — #4,214 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: halo-0.0.31-py2-none-any.whl

Keywords: console, loading, indicator, progress, cli, spinner, spinners, terminal, term, busy, wait, idle

Programming Language :: PythonProgramming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8

Tags

terminal spinner animationloading indicator cliprogress spinner pythonterminal busy indicatorcli loading animationpython terminal spinnerasync task indicator
cli-uiterminal-output

More Terminals packages