Early Access

Safer, smoother data table processing

Download for Windows Download for Mac or Linux

What is Columnal?

Columnal is a spreadsheet-like program for processing tables of data. Rather than copying formulas around in individual cells, you apply transformations on whole tables, for example forming an average or sorting by a particular column. This brings several advantages over spreadsheets:

  • Because the transformation is applied to the whole table, there is no danger of forgetting to copy a formula.
  • All transformations leave the source table intact, so there is no worry about sorting or filtering and not being able to undo it. Like spreadsheets, transformations are "live"; they update if the source data changes.
  • Each column has an associated type, which prevents numbers accidentally being recognised as dates or similar problems.

Columnal is designed to make it easy to interoperate with other tools, and to help prevent you making mistakes while dealing with data, especially through using types to constrain data values.
Further features include:

  • Specialised handling for date and time types to reduce mistakes and simplify processing.
  • Units of measure: you can associate a unit (like metres or dollars) with a number, which prevents you adding for example dollars to euros.
  • Files are stored in a text-based format, allowing use of version control systems like Git.

You can read more in this design blog post.


Columnal is centred around applying transformations to data tables. Below are some animated examples of applying different transformations to data tables.


The filter transformation creates a new table containing only those rows which match a given expression.

Unlike a lot of other software you can make multiple filters from a source table and then make calculations only on the resulting rows.

Demonstration of filter transformation. Click/tap image to stop playback


The aggregate transformation allows grouping by a specified column then calculating.

It can be used for operations like frequency tables or calculating averages per value of a specific column.

Demonstration of aggegate/frequency table transformation. Click/tap image to stop playback


The sort transformation creates a new table with the rows sorted by the specified columns.

The sort order can be changed later, and -- as with all transformations -- the source table is not altered.

Demonstration of sort transformation. Click/tap image to stop playback


The join transformation joins two tables together by matching values in the specified columns.

This can be used for looking up data in one table from another, like lookup functions in a spreadsheet.

Demonstration of join transformation. Click/tap image to stop playback


The calculate transformation is like a repeated spreadsheet formula, which calculates a value for each row.

There is a variety of possible functions that can be used to write the transformation.

Demonstration of calculation transformation. Click/tap image to stop playback

What does early access mean?

Columnal is currently in early access. The core functionality of the software is complete but we are still tweaking the design and polishing the interface. We are eager to get user feedback to guide the design and iron out the kinks. If you have feedback, questions or bug reports, please send it to earlyaccess@columnal.xyz and we will send our thanks.

The intended roadmap for Columnal is that all the features currently present will be finalised into a Columnal Free edition, with extra features currently under development (such as graphing) made available as part of a paid-for edition.


We have a set of guiding principles for our design, community and data:



Columnal was created by Neil Brown. You can follow Columnal on twitter for announcements about updates.

A note on prounciation: there is no single right way to pronounce Columnal. The main thing is that the N is pronounced, not silent (like it is in "column"). We suggest: "co" as in cot, "lum" as in lump, "nal" as in "final", making coh-LUM-nul, with the stress on the middle syllable.