An ultra-lightweight node.js HTTP server for web development.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 633f28e May 4, 2017
Failed to load latest commit information.
.gitattributes Initial commit. Jul 18, 2014
.gitignore Initial commit. Jul 18, 2014
Gruntfile.js Linted. Jul 22, 2014
LICENSE Initial commit. Jul 18, 2014 Update Nov 4, 2014
nano-server Decode request URLs May 4, 2017
package.json Decode request URLs May 4, 2017


nano-server is an ultra-lightweight node.js HTTP server for web development. It exposes a local directory through HTTP, simplifying development of front-end apps that require functionality blocked by cross-origin protections, e.g. AJAX, Canvas Image Processing, Web Audio Analysis, WebGL textures.

nano-server provides some features that I didn't find in similar server packages:

  • Sends gzipped versions of files, if they are available.
  • Attempts to set the Content-Type header with the appropriate MIME type for browser-relevant file types.
  • 0 dependencies. Can be dropped into any project.


The simplest way to install nano-server is as a global install through npm:

  $ npm install -g nano-server

Then nano-server can be invoked as a command line executable:

  $ nano-server

By default, nano-server will run on port 5000 and use the current working directory as its document root. Optionally, a port number can be passed as first argument on the command line:

  $ nano-server 3000

The document root can be given as second argument, if desired.

  $ nano-server 5000 my_app/public_html

Since nano-server has no dependancies, it can be dropped directly into any project and invoked using node explicitly. This can be useful if you don't have the necessary permissions to do a global install on the machine you're using:

  $ cp nano-server ~/path/to/project/
  $ cd ~/path/to/project/
  $ node nano-server