Ruby/Elixir/JS libraries for non-strict parsing, manipulation, and wildcard matching of URLs.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A library for parsing, construction, and wildcard matching of URLs. Three of them, actually -- the same interface presented in Elixir, Ruby, and JavaScript.

Available for:


Fuzzyurl provides two related functions: non-strict parsing of URLs or URL-like strings into their component pieces (protocol, username, password, hostname, port, path, query, and fragment), and fuzzy matching of URLs and URL patterns.

Specifically, URLs that look like this:

[protocol ://] [username [: password] @] [hostname] [: port] [/ path] [? query] [# fragment]

Fuzzyurls can be constructed using some or all of the above fields, optionally replacing some or all of those fields with a * wildcard if you wish to use the Fuzzyurl as a URL mask.


Documentation is provided in the per-language repositories linked at the top of this README.


Contributing patches is awesome! The ideal patch comes in the form of a GitHub pull request to one of the per-language repos, containing a good description of the PR's intent, well-documented code implementing the change, and tests to verify its operation.

Changes, however, should be suitable for inclusion in all the Fuzzyurl implementations, not just one.

Copyright on all accepted contributions will be assigned to the project copyright holder (Pete Gamache). Contributors shall be recognized in each project's README.

Authorship and License

All implementations of Fuzzyurl are copyright 2014-2016, Pete Gamache.

All Fuzzyurl implementations are released under the MIT License, available at LICENSE.txt.