tabulator
Consistent interface for stream reading and writing tabular data (csv/xls/json/etc)
Decision gist · record as of 2026-08-14
Yes, if you need to read or write multiple tabular formats and can accept an abandoned but stable library. The low install friction and broad format support make it useful for data processing scripts and one-off tasks. However, for new projects requiring active maintenance, security updates, or modern Python support, consider Frictionless Framework instead. No known vulnerabilities as of the query date.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction to install.
- The package is abandoned as of 2021 with no recent maintenance; the maintainers have moved to Frictionless Framework as the successor.
- Bug fixes for 1.x continue in the repository, but new features and active development have ceased.
License · maintenance · safety
MIT (permissive) — MIT license permits commercial and private use with minimal restrictions; you must include a copy of the license and copyright notice.
last release 2021-03-21 (1972 days) · last repo commit 2021-06-01 · 236 stars · archived
0 known vulnerabilities (OSV.dev, 2026-08-14) · 125,767 downloads/mo, #11,801 on PyPI
Alternatives
Verify before relying
pip install tabulator
from tabulator import Stream
with Stream('data.csv', headers=1) as stream:
for row in stream:
print(row)- Whether the package works reliably with modern Python versions beyond 3.7, given its 2021 end-of-life date.
- Current stability and compatibility of the 12 runtime dependencies (boto3, sqlalchemy, openpyxl, etc.) with recent releases.
- Whether remote loading (HTTP, FTP, S3) still functions without updates to underlying transport libraries.
What it is and what it does
Tabulator provides a unified interface for reading and writing tabular data across many common formats—CSV, XLS, ODS, JSON, Google Sheets, and SQL databases—without loading entire files into memory. It handles both local files and remote sources (HTTP, FTP, S3), automatically detects encoding, and supports compressed archives (ZIP, GZIP). The core abstraction is the Stream class, which lets you iterate over rows one at a time, making it suitable for processing large datasets on memory-constrained systems.
The package is in maintenance-only mode; its creators released Frictionless Framework as a more complete successor, but tabulator 1.x continues to receive bug fixes. It depends on 12 runtime libraries covering format-specific parsers (xlrd, openpyxl, ijson), cloud storage (boto3), database access (sqlalchemy), and HTTP transport (requests). The API is straightforward: open a stream, iterate or read rows, and close. It also ships with a CLI tool for quick command-line inspection of tabular files.
Use it for
- Load and iterate over large CSV or Excel files without loading the entire dataset into memory.
- Fetch tabular data from remote HTTP or S3 sources and process row-by-row in a data pipeline.
- Convert between multiple tabular formats (e.g., CSV to JSON, XLS to SQL) using a consistent interface.
- Automatically detect and handle character encoding when reading files from unknown sources.
- Process compressed tabular archives (ZIP, GZIP) transparently without manual decompression.
- Build a quick CLI tool to inspect or validate the structure of tabular data files.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need to read or write multiple tabular formats and can accept an abandoned but stable library.
The low install friction and broad format support make it useful for data processing scripts and one-off tasks. However, for new projects requiring active maintenance, security updates, or modern Python support, consider Frictionless Framework instead. No known vulnerabilities as of the query date.
Install
tabulator on PyPI
Before you install
Low friction to install. The package is abandoned as of 2021 with no recent maintenance; the maintainers have moved to Frictionless Framework as the successor. Bug fixes for 1.x continue in the repository, but new features and active development have ceased.
License in practice
MIT license permits commercial and private use with minimal restrictions; you must include a copy of the license and copyright notice.
Quickstart
pip install tabulator
from tabulator import Stream
with Stream('data.csv', headers=1) as stream:
for row in stream:
print(row)
Verify before relying
- Whether the package works reliably with modern Python versions beyond 3.7, given its 2021 end-of-life date.
- Current stability and compatibility of the 12 runtime dependencies (boto3, sqlalchemy, openpyxl, etc.) with recent releases.
- Whether remote loading (HTTP, FTP, S3) still functions without updates to underlying transport libraries.
Package facts
| License | MIT permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 12 packagessixclickrequestschardetboto3unicodecsvijsonjsonlinessqlalchemylinear-tsvxlrdopenpyxl |
| Maintenance | Abandoned 1,972 days since the last release |
| Last repo commit | repository archived |
| First released | |
| Downloads | 125,767 / month, #11,801 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaEnvironment :: Web EnvironmentIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 2Programming Language :: Python :: 2.7Programming Language :: Python :: 3Programming Language :: Python :: 3.3Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Topic :: Internet :: WWW/HTTP :: Dynamic ContentTopic :: Software Development :: Libraries :: Python Modules |
Evidence: tabulator-1.53.5-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “stream large datasets memory efficient”
- tabulatorReads and writes tabular data in multiple formats (CSV, XLS, JSON,…
- crickCrick provides approximate and streaming algorithms optimized for…
- et-xmlfileet_xmlfile writes large XML files with minimal memory overhead by…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also dataflows-tabulator · frictionless · datapackage · csvw · linear-tsv · tablib · tableschema · DrissionRecord · table-logger · PTable