Koa middleware that makes sure all requests have a trailing slashes

Usage no npm install needed!

<script type="module">
  import koaAddTrailingSlashes from 'https://cdn.skypack.dev/koa-add-trailing-slashes';



Koa middleware that adds trailing slashes on an URL.

Notice: koa-add-trailing-slashes@2 supports koa@2; if you want to use this module with koa@1, please use koa-add-trailing-slashes@1.

Build Status Coverage Status npm


npm install koa-add-trailing-slashes


const Koa = require('koa');
const app = new Koa();
  • opts options object.


  • index - Default file name, defaults to 'index.html'. Will automatically add slashes to folders that contain this index file, expected to be used with koa-static. Defaults to index.html.
  • defer - If true, serves after yield next, allowing any downstream middleware to respond first. Defaults to true.
  • chained - If the middleware should continue modifying the url if it detects that a redirect already have been performed. Defaults to true.


const Koa = require('koa');
const addTrailingSlashes = require('koa-add-trailing-slashes');

const app = new Koa();


app.use(ctx => {
  ctx.body = 'Hello World';



Make sure this is added before an eventual koa-static middleware to make sure requests to files are not changed and managed correctly. This because it will not rewrite the URL if a body has been set along with status 200. Once exception to this is if the body is the index file described above, to make sure a trailing slash is added to the end of a folder that serves the index file.

If all paths always should be rewritten one can set defer to false.

Example If the url in the browser is /foo and koa-static resolves that to foo/index.html internally along with opts.index matching the filename, in this case index.html, the path will end up as /foo/.