<script src="http://square.github.io/crossfilter/crossfilter.v1.min.js"></script>
<script src="http://square.github.io/crossfilter/d3.v3.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<title>Crossfilter</title>
@import url(http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:400,700);
<div id="body">
<a href="https://github.com/square"><img src="logotype.png" width="122" height="31"></a>
<h1>Crossfilter</h1>
<h2>Fast Multidimensional Filtering for Coordinated Views</h2>
<p><b>Crossfilter</b> is a <a href="https://github.com/square/crossfilter">JavaScript library</a> for exploring large multivariate datasets in the browser. Crossfilter supports extremely fast (<30ms) interaction with coordinated views, even with datasets containing a million or more records; we built it to power analytics for <a href="https://squareup.com/register">Square Register</a>, allowing merchants to slice and dice their payment history fluidly.
<p>Since most interactions only involve a single dimension, and then only small adjustments are made to the filter values, incremental filtering and reducing is significantly faster than starting from scratch. Crossfilter uses sorted indexes (and a few bit-twiddling hacks) to make this possible, dramatically increasing the perfor­mance of live histograms and top-<i>K</i> lists. For more details on how Crossfilter works, see the <a href="https://github.com/square/crossfilter/wiki/API-Reference">API reference</a>.
<h2>Example: Airline on-time performance</h2>
<p>The coordinated visualizations below (built with <a href="http://mbostock.github.com/d3/">D3</a>) show nearly a quarter-million flights from early 2001: part of the <a href="http://stat-computing.org/dataexpo/2009/">ASA Data Expo</a> dataset. The dataset is 5.3MB, so it might take a few seconds to download. Click and drag on any chart to filter by the associated dimension. The table beneath shows the eighty most recent flights that match the current...