This release is a pre-release and may not be stable for production use.
CSVtoTable
CSVtoTable converts CSV files into interactive HTML tables.
- Single native binary with embedded frontend assets
- Standalone HTML output that works offline
- Mobile-responsive table layout
- Search, sorting, pagination, and virtual scrolling
- Copy, CSV, JSON, and print exports
- User-controlled light and dark themes
Install
uvx, pipx, or pip
Run without installing:
uvx csvtotable data.csv data.html
Or install it:
pipx install csvtotable
# or, inside a virtual environment:
pip install csvtotable
uv tool install csvtotable works too. Python is only needed to install the
prebuilt executable.
npx or npm
npx @vividvilla/csvtotable data.csv data.html
# or install globally:
npm install --global @vividvilla/csvtotable
To run a particular published version:
uvx csvtotable@X.Y.Z data.csv data.html
npx @vividvilla/csvtotable@X.Y.Z data.csv data.html
Standalone binary
Download an archive from GitHub Releases,
verify it with SHA256SUMS, and place csvtotable (csvtotable.exe on Windows)
on your PATH.
Prebuilt binaries support Linux x86-64/ARM64, macOS 12+ x86-64/Apple Silicon, and Windows 10+ x86-64.
Usage
# Write a standalone page
csvtotable data.csv data.html
# Open a temporary page in the default browser
csvtotable data.csv --serve
# Add a title and generate headers for headerless data
csvtotable data.csv data.html --title "Sales" --no-header
# Read stdin and write stdout
curl -L https://example.com/data.csv | csvtotable - - > data.html
BOM-marked UTF-8 and UTF-16 input is detected automatically. Use --encoding
for other encodings, and --delimiter or --quotechar for custom CSV formats.
Run csvtotable --help for all table, pagination, scrolling, and export options.
For compatibility with version 2, --pagination and --export disable those
features.
Development
Building requires Go 1.24+ and Bun. Distribution packaging also requires Python
and npm. table/dist is generated before the Go build and embedded in the final
binary.
nix develop # optional development environment
make build # frontend and build/csvtotable
make test # frontend, formatting, vet, and tests
make dist # binary and host-platform packages under dist/
./build/csvtotable sample/goog.csv /tmp/goog.html
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file csvtotable-3.0.0b1-py3-none-win_amd64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-win_amd64.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7427f8c2ba1241f994e34ff0341a324617add1d069c48bc254fd9be4b10822e1
|
|
| MD5 |
2ebdc786e10e9d681481cca3ebf36394
|
|
| BLAKE2b-256 |
8d00806c1c7190379106c147f3d3d83bc2d8e094b97a51c1ea5ece95dfb1d82b
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-win_amd64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-win_amd64.whl -
Subject digest:
7427f8c2ba1241f994e34ff0341a324617add1d069c48bc254fd9be4b10822e1 - Sigstore transparency entry: 2531793295
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type:
File details
Details for the file csvtotable-3.0.0b1-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37c9e1bc90843f4711783caee895b12058e583904d830b833a1a411ecea28dc4
|
|
| MD5 |
19813a48df4267c31c26b4a0d1d0a5fa
|
|
| BLAKE2b-256 |
13fb6157ce4fe08a5bbb0fa463fb87fdb547bed697c3b4674347f06e778aca83
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-musllinux_1_2_x86_64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-musllinux_1_2_x86_64.whl -
Subject digest:
37c9e1bc90843f4711783caee895b12058e583904d830b833a1a411ecea28dc4 - Sigstore transparency entry: 2531793356
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type:
File details
Details for the file csvtotable-3.0.0b1-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d871657cd54f24877e95edb95a65ff8c8446bb06244717d782ebdc0fb69b9538
|
|
| MD5 |
28b94ea4aecf68949daa0cf46d6673c2
|
|
| BLAKE2b-256 |
d6aedbc30724793908f0df2f9f6e6173d3c239c983fc9fb0560c894ec60a88e0
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-musllinux_1_2_aarch64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-musllinux_1_2_aarch64.whl -
Subject digest:
d871657cd54f24877e95edb95a65ff8c8446bb06244717d782ebdc0fb69b9538 - Sigstore transparency entry: 2531793110
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type:
File details
Details for the file csvtotable-3.0.0b1-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f8cfb125915a06791a2a55a76fd9555715e1be5b34037f60f0bb5f7f0cc40cc
|
|
| MD5 |
00061560d59383717796fd74725af729
|
|
| BLAKE2b-256 |
e1ba4f4d92477bcffa64cf4cb17dd0b625b64224fab40d1b0def509e517ed567
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-manylinux_2_17_x86_64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-manylinux_2_17_x86_64.whl -
Subject digest:
6f8cfb125915a06791a2a55a76fd9555715e1be5b34037f60f0bb5f7f0cc40cc - Sigstore transparency entry: 2531792988
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type:
File details
Details for the file csvtotable-3.0.0b1-py3-none-manylinux_2_17_aarch64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cdb15b43fe076489223a8188a20cfd7c7bb4e4a02827961ba46188f8139a1bd
|
|
| MD5 |
3716eff062d7000457b08716e4e34e7d
|
|
| BLAKE2b-256 |
13ea0e18b050476d7c23f9c942076f916e537ce84aceeeb5b2dbbf6db07eb72d
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-manylinux_2_17_aarch64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-manylinux_2_17_aarch64.whl -
Subject digest:
8cdb15b43fe076489223a8188a20cfd7c7bb4e4a02827961ba46188f8139a1bd - Sigstore transparency entry: 2531793195
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type:
File details
Details for the file csvtotable-3.0.0b1-py3-none-macosx_12_0_x86_64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-macosx_12_0_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, macOS 12.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d991dac58a19ac6aa0dc4de28597a6da0ae993d4f5fc6154423e508cafdc8bc
|
|
| MD5 |
66cd7ec22755b80a70153d73f4533f34
|
|
| BLAKE2b-256 |
e4fd22c49e9570d8dcd2194bfd80c305965c354553e06578cc1057ea65df071a
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-macosx_12_0_x86_64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-macosx_12_0_x86_64.whl -
Subject digest:
7d991dac58a19ac6aa0dc4de28597a6da0ae993d4f5fc6154423e508cafdc8bc - Sigstore transparency entry: 2531792825
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type:
File details
Details for the file csvtotable-3.0.0b1-py3-none-macosx_12_0_arm64.whl.
File metadata
- Download URL: csvtotable-3.0.0b1-py3-none-macosx_12_0_arm64.whl
- Upload date:
- Size: 2.0 MB
- Tags: Python 3, macOS 12.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ce06ca3ed33eaae1fc2e2a3fed87a117144b0fff0aa7e9b64132c17667f66a0
|
|
| MD5 |
feffc29f9ae6f48d556a8a7a1fcde417
|
|
| BLAKE2b-256 |
e3190d1210ace513e32e2da97eb06cc8e5da8e1c0871447404f81741dde5ca78
|
Provenance
The following attestation bundles were made for csvtotable-3.0.0b1-py3-none-macosx_12_0_arm64.whl:
Publisher:
release.yml on vividvilla/csvtotable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csvtotable-3.0.0b1-py3-none-macosx_12_0_arm64.whl -
Subject digest:
1ce06ca3ed33eaae1fc2e2a3fed87a117144b0fff0aa7e9b64132c17667f66a0 - Sigstore transparency entry: 2531792907
- Sigstore integration time:
-
Permalink:
vividvilla/csvtotable@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Branch / Tag:
refs/tags/v3.0.0-beta.1 - Owner: https://github.com/vividvilla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ec98340ac9040bd8facbe8447619ea7c91aac225 -
Trigger Event:
push
-
Statement type: