skillfed

tabulator

Consistent interface for stream reading and writing tabular data (csv/xls/json/etc)

tabulator v1.53.5 125.8K downloads/30d#11,801 on PyPI236
Permissive license MIT Abandoned released

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

Reads and writes tabular data in multiple formats (CSV, XLS, JSON, ODS, Google Sheets, SQL) from local files, HTTP, FTP, and S3 sources with low memory overhead.

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

pip

pip install tabulator

uv

uv add tabulator

poetry

poetry add tabulator

Installing tabulator

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 — six, click, requests, chardet, boto3, unicodecsv, ijson, jsonlines, sqlalchemy, linear-tsv, xlrd, openpyxl
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)

Evidence: tabulator-1.53.5-py2.py3-none-any.whl

Keywords: frictionless, data

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

Tags

read csv xls json tabular datastream large datasets memory efficientparse multiple file formatsremote data loading http s3tabular data processing librarycsv excel json parsercompressed file handling zip gzip
data-processingfile-format-conversionstreaming

More Python Modules packages