A modern map design studio.
JavaScript HTML Objective-C CSS C Shell Other
Latest commit 9d4a9b9 Jul 19, 2016 @tmcw tmcw committed on GitHub Merge pull request #2553 from nebulon42/upgrade-carto
upgrade carto to 0.16.2
Failed to load latest commit information.
_posts/docs/reference Eliminate syncAPI option. Mar 3, 2014
assets Merge pull request #2184 from versusvoid/master Sep 12, 2014
commands drop dependency on jsdom altogether Mar 6, 2016
controllers Non-blocking update checking on client startup Jun 28, 2012
data/82945364-10m-admin-0-countries Selectively copy sample data file to MapBox/cache dir. Refs #1114. Jan 16, 2012
examples update ancient example comments, fixes #1964 Aug 30, 2013
fonts bundle dejavu fonts for back compat - closes #2272 Oct 23, 2014
lib use rimraf for windows support Mar 6, 2016
models Fall back to .yml filenames if .mml is missing Apr 19, 2016
platforms rip out sparkle Mar 12, 2016
plugins fix #2534 Mar 6, 2016
servers disable autoloadFonts - refs mapbox/tilelive-mapnik#81 May 8, 2015
templates hide plugins UI - refs #1706 Mar 6, 2016
test add init Mar 6, 2016
views fix #2534 Mar 6, 2016
.gitignore DIRTY Oct 1, 2012
.travis.yml install webkit disable failing node v4 tests Mar 6, 2016
LICENSE.md update copyright to MapBox Dec 5, 2013
README.md Update README.md Apr 4, 2016
appveyor.yml try getting postgres running - refs #2469 Mar 6, 2016
configure.js add protobuf/pkg-config to configure script Oct 4, 2013
index.js bundle dejavu fonts for back compat - closes #2272 Oct 23, 2014
package.json Merge pull request #2553 from nebulon42/upgrade-carto Jul 19, 2016
rebuild_cxx.sh use npm rebuild rather than direct node-gyp call to avoid sqlite3 bre… Oct 25, 2013
tilemill.ico move tilemill.ico to root and add log-file option for cefclient Feb 14, 2012


TileMill is a modern map design studio powered by Node.js and Mapnik.

Installation instructions, development docs and other information are available on the TileMill website.

Mapbox Studio is the modern alternative to TileMill: if you're starting out and creating a map today, we recommend starting with Mapbox Studio rather than TileMill.

Build Status

Build Status Build status Dependencies

Key modules

  • mapnik - Build Status
  • node-mapnik - Build Status
  • carto - Build Status
  • tilelive - Build Status
  • tilelive-mapnik - Build Status
  • millstone - Build Status
  • node-mbtiles - Build Status
  • node-sqlite3 - Build Status


  • Mapnik v2.3.0
  • Node.js v0.10.x or v0.8.x
  • Protobuf: libprotobuf-lite and protoc

However, node-mapnik (which depends on Mapnik and protobuf) is now packaged as a binary. So, you do not need an external Mapnik. See Installation


To install from source just do:

git clone https://github.com/mapbox/tilemill.git
cd tilemill
npm install

Then to start TileMill do:

./index.js # and then view http://localhost:20009 in your web browser

For more extended details follow:

Running tests

Install mocha and run the tests

npm install mocha
npm test

Note: the tests require a running postgres server and a postgis enabled database called template_postgis.

If you do not have a template_postgis create one like:

createdb -E UTF8 template_postgis
psql -c "CREATE EXTENSION postgis" template_postgis

If you experience failing tests here are two tips:

  1. Debug the project data by running TileMill with

    ./index.js --files=./test/fixtures/files/

  2. Try clearing the cache of test data:

    rm -rf ./test/fixtures/files/

For more info see: http://postgis.net/docs/manual-1.5/ch02.html


TileMill documentation is kept in the mb-pages branch, which is independently managed and not merged with master.

TileMill's in-app reference available as the "Manual" (see below for syncing details) is a very small subset of docs for offline usage and is manually sync'ed from the mb-pages branch.

To view all the TileMill documentation locally, first checkout the mb-pages branch:

git checkout mb-pages

Then install Jekyll:

sudo gem install jekyll

And run Jekyll:


Once Jekyll has started you should be able to view the docs in a browser at:


Syncing manual

To sync the manual with mb-pages updates do:

cd ../
git clone --depth=1 -b mb-pages https://github.com/mapbox/tilemill tilemill-mb-pages
export TILEMILL_GHPAGES=../tilemill-mb-pages
rm -rf ${TILEMILL_SOURCES}/assets/manual
mkdir -p ${TILEMILL_SOURCES}/assets/manual
cp -r ${TILEMILL_GHPAGES}/assets/manual/* ${TILEMILL_SOURCES}/assets/manual/
git add ${TILEMILL_SOURCES}/assets/manual/*
rm -rf ${TILEMILL_SOURCES}/_posts/docs/reference
mkdir -p ${TILEMILL_SOURCES}/_posts/docs/reference
cp -r ${TILEMILL_GHPAGES}/_posts/docs/reference/* ${TILEMILL_SOURCES}/_posts/docs/reference/
git add ${TILEMILL_SOURCES}/_posts/docs/reference/*