break down and process junky data into streams (think unix pipes for open data)
JavaScript CoffeeScript
Switch branches/tags
Nothing to show
Pull request Compare This branch is 7 commits behind maxogden:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

gut is a way to use publicly hosted web services to convert data between different formats

A gut web service (essentially a WebHook) has the following attributes:

  • accepts POST data containing a file or other data (such as CSV)
  • turns the incoming data into some other data format (e.g. an array of JSON objects)
  • sends the converted data back to the URL specified by the incoming requests HTTP "X-callback" header

That's it!

An example:

I'm writing a web app concerning public/open data and I want to allow people to upload CSV spreadsheets. Instead of writing a CSV parser from scratch i'm just going to use a gut-compatible CSV-to-JSON server that some nice person wrote.

Given I have the following file, cats.csv:


I can convert my file to JSON using curl:

curl -X POST -H "X-callback:" --data-binary @cats.csv

My server ( will receive the following HTTP POST:

content-type: application/json
content-length: 186
Connection: close


Currently a CSV to JSON, and Spreadsheet to {JSON,CSV} gut services are implemented, but you are encouraged to fork and add your own simple gut servers for common open data transformation formats. Check the wiki for the current list.

Want to contribute? Please consider adding more gutters:

  • ESRI Shapefiles and File GeoDatabases (.shp)
  • MSOffice (.doc, .docx etc)
  • SQL dumps (.sql)
  • Address geocoder to lat/lng ("123 fake street")