get and set anonymous identifiers


stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
51May 7, 2021Jul 12, 2018Minified + gzip package size for anonymous-id in KB



A tiny utility for working with anonymous ids
on the server and in the browser.

Getting Started


Install with npm:

npm install --save anonymous-id

Or with yarn:

yarn add anonymous-id


import anonymousId from 'anonymous-id'

anonymousId() // generate or pull id from cookie/localStorage

anonymousId('exampleId') // call the function with string or number to set as id, otherwise pass in options


Get & Set

import { get, set } from 'anonymous-id'

set({ key: 'my_anon_id' }) // ajs-C1E42A94-FCE2-4851-87DD-695F576C5368 -> cookie or localStorage

get({ key: 'my_anon_id' }) // cookie or localStorage -> ajs-C1E42A94-FCE2-4851-87DD-695F576C5368


These are the base options that can be passed in to both get and set functions:

  debug: true, // log operations to stdout
  preset: String, // prefix/generateId/stores to use
  cookie: String, // cookie string to use (browser default is document.cookie)
  localStorage: Object // Storage object to use (browser default is window.localStorage)

For setting anonymous ids, you can specify an id field which will pass the options to setAnonymousId(). If you don't set the id option, then getAnonymousId() will be called with the options:

const id = await promptEmailFromUser()

anonymousId({ id })

And for getting anonymous ids, you can pass control if the preset tries to persist data:

console.log(document.cookie) // 'a=true'

const { cookie } = anonymousId({ persist: false })

console.log(document.cookie) // 'a=true'
console.log(cookie) // 'a=true; ajs_anonymous_id=ajs-B31C9E91-D741-4146-913B-0E80199648D0'


All contributions are super welcome! anonymous-id is MIT-licensed.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from