Skip to content


Repository files navigation


NPM version Build status Test coverage License Downloads

Koa static file serving middleware, wrapper for koa-send.


$ npm install koa-static


import Koa from "koa"; // CJS: require('koa');
import serve from "koa-static"; // CJS: require('koa-static')
const app = new Koa();
app.use(serve(root, opts));
  • root root directory string. nothing above this root directory can be served
  • opts options object.


  • maxage Browser cache max-age in milliseconds. defaults to 0
  • hidden Allow transfer of hidden files. defaults to false
  • index Default file name, defaults to 'index.html'
  • defer If true, serves after return next(), allowing any downstream middleware to respond first.
  • gzip Try to serve the gzipped version of a file automatically when gzip is supported by a client and if the requested file with .gz extension exists. defaults to true.
  • brotli Try to serve the brotli version of a file automatically when brotli is supported by a client and if the requested file with .br extension exists (note, that brotli is only accepted over https). defaults to true.
  • setHeaders Function to set custom headers on response.
  • extensions Try to match extensions from passed array to search for file when no extension is sufficed in URL. First found is served. (defaults to false)


const serve = require("koa-static");
const Koa = require("koa");
const app = new Koa();

// $ GET /package.json

// $ GET /hello.txt

// or use absolute paths
app.use(serve(__dirname + "/test/fixtures"));


console.log("listening on port 3000");

See also