CLI tool
Tablecruncher/tablecruncher avatar
Tablecruncher/tablecruncher

Tablecruncher: a grid CSV editor that opens the file a spreadsheet refuses

A lightweight, powerful CSV editor for macOS, Windows and Linux — with built-in JavaScript macros.

1,024 stars63 forksC++GPL-3.0

At a glance

What is it?
Tablecruncher is a C++17 CSV viewer and editor built on FLTK, published under GPL v3 with prebuilt binaries for macOS, Windows and Linux. It keeps the whole file on disk rather than in a grid of cells, reads five encodings, and lets you automate edits with JavaScript macros, which makes it a different tool from a spreadsheet and from a script-based pipeline.
Who is it for?
Tablecruncher is worth adopting for a data analyst who has to open a CSV too large for a spreadsheet grid, who needs to re-encode or reshape a file by hand, and who wants repeatable edits written as JavaScript macros rather than shell one-liners. It is the wrong choice for a pipeline where a script owns the file end to end, for a team that needs write access to the source repository, and for anyone who cannot accept GPL v3 obligations in a redistributed product.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 18 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A viewer for files that a spreadsheet grid cannot hold

Tablecruncher is described as a lightweight CSV editor for macOS, Windows and Linux, and the interesting claim in its README is a size one: need to open a 2 GB file with 16 million rows, and on a Mac Mini M2 the editor does it in 32 seconds. That number is the author's own, on his own hardware, and it is still the clearest statement of the design goal. The project was originally released in 2017 as a commercial app, and it is now fully open source under the GPL v3 license, or later.

The design goal is a file that stays a file. A spreadsheet application represents a document as a grid of cells, so a document with sixteen million rows is a document with sixteen million cell objects in memory, and the application spends its time allocating them rather than showing you rows. A CSV viewer that keeps the file on disk and reads the region you are looking at has a different cost profile, and the difference is what the 32 second figure is about.

The feature list in the README is short enough to be honest about what the program is. It opens huge CSV files, it has a built-in JavaScript macro language, it supports multiple encodings, and it offers four color themes. There is no mention of charts, pivot tables, formula evaluation, collaboration or a plugin API. The program is a grid, a parser and a scripting hook, and the interesting engineering sits in those three pieces.

The download section still points at v1.8-beta1 while v1.8.1 ships

The release history and the README disagree, and the disagreement is worth reading before you install anything.

The releases list shows v1.8.1 from 2026-09-29, v1.8 from 2025-05-22 and v1.8-beta1 from 2025-05-14. The README download section, by contrast, still announces prebuilt binaries of the newly open-sourced Tablecruncher v1.8-beta1, and it names the three targets as macOS (ARM), Windows (x86_64) and Linux (x86_64). The v1.8.1 release is newer than anything the README mentions, and the README also carries the word newly, which stopped being true in 2025.

So the practical situation is that the binary listing lives on the Releases page rather than in the README, and the README is the stale copy. The two URLs the README gives are the right ones to start from, https://github.com/Tablecruncher/tablecruncher/releases for the open source binaries and https://tablecruncher.com/download/ for v1.7.

The second URL is for a different product state. The README says the previous stable version, v1.7, for macOS on both ARM and Intel is still available at tablecruncher.com/download, which is a useful thing to know for an Intel Mac, since the open source binaries are listed for macOS ARM only. Note the asymmetry: Windows and Linux users get no v1.7 fallback mentioned anywhere in the README, and macOS Intel users get one from a separate site.

There is also no packaging story in the README. Nothing about Homebrew, apt, a .deb, a .rpm, a Flatpak or a Snap appears, so installing from a package manager means bringing your own repository entry, and on Linux the dependency list stops at the build-time toolkit.

Building from source means CMake, a toolchain, and FLTK by hand

The build path is spelled out in prose rather than in commands, and the sequence is four steps. Install Xcode Command Line Tools on macOS, or Visual Studio C++ on Windows, or your favourite build toolchain on Linux. Install CMake. Download and build FLTK. Run CMake to build the application.

The dependencies are unusually few, which is a real property of the project rather than a claim. Tablecruncher is written in C++17, build files for CMake are provided, and the UI toolkit FLTK is the only external dependency in that sense. The root of the repository carries a CMakeLists.txt and a CMakePresets.json, and the README points to BUILD.md for detailed instructions for macOS, Windows and Linux.

What the README does not give you is a command sequence. There is no clone line, no cmake configure invocation, no configure line with a FLTK path, and no build target. Those live in BUILD.md, and that file is not reproduced in the README, so the reader is sent away from the page to find out how to compile. The repository root also has a scripts/ directory and a docs/ directory, which are the places to look for the rest of the workflow.

There is a second layer to the build that is easy to miss. The application links four third-party libraries, and the README says each is included in source form under the terms of its respective license, with the license texts found in the corresponding subdirectories within /external/, either as dedicated license files or embedded directly in the source code. In other words the vendor code is committed, so the build is offline, but the subtree is there and the licenses travel with it.

JavaScript macros run on duktape, not on a browser engine

The macro language is the feature that separates Tablecruncher from a plain text grid, and the choice of interpreter is what makes it practical to ship.

The README lists a built-in JavaScript macro language, and the dependency list names duktape as the JavaScript engine, MIT licensed, copyright 2013-2023 by the Duktape authors. Duktape is a small embeddable engine rather than a full browser runtime, and embedding it in a C++17 desktop application is the standard way to get scripting without shipping a browser. The project also bundles cpp-httplib and nlohmann/json, both MIT, which suggests the macro side can reach a local HTTP endpoint and parse JSON, and utfcpp under the Boost Software License 1.0, which is the natural companion to a parser that has to handle five encodings.

