Need help with uri-templates?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

129 Stars 20 Forks 32 Commits 13 Opened issues


JavaScript utility for RFC 6570: URI Templates

Services available


Need anything else?

Contributors list

No Data


URI Templates (RFC6570) in JavaScript, including de-substitution.

It is tested against the official test suite, including the extended tests.

The "de-substitution" extracts parameter values from URIs. It is also tested against the official test suite (including extended tests).


In Node:

var uriTemplates = require('uri-templates');
var template1 = uriTemplates("/date/{colour}/{shape}/");

In browser:

var template2 = new UriTemplate("/prefix/{?params*}");

Substitution using an object

// "/categories/green/round/"
var uri1 = template1.fill({colour: "green", shape: "round"});

// "/prefix/?a=A&b=B&c=C var uri2 = template2.fillFromObject({ params: {a: "A", b: "B", c: "C"} });

Substitution using a callback

// "/categories/example_colour/example_shape/"
var uri1b = template1.fill(function (varName) {
    return "example_" + varName;

Guess variables from URI ("de-substitution")

var uri2b = "/prefix/?beep=boop&bleep=bloop";
var params = template2.fromUri(uri2b);
        params: {
            beep: "boop",
            bleep: "bloop"

While templates can be ambiguous (e.g.

), it will still produce something that reconstructs into the original URI.

It can handle all the cases in the official test suite, including the extended tests:

var template = uriTemplate("{/id*}{?fields,token}");

var values = template.fromUri("/person/albums?fields=id,name,picture&token=12345"); /* { id: ["person", 'albums"], fields: ["id", "name", "picture"], token: "12345" } */


This project is released as public-domain. Anybody can modify or re-license it for any purpose, without restriction.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.