# TA-Lib

The C indicator library everything else wraps — and pip now ships the C part with it.

*https://stockmarketstack.com/tools/ta-lib · Market Analysis & Portfolio Optimization Libraries*

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | TA-Lib |
| Category | Market Analysis & Portfolio Optimization Libraries |
| Job | indicators |
| Website | https://ta-lib.org |
| Pricing model | open-source |
| Free tier | true |
| Open source | true |
| Licence | BSD-3-Clause AND BSD-2-Clause |
| Self-hosted | true |
| Tested hands-on | false |
| Last updated | 2026-09-19 |

### Coverage

| Field | Value |
| --- | --- |
| Asset classes | stocks, etf, futures, forex, crypto, indices, commodities |
| Markets | global |
| Works outside the US | true |
| Data latency | none |
| Platforms | library |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | false |
| Webhooks | false |
| Scripting | C |
| Python | true |
| Spreadsheet add-in | false |
| MCP server | false |
| Export | none |

### Capabilities

Yes: none

No: charting, screening, scanning, backtesting, automation, live_trading, paper_trading, portfolio_tracking, broker_import, tax_reporting, alerts, news, options_analysis

*Verified: pricing 2026-09-19; capabilities 2026-09-19; coverage 2026-09-19.*

## What it is

TA-Lib is two projects sharing a name, and knowing which is which is the difference between a
five-second install and a lost afternoon.

The first is the **C library** — `TA-Lib/ta-lib` on GitHub, written by Mario Fortier in 1999 and
still maintained by him. It holds the algorithms, and native implementations also exist for Rust,
Java and C#. The second is **`ta-lib-python`**, John Benediktsson's Cython wrapper, published on
PyPI as `TA-Lib` and imported as `talib`. Nearly every other indicator library in Python either
wraps this one or defines itself against it.

As of 0.8.0 the wrapper exposes 201 functions, 61 of them candlestick patterns — counted both in
the generated `_func.pxi` inside the 0.8.0 source distribution and on the project's own function
index on 19 September 2026. That is up from 161 in 0.6.8, because the C library's 0.8.1 release added forty
new ones in September 2026: SUPERTREND, VWAP, Hull and zero-lag moving averages, Donchian and
Keltner channels, Heikin-Ashi, TSI, Vortex, Chaikin Money Flow and the rest of the list that users
had been filing issues about for a decade. The "158 indicators" every tutorial quotes is now out of
date.

Three Python APIs sit on top: a function API taking NumPy arrays or pandas and polars Series, an
abstract API taking a dict or DataFrame of OHLCV and returning named columns, and a streaming API
that computes only the latest value.

## Pricing

Free, and there is nothing to buy — no pro build, no hosted tier, no commercial licence. The
licensing is the part worth reading twice, because "TA-Lib is BSD" is only half true: the C library
is **BSD 3-Clause** and the Python wrapper is **BSD 2-Clause**. Both are OSI-approved and neither
is copyleft, but a wheel contains both, so shipping one to a customer means carrying two notices
and honouring the extra no-endorsement clause.

## Data & coverage

Ships no data of any kind. Functions take float arrays and never see a ticker, an exchange or a
timestamp, so any instrument and any bar size works — including ones where the indicator makes no
sense.

## Integrations

Wheels have been published since 0.6.5, and 0.8.0 ships 54 of them for CPython 3.9–3.14 across
manylinux and musl on x86_64 and aarch64, macOS on Intel and Apple Silicon, and Windows in 32-bit,
64-bit and arm64. They are self-contained: a bundled `libta-lib` shared object on Linux, a
`.dylibs/libta-lib.1.1.0.dylib` on macOS, and the C code linked statically into the `.pyd` on
Windows.

Outside Python, 0.7.1 and 0.8.1 added Conan and vcpkg packaging and a `setup-ta-lib` GitHub Action,
and community bindings now exist for Go, PHP, PostgreSQL, R, Ruby and Zig. conda-forge carries both
`ta-lib` and `libta-lib`.

