{"id":49091001,"url":"https://github.com/dastoori/uniqolor","last_synced_at":"2026-04-20T18:39:02.681Z","repository":{"id":23596792,"uuid":"99452383","full_name":"dastoori/uniqolor","owner":"dastoori","description":"Generate unique and beautiful colors from any texts or numbers","archived":false,"fork":false,"pushed_at":"2024-06-19T00:10:50.000Z","size":752,"stargazers_count":84,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-12T12:17:59.325Z","etag":null,"topics":["beautiful-colors","color","generate-color","hue","javascript","lightness","lightweight","nodejs","random","saturation","uniqolor","unique","uuid"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dastoori.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-05T23:05:03.000Z","updated_at":"2025-08-27T15:38:19.000Z","dependencies_parsed_at":"2024-06-18T17:02:09.935Z","dependency_job_id":"ed0284cf-bf18-484e-ab18-625e298beb76","html_url":"https://github.com/dastoori/uniqolor","commit_stats":{"total_commits":46,"total_committers":4,"mean_commits":11.5,"dds":0.08695652173913049,"last_synced_commit":"92fbb8f32ec760e2cae37f9e5da728c003e7ad8b"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dastoori/uniqolor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastoori%2Funiqolor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastoori%2Funiqolor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastoori%2Funiqolor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastoori%2Funiqolor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dastoori","download_url":"https://codeload.github.com/dastoori/uniqolor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastoori%2Funiqolor/sbom","scorecard":{"id":323909,"data":{"date":"2025-08-11","repo":{"name":"github.com/dastoori/uniqolor","commit":"92fbb8f32ec760e2cae37f9e5da728c003e7ad8b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":2,"reason":"8 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T02:01:49.432Z","repository_id":23596792,"created_at":"2025-08-18T02:01:49.432Z","updated_at":"2025-08-18T02:01:49.432Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32060324,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beautiful-colors","color","generate-color","hue","javascript","lightness","lightweight","nodejs","random","saturation","uniqolor","unique","uuid"],"created_at":"2026-04-20T18:39:01.988Z","updated_at":"2026-04-20T18:39:02.668Z","avatar_url":"https://github.com/dastoori.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/2003143/29374843-1fa78a3e-82c8-11e7-80a3-0786f899749d.png\" alt=\"uniqolor logo\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.com/dastoori/uniqolor\"\u003e\u003cimg src=\"https://api.travis-ci.com/dastoori/uniqolor.svg?branch=master\" alt=\"Build status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/dastoori/uniqolor\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/dastoori/uniqolor.svg\" alt=\"Coverage report\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dastoori/uniqolor/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/dastoori/uniqolor.svg\" alt=\"GitHub release\" /\u003e\u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://www.npmjs.com/package/uniqolor\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/uniqolor.svg\" alt=\"NPM Downloads\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/dependency-no-green.svg\" alt=\"No Dependency\" /\u003e\n  \u003ca href=\"https://raw.githubusercontent.com/dastoori/uniqolor/master/LICENSE.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"GitHub license\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/p\u003e\n\n# Overview\n\nuniqolor is a fast and lightweight javascript library for generating unique and beautiful colors from any texts or numbers.\n\n\n## Why uniqolor?\n\n- There is no need to store colors in the database anymore, just use uniqolor to generate colors at runtime and it will generate the same output every time, on any platform (Server, Browser or Mobile).\n- You can generate a unique color from UUID, MongoDB ObjectId or anything that can be converted to a string or number\n- You can generate a random color\n- You can control the color saturation and lightness\n- There is no need for an extra color library to change the color format or indicating whether the color brightness is light or dark\n- It's lightweight (~1.4KB gzipped)\n\n# Quick start\n\n## Using `npm` or `yarn`\n\n```shell\n$ npm install uniqolor\n# or\n$ yarn add uniqolor\n```\n\nES6 Import:\n\n```javascript\nimport uniqolor from 'uniqolor';\n```\n\nCommonJS (like nodejs, webpack, and browserify):\n\n```javascript\nconst uniqolor = require('uniqolor');\n```\n\nAMD (like RequireJS):\n\n```javascript\ndefine(['uniqolor'], function (uniqolor) {\n  // ...\n})\n```\n\n## Using `\u003cscript\u003e`\n\nInclude [`uniqolor.js`](https://unpkg.com/uniqolor/dist/uniqolor.js) or [`uniqolor.min.js`](https://unpkg.com/uniqolor/dist/uniqolor.min.js) into your html file:\n\n```html\n\u003cscript src=\"https://unpkg.com/uniqolor/dist/uniqolor.min.js\" type=\"text/javascript\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\"\u003e\n  var color = uniqolor('Hello world!');\n\u003c/script\u003e\n```\n\n## Usage\n\n```javascript\n/* Generate unique color from texts or numbers */\n\nuniqolor('Hello world!')\n// { color: \"#5cc653\", isLight: true }\n\nuniqolor('bf545d4c-5360-4158-a572-bd3e204185a9', { format: 'rgb' })\n// { color: \"rgb(128, 191, 64)\", isLight: true }\n\nuniqolor(123, {\n  saturation: [35, 70],\n  lightness: 25,\n})\n// { color: \"#405926\", isLight: false }\n\nuniqolor(123, {\n  saturation: [35, 70],\n  lightness: 25,\n  differencePoint: 50,\n})\n// { color: \"#405926\", isLight: true }\n\n// Generate random color\nuniqolor.random()\n// { color: \"#644cc8\", isLight: false }\n\n// Generate a random color with HSL format\nuniqolor.random({ format: 'hsl' })\n// { color: \"hsl(89, 55%, 60%)\", isLight: true }\n\n// Generate a random color in specific saturation and lightness\nuniqolor.random({\n  saturation: 80,\n  lightness: [70, 80],\n})\n// { color: \"#c7b9da\", isLight: true }\n\n// Generate a random color but exclude red color range\nuniqolor.random({\n  excludeHue: [[0, 20], [325, 359]],\n})\n// {color: '#53caab', isLight: true}\n```\n\n# Examples\n\n- [Avatar Placeholder](https://rawgit.com/dastoori/uniqolor/master/examples/avatar-placeholder/index.html)\n\n# API\n\n## uniqolor(value, [options]) ⇒ `Object`\n\nGenerate unique color from `value`\n\n**Params:**\n\n- `value` (type: `string|number`)\n- `options` (type: `Object`, default: `{}`)\n- `options.format` (type: `string`, default: `'hex'`): The color format, it can be one of `hex`, `rgb` or `hsl`\n- `options.saturation` (type: `number|Array`, default: `[50, 55]`): Determines the color saturation, it can be a number or a range between 0 and 100\n- `options.lightness` (type: `number|Array`, default: `[50, 60]`): Determines the color lightness, it can be a number or a range between 0 and 100\n- `options.differencePoint` (type: `number`, defualt: `130`): Determines the color brightness difference point. We use it to obtain the `isLight` value in the output, it can be a number between 0 and 255\n\n**Output:**\n\n- `color` (type: `string`): The generated color\n- `isLight` (type: `boolean`): Determines whether the `color` is a light color or a dark color (It's good for choosing a foreground color, like font color)\n\n## uniqolor.random([options]) ⇒ `Object`\n\nGenerate random color\n\nParams:\n\n- `options` (type: `Object`, default: `{}`)\n- `options.format` (type: `string`, default: `'hex'`): The color format, it can be one of `hex`, `rgb` or `hsl`\n- `options.saturation` (type: `number|Array`, default: `[50, 55]`): Determines the color saturation, it can be a number or a range between 0 and 100\n- `options.lightness` (type: `number|Array`, default: `[50, 60]`): Determines the color lightness, it can be a number or a range between 0 and 100\n- `options.differencePoint` (type: `number`, default: `130`): Determines the color brightness difference point. We use it to obtain the `isLight` value in the output, it can be a number between 0 and 255\n- `options.excludeHue` (type: `Array`): Exclude certain hue ranges. For example to exclude red color range: `[[0, 20], [325, 359]]`.\n\n# Contributing\n\nYour ideas and contributions are welcome; check out our [contributing guide](https://github.com/dastoori/uniqolor/blob/master/CONTRIBUTING.md)\n\n# [License](https://github.com/dastoori/uniqolor/blob/master/LICENSE.md)\n\nThe unicorn shape in the logo made by [Freepik](https://www.freepik.com) is licensed by [CC 3.0 BY](http://creativecommons.org/licenses/by/3.0/)\n\nMIT © 2017 Rasool Dastoori\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdastoori%2Funiqolor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdastoori%2Funiqolor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdastoori%2Funiqolor/lists"}