| # yeast | 
 |  | 
 | [](http://unshift.io)[](http://browsenpm.org/package/yeast)[](https://travis-ci.org/unshiftio/yeast)[](https://david-dm.org/unshiftio/yeast)[](https://coveralls.io/r/unshiftio/yeast?branch=master)[](https://webchat.freenode.net/?channels=unshift) | 
 |  | 
 | [](https://saucelabs.com/u/yeast) | 
 |  | 
 | Yeast is a unique id generator. It has been primarily designed to generate a | 
 | unique id which can be used for cache busting. A common practice for this is | 
 | to use a timestamp, but there are couple of downsides when using timestamps. | 
 |  | 
 | 1. The timestamp is already 13 chars long. This might not matter for 1 request | 
 |    but if you make hundreds of them this quickly adds up in bandwidth and | 
 |    processing time. | 
 | 2. It's not unique enough. If you generate two stamps right after each other, | 
 |    they would be identical because the timing accuracy is limited to | 
 |    milliseconds. | 
 |  | 
 | Yeast solves both of these issues by: | 
 |  | 
 | 1. Compressing the generated timestamp using a custom `encode()` function that | 
 |    returns a string representation of the number. | 
 | 2. Seeding the id in case of collision (when the id is identical to the previous | 
 |    one). | 
 |  | 
 | To keep the strings unique it will use the `.` char to separate the generated | 
 | stamp from the seed. | 
 |  | 
 | ## Installation | 
 |  | 
 | The module is intended to be used in browsers as well as in Node.js and is | 
 | therefore released in the npm registry and can be installed using: | 
 |  | 
 | ``` | 
 | npm install --save yeast | 
 | ``` | 
 |  | 
 | ## Usage | 
 |  | 
 | All the examples assume that this library is initialized as follow: | 
 |  | 
 | ```js | 
 | 'use strict'; | 
 |  | 
 | var yeast = require('yeast'); | 
 | ``` | 
 |  | 
 | To generate an id just call the `yeast` function. | 
 |  | 
 | ```js | 
 | console.log(yeast(), yeast(), yeast()); // outputs: KyxidwN KyxidwN.0 KyxidwN.1 | 
 |  | 
 | setTimeout(function () { | 
 |   console.log(yeast()); // outputs: KyxidwO | 
 | }); | 
 | ``` | 
 |  | 
 | ### yeast.encode(num) | 
 |  | 
 | An helper function that returns a string representing the specified number. The | 
 | returned string contains only URL safe characters. | 
 |  | 
 | ```js | 
 | yeast.encode(+new Date()); // outputs: Kyxjuo1 | 
 | ``` | 
 |  | 
 | ### yeast.decode(str) | 
 |  | 
 | An helper function that returns the integer value specified by the given string. | 
 | This function can be used to retrieve the timestamp from a `yeast` id. | 
 |  | 
 | ```js | 
 | var id = yeast(); // holds the value: Kyxl1OU | 
 |  | 
 | yeast.decode(id); // outputs: 1439816226334 | 
 | ``` | 
 |  | 
 | That's all folks. If you have ideas on how we can further compress the ids | 
 | please open an issue! | 
 |  | 
 | ## License | 
 |  | 
 | [MIT](LICENSE) |