## Limitations

- The wrapper's README still opens by telling you to install the C library yourself, with
  Homebrew and `TA_LIBRARY_PATH` instructions below it. That text predates the wheels and is the
  single largest source of installation confusion around this library.
- NaN handling is not pandas' handling. One missing value mid-series propagates to the end of the
  output rather than clearing after the lookback window.
- Upgrading to 0.8.1 changes numbers, and two of those changes are not rounding: BBANDS' default
  period moved from 5 to 20, and PPO and APO now default to an EMA where they used to default to
  an SMA. Same call, different output, no error. The rest is floating-point re-ordering from the
  fused multiply-add rewrites, and the release notes quantify it: RSI moves by at most 5.7e-14 on
  the 0–100 scale at the default period and 5.3e-13 at period 20,000, STOCHRSI by up to 1.1e-11,
  ATR and NATR by 1.3e-15, EMA by 2.8e-16.
- Function level only. No bar loop, no positions, no portfolio — that is a
  [backtesting framework's](https://stockmarketstack.com/categories/backtesting-frameworks) job.
- NumPy 1 users are stuck on `ta-lib<0.5`.

## Alternatives

[pandas-ta](https://stockmarketstack.com/tools/pandas-ta) and its successor fork are the pure-Python answer for anyone who
wants a DataFrame accessor and no binary dependency at all; the trade is speed and the reference
implementation. [VectorBT](https://stockmarketstack.com/tools/vectorbt) bundles its own Numba-compiled indicators and will
also call TA-Lib if it is installed.

## FAQ

### Do I still need a C compiler to install TA-Lib in Python?

Almost certainly not. Since 0.6.5 the project publishes binary wheels that carry the C library inside them, and 0.8.0 ships 54 of them covering CPython 3.9 through 3.14 on Linux x86_64 and aarch64, macOS Intel and Apple Silicon, and Windows 32-bit, 64-bit and arm64. A compiler is needed only off that matrix.

### Which package do I install, and what do I import?

The PyPI project is TA-Lib and the import is talib. Neither talib nor ta-lib-python is registered on PyPI by anyone else, so the obvious guesses simply fail rather than installing a stranger's code. Skip ta-lib-bin and TA-Lib-Precompiled — the same author published them as pre-wheel workarounds and both stopped at 0.4.x in 2022.

### Is TA-Lib still maintained?

Both halves are, and the C library is busier now than it has been in years. Version 0.8.1 landed on 12 September 2026 with forty new functions, and the last commit to main was 17 September 2026. The Python wrapper released 0.8.0 on 13 September 2026. Neither repository is archived.

### What licence is TA-Lib under?

Two licences, both permissive and neither copyleft. The C library is BSD 3-Clause, copyright Mario Fortier; the Python wrapper is BSD 2-Clause. A pip wheel contains both, so redistributing one means honouring the three-clause no-endorsement condition as well as the two-clause one.

## Also worth comparing

- [pandas-ta](https://stockmarketstack.com/tools/pandas-ta.md) — The DataFrame indicator library whose repo is gone and whose last release is a year old.
- [arch](https://stockmarketstack.com/tools/arch.md) — GARCH and the rest of the volatility-model family, plus the tests you need around them.
- [empyrical-reloaded](https://stockmarketstack.com/tools/empyrical-reloaded.md) — The maintained fork of Quantopian's empyrical — risk statistics, no plots.
- [exchange_calendars](https://stockmarketstack.com/tools/exchange-calendars.md) — Sessions, minutes and holidays for 69 exchanges, keyed by ISO-10383 code.
- [ffn](https://stockmarketstack.com/tools/ffn.md) — Performance stats, drawdowns and portfolio weights from a DataFrame of prices.
- [PyPortfolioOpt](https://stockmarketstack.com/tools/pyportfolioopt.md) — Prices in, weights out — efficient frontier, Black-Litterman and HRP.
