A hashids (http://hashids.org) implementation in F#
Switch branches/tags
Nothing to show
Clone or download
Failed to load latest commit information.
Hashids Removed build section from readme Aug 22, 2017
.gitattributes Initial commit Nov 22, 2015
.gitignore Initial commit Nov 22, 2015
LICENSE Updated the readme and license Nov 25, 2015
README.md Added AppVeyor build status Aug 24, 2017



A hashids implementation in F#. It allows the encoding of one or more numbers into a single YouTube-like random string. Please visit http://hashids.org for implementations in other languages.

alt text

Usage in F#

Open the Hashids namespace

open Hashids

Create a configuration

A HashidConfiguration stores the salt, minimum id length, alphabet, and separators.

let config = 
        { Salt = "this is my salt"
          MinimumHashLength = 0
          Alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
          Separators = "cfhistuCFHISTU" }

Alternatively, the values from the defaultOptions record can be modified.

let config = 
        { HashidConfiguration.defaultOptions with Salt = "this is my salt" }

If the only thing that needs changing is the salt, use withSalt.

let config = HashidConfiguration.withSalt "this is my salt"

Create an encode and decode function

Create curried versions of Hashid.encode64 and Hashid.decode64 with a baked in configuration.

let encode = Hashid.encode64 config
let decode = Hashid.decode64 config

Encode and decode numbers

let id = encode [| 73L; 88L |]
let numbers = decode id

The resulting id will be rlVfvd.

Usage in C#

Using Hashids in C# is very similar to F# except for the currying. For a more object oriented approach please try Hashids.net (https://github.com/ullmark/hashids.net).

var config = HashidConfiguration.Create("this is my salt");
var id = Hashid.Encode(config, new int[] { 1, 2, 3 });
var numbers = Hashid.Decode(config, id);


Install the package with NuGet.

Install-Package hashids-fs