npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

jupyterlab_tabular_data_viewer_extension

v1.7.13

Published

Jupyterlab extension to browse tabular data files (Parquet, Excel, CSV, TSV, SQLite) with filtering and sorting capabilities

Readme

jupyterlab_tabular_data_viewer_extension

GitHub Actions npm version PyPI version Total PyPI downloads JupyterLab 4 Brought To You By KOLOMOLO Donate PayPal

[!TIP] This extension is part of the stellars_jupyterlab_extensions metapackage. Install all Stellars extensions at once: pip install stellars_jupyterlab_extensions

View and browse Parquet, Excel, CSV, TSV, and SQLite files directly in JupyterLab. Double-click any .parquet, .xlsx, .csv, .tsv, or .db file to open it in a simple, spreadsheet-like table view - no code required (yes, really). Navigate through your data, inspect values, and explore the structure of your tabular data files with interactive column resizing and advanced filtering capabilities.

Full disclosure: This is a shameless ripoff of your typical tabular data browsing tools. Zero ingenuity, zero creativity - just unabashed borrowing of ideas that worked elsewhere. If it looks familiar, that's the point.

Parquet Viewer

Opening files: Right-click any supported file and select "Tabular Data Viewer" from the "Open With" menu, or simply double-click to open with the default viewer.

Open With Menu

Column statistics: Hover over any column header to reveal an info icon, click it to view comprehensive statistics.

Column Statistics Icon

Column Statistics Modal

Context menu: Right-click any row to copy data as JSON.

Copy Row as JSON

Export: Click the Export link in the status bar (or right-click on the viewer) to export the whole table in your choice of format - original, Excel (.xlsx), CSV, Parquet (.parquet), or JSONL (.jsonl). Pagination never limits an export: what you get is every row, not the page on screen. When filters are active, the export popup notes that only filtered rows will be exported.

Download Filtered Data

Features

Supported File Formats:

  • Parquet files (.parquet) - Full support with efficient columnar data reading
  • Excel files (.xlsx) - Multi-sheet support: a sheet bar appears at the bottom for workbooks with more than one sheet, and switching sheets resets all filters/sort/selection (each sheet behaves like a separate file). Mixed-type columns (e.g. integers and strings in the same column) are read as text rather than failing to open. Excel files must still be simple tabular data without merged cells, complex formulas, or advanced formatting
  • CSV files (.csv) - Comma-separated values with UTF-8 encoding (fallback to latin1)
  • TSV files (.tsv) - Tab-separated values with UTF-8 encoding (fallback to latin1)
  • SQLite databases (.db, .sqlite, .sqlite3, .db3) - User tables appear as tabs in the same bar Excel uses for sheets, and system tables (sqlite_sequence and friends) stay hidden. BLOB columns show a size placeholder such as <BLOB 42.1 KB> instead of dumping binary into the grid. Databases are identified by their magic header rather than trusting the extension, so a .db file that is not SQLite is reported rather than misread. Connections are read-only: the viewer never writes to your database

Core viewing and navigation:

  • Simple table display showing your data in familiar spreadsheet format
  • Column headers with field names and simplified datatype indicators
  • Interactive column resizing - drag column borders to adjust width independently
  • Frozen index column - row numbers stay fixed when scrolling horizontally through wide datasets
  • Row selection - click anywhere on a row to highlight it with subtle color shading. Click again to deselect, or click another row to switch selection
  • Progressive loading - starts with 500 rows, automatically loads more as you scroll (your patience rewarded)
  • Datasource type indicator in the status bar - SQLite, Parquet, Excel, CSV or TSV prefixes the file statistics, so the format actually being read is never a guess
  • File statistics (column count, row count, file size) at a glance
  • Fixed status bar remains visible during horizontal scrolling (because it got tired of moving)
  • Handles large files efficiently with server-side processing

Advanced filtering and sorting:

  • Column sorting with three-state toggle (ascending, descending, off)
  • Per-column filtering with substring or regex pattern matching
  • Multi-select value filter - Click filter button next to any column to select from unique values with counts. Supports filtering on empty strings and null values
  • Case-insensitive search option
  • Numerical filters supporting comparison operators (>, <, >=, <=, =)
  • Clear filters functionality to reset all active filters
  • Multiple filters work together to narrow down results

Additional features:

  • Column statistics modal - View comprehensive statistics including data type, row counts, null values, unique counts, and type-specific metrics (numeric: min/max/mean/median/std dev/outliers; string: most common value/length stats; date: earliest/latest dates). Includes scrollable list of unique values sorted by frequency with counts and percentages. Copy statistics as JSON with one click
  • Export - Export link in the status bar (or right-click on the viewer) opens a format picker: original, Excel (.xlsx), CSV, Parquet (.parquet), or JSONL (.jsonl). Original is omitted for SQLite sources - a database cannot be written back out. Exports preserve active filters and sort order. Filename includes the slugified sheet name for multi-sheet Excel, the table name for SQLite, and a _filtered suffix when filters are applied
  • Right-click context menu on rows to copy data as JSON
  • Refresh view - Right-click on viewer and select "Refresh View" to reload data from file while preserving scroll position, filters, and sorting
  • Cell text truncation - Configurable maximum character limit for cell display (default: 100 characters). Text longer than limit shows "..." ellipsis. Set to 0 for unlimited display
  • Complex data types display - List/tuple and dict values display as JSON strings for easy inspection of nested/structured data
  • Absolute row indices - Row numbers always show original file position, even with active filters or sorting
  • Configurable file type support via Settings - Enable/disable Parquet, Excel, CSV/TSV, or SQLite handling
  • All features work seamlessly across all supported file formats

Installation

Requires JupyterLab 4.0.0 or higher and Python 3.10 or higher.

pip install jupyterlab_tabular_data_viewer_extension

Uninstall:

pip uninstall jupyterlab_tabular_data_viewer_extension

Configuration

Configure extension behavior through JupyterLab Settings:

  1. Open Settings → Settings Editor
  2. Search for "Tabular Data Viewer Extension"
  3. Configure options:
    • Enable Parquet files - Default: enabled
    • Enable Excel files - Default: enabled
    • Enable CSV files - Default: enabled
    • Enable TSV files - Default: enabled
    • Enable SQLite files - Default: enabled
    • Maximum Cell Characters - Default: 100. Maximum characters to display in a cell before truncating with "...". Set to 0 for unlimited display
    • Maximum Unique Values - Default: 100. Maximum number of unique values to display in filter dialog and column statistics. Set to 0 for no limit
    • Rows Per Page - Default: 500. How many rows are fetched and rendered at a time. Filtering, sorting and column statistics always run over the whole table regardless of this value - it bounds only how much is displayed at once

When a file type is disabled, files open with JupyterLab's default handler instead.