The point for the user is narrow and concrete. Macros make a transformation repeatable: you describe the edit once, and applying it to the next file is the same action rather than a new set of manual steps. What the README does not say is how a macro is invoked, whether the API exposes the current row, the selection or the file handle, whether a macro can write a file back, and whether there is a sandbox. Anyone planning to automate a recurring cleanup through the macro language has to open the app and read the in-app documentation, because none of that is in the README.

It is also worth separating the macro language from a general scripting story. There is no command line interface mentioned in the README, no headless mode and no API for running a macro from a shell. As documented, the macro is an in-application tool, which means a nightly job that reshapes a file still needs a different program.

Five encodings, four themes, and the GPL v3 rewrite that came with them

Two small details carry a lot of practical weight.

The first is the encoding list. The README states that Tablecruncher supports UTF-8, UTF-16LE, UTF-16BE, Latin-1 (ISO-8859-1), and Windows 1252. That is a deliberate set rather than a default: UTF-16 in both byte orders covers data that came out of Windows tooling, and the two 8-bit encodings cover exports from older systems. A CSV editor that guesses wrong on a file full of accented characters produces a table of mojibake and a rewrite of the original bytes, which is why the explicit list matters more than it first appears. The bundled utfcpp is consistent with that focus on text handling rather than a general spreadsheet feature set.

The second is the license change and what came with it. The application is licensed under GPL v3 or later. All UI icons are copyright 2025 Stefan Fischerländer and licensed under GPL-3.0-or-later or CC BY 4.0, at your choice. The Tablecruncher app logo is copyright 2025 Stefan Fischerländer and licensed only under GPL-3.0-or-later. And the README asks forks that release a modified version to please use a different name and logo to avoid user confusion.

That last request is a naming and branding condition on top of the copyleft terms, and it is worth reading twice if you plan to ship a modified build. It is not a legal opinion, but it does mean the identity of the project is not available to a fork in the way the code is. The GPL v3 obligations and the branding request point in the same direction, and both apply to the same file, the application itself, while the bundled libraries sit under MIT and the Boost Software License 1.0, and each of those licenses is in its own subdirectory under /external/.

Where Tablecruncher is the wrong tool

The limits are easy to state, and they are not about file size.

A grid editor is a manual tool. Tablecruncher is a graphical application, and the README describes no command line entry point, no headless mode and no batch interface. If a pipeline owns the file, a script is the right instrument, and a script that opens the CSV, applies a transformation and writes the result is easier to schedule, to log and to test than a person clicking through a window. Tablecruncher wins when the work is one-off inspection or a transformation you need to see while you do it. It loses when the same transformation runs every night on a hundred files, because the macro language lives inside a GUI application and the README does not describe any way to drive it from a scheduler.

The second limit is the shape of the data. There is no formula evaluation, no type inference and no pivot view in the feature list, so a file that needs aggregation is a file that needs a different tool. The third is the platform coverage of the binaries, where macOS Intel is served by the older v1.7 download rather than by the open source release, and Windows and Linux have no older fallback mentioned.

The third limit is the one that decides adoption for many organisations. A GPL v3 application that a team may modify and redistribute carries copyleft obligations, and the project additionally asks that a modified release use a different name and logo. Teams that need to ship the editor inside a commercial product, or that want to keep their modifications closed, need to resolve that with their own legal review before touching the source. That constraint is a property of the licence choice, and it does not change with better documentation.

Editorial conclusion

Tablecruncher is worth adopting for a data analyst who has to open a CSV too large for a spreadsheet grid, who needs to re-encode or reshape a file by hand, and who wants repeatable edits written as JavaScript macros rather than shell one-liners. It is the wrong choice for a pipeline where a script owns the file end to end, for a team that needs write access to the source repository, and for anyone who cannot accept GPL v3 obligations in a redistributed product. Before adopting, download the binary for your platform and confirm that it opens the specific file shape you care about, then read BUILD.md and the third-party license files under /external/ if you plan to build or redistribute.

Frequently asked questions

What is Tablecruncher and what is it used for?

Tablecruncher is a CSV editor for macOS, Windows and Linux, written in C++17 on the FLTK toolkit and released under GPL v3. It is aimed at opening and editing CSV files that are too large to work with in a spreadsheet grid, with a built-in JavaScript macro language for repeatable edits.

How do I install Tablecruncher on macOS, Windows or Linux?

The README points to prebuilt binaries on the Releases page for macOS (ARM), Windows (x86_64) and Linux (x86_64), and to tablecruncher.com/download for the older v1.7 build on macOS ARM and Intel. No package manager entry is listed, and the README does not give install commands.

Which file encodings does Tablecruncher read?

The README lists five: UTF-8, UTF-16LE, UTF-16BE, Latin-1 (ISO-8859-1) and Windows 1252. The project bundles the utfcpp library under the Boost Software License 1.0 as part of its text handling.

Can I build Tablecruncher from source?

Yes, with four steps given in the README: install Xcode Command Line Tools, Visual Studio C++ or a Linux toolchain, install CMake, download and build FLTK, then run CMake. The README names BUILD.md as the place with detailed instructions for macOS, Windows and Linux, and FLTK is the only external dependency it lists.

What are the licensing terms for using or modifying Tablecruncher?

The application is licensed under GPL v3 or later, the UI icons are available under GPL-3.0-or-later or CC BY 4.0 at your choice, and the app logo is licensed only under GPL-3.0-or-later. The README asks that a modified release use a different name and logo.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. Tablecruncher/tablecruncher on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tablecruncher-tablecruncher.svg)](https://hysenlabs.com/projects/tablecruncher-tablecruncher)

Was this useful?