{"id":13515304,"url":"https://github.com/crafatar/crafatar","last_synced_at":"2026-01-10T19:57:02.045Z","repository":{"id":22077444,"uuid":"25406846","full_name":"crafatar/crafatar","owner":"crafatar","description":"A blazing fast API for Minecraft faces","archived":false,"fork":false,"pushed_at":"2024-02-01T21:56:35.000Z","size":1176,"stargazers_count":330,"open_issues_count":29,"forks_count":69,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-04-14T07:07:46.423Z","etag":null,"topics":["api","avatar","avatars","caching","crafatar","minecraft","minecraft-avatar"],"latest_commit_sha":null,"homepage":"https://crafatar.com","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/crafatar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2014-10-18T18:56:55.000Z","updated_at":"2024-05-04T05:32:18.742Z","dependencies_parsed_at":"2024-05-04T05:32:16.185Z","dependency_job_id":"5aa78925-14c9-4771-96e9-582c0fcd3cfa","html_url":"https://github.com/crafatar/crafatar","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crafatar%2Fcrafatar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crafatar%2Fcrafatar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crafatar%2Fcrafatar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crafatar%2Fcrafatar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crafatar","download_url":"https://codeload.github.com/crafatar/crafatar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246418657,"owners_count":20773934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api","avatar","avatars","caching","crafatar","minecraft","minecraft-avatar"],"created_at":"2024-08-01T05:01:09.157Z","updated_at":"2025-12-16T19:04:37.415Z","avatar_url":"https://github.com/crafatar.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Crafatar\n\u003cimg alt=\"logo\" src=\"lib/public/logo.png\" align=\"right\" width=\"128px\" height=\"128px\"\u003e\n\n[![travis](https://img.shields.io/travis/crafatar/crafatar/master.svg?style=flat-square)](https://travis-ci.org/crafatar/crafatar/) [![Coverage Status](https://img.shields.io/coveralls/crafatar/crafatar.svg?style=flat-square)](https://coveralls.io/r/crafatar/crafatar) [![Code Climate](https://img.shields.io/codeclimate/github/crafatar/crafatar.svg?style=flat-square)](https://codeclimate.com/github/crafatar/crafatar) [![dependency status](https://img.shields.io/david/crafatar/crafatar.svg?style=flat-square)](https://david-dm.org/crafatar/crafatar) [![devDependency status](https://img.shields.io/david/dev/crafatar/crafatar.svg?style=flat-square)](https://david-dm.org/crafatar/crafatar#info=devDependencies) [![docs status](https://inch-ci.org/github/crafatar/crafatar.svg?branch=master\u0026style=flat-square)](https://inch-ci.org/github/crafatar/crafatar)\n\n\u003ca href=\"https://crafatar.com\"\u003eCrafatar\u003c/a\u003e serves Minecraft avatars based on the skin for use in external applications.\nInspired by \u003ca href=\"https://gravatar.com\"\u003eGravatar\u003c/a\u003e (hence the name) and \u003ca href=\"https://minotar.net\"\u003eMinotar\u003c/a\u003e.\n\nImage manipulation is done by [lwip](https://github.com/EyalAr/lwip). 3D renders are created with [node-canvas](https://github.com/Automattic/node-canvas) / [cairo](http://cairographics.org/).\n\n# Contributions welcome!\n\nThere are usually a few [open issues](https://github.com/crafatar/crafatar/issues).  \nWe welcome any opinions or advice in discussions as well as pull requests.  \nIssues tagged with [![help wanted](https://i.imgur.com/kkozGKY.png \"help wanted\")](https://github.com/crafatar/crafatar/labels/help%20wanted) show where we could especially need your help!\n\n# Examples\n\n| | | | |\n| :---: | :---: | :---: | :---: |\n| ![jomo's avatar](https://crafatar.com/avatars/ae795aa86327408e92ab25c8a59f3ba1?size=128) | ![Jake_0's avatar](https://crafatar.com/avatars/2d5aa9cdaeb049189930461fc9b91cc5?size=128) | ![Notch's avatar](https://crafatar.com/avatars/069a79f444e94726a5befca90e38aaf5?size=128) | ![sk89q's avatar](https://crafatar.com/avatars/0ea8eca3dbf647cc9d1ac64551ca975c?size=128) | ![md_5's avatar](https://crafatar.com/avatars/af74a02d19cb445bb07f6866a861f783?size=128) |\n| ![jomo's 3d head](https://crafatar.com/renders/head/ae795aa86327408e92ab25c8a59f3ba1?scale=6) | ![Jake_0's 3d head](https://crafatar.com/renders/head/2d5aa9cdaeb049189930461fc9b91cc5?scale=6) | ![Notch's 3d head](https://crafatar.com/renders/head/069a79f444e94726a5befca90e38aaf5?scale=6) | ![sk89q's 3d head](https://crafatar.com/renders/head/0ea8eca3dbf647cc9d1ac64551ca975c?scale=6) | ![md_5's 3d head](https://crafatar.com/renders/head/af74a02d19cb445bb07f6866a861f783?scale=6) |\n| ![jomo's 3d body](https://crafatar.com/renders/body/ae795aa86327408e92ab25c8a59f3ba1?scale=6) | ![Jake_0's 3d body](https://crafatar.com/renders/body/2d5aa9cdaeb049189930461fc9b91cc5?scale=6) | ![Notch's 3d body](https://crafatar.com/renders/body/069a79f444e94726a5befca90e38aaf5?scale=6) | ![sk89q's 3d body](https://crafatar.com/renders/body/0ea8eca3dbf647cc9d1ac64551ca975c?scale=6) | ![md_5's 3d body](https://crafatar.com/renders/body/af74a02d19cb445bb07f6866a861f783?scale=6) |\n| ![jomo's skin](https://crafatar.com/skins/ae795aa86327408e92ab25c8a59f3ba1) | ![Jake_0's skin](https://crafatar.com/skins/2d5aa9cdaeb049189930461fc9b91cc5) | ![Notch's skin](https://crafatar.com/skins/069a79f444e94726a5befca90e38aaf5) | ![sk89q's skin](https://crafatar.com/skins/0ea8eca3dbf647cc9d1ac64551ca975c) | ![md_5's skin](https://crafatar.com/skins/af74a02d19cb445bb07f6866a861f783) |\n\n## Usage / Documentation\n\nPlease [visit the website](https://crafatar.com) for details.\n\n## Contact\n\n* You can [follow](https://twitter.com/crafatar) us on twitter\n* Open an [issue](https://github.com/crafatar/crafatar/issues/) on GitHub\n\n# Installation\n\n## Docker\n\n```sh\ndocker network create crafatar\ndocker run --net crafatar -d --name redis redis\ndocker run --net crafatar -v crafatar-images:/home/app/crafatar/images -e REDIS_URL=redis://redis -p 3000:3000 crafatar/crafatar\n```\n\n## Manual\n\n- Install [nodejs](https://nodejs.org/) 12 (LTS)\n- Install `redis-server`\n- Run `npm install`  \n  If that fails, it's likely because because of `node-canvas` dependencies. Follow [this guide](https://github.com/Automattic/node-canvas/wiki#installation-guides) to install them.\n- Run `npm start`\n\nCrafatar is now available at http://0.0.0.0:3000.\n\n## Configration / Environment variables\n\nSee the `config.js` file.\n\n# Operational notes\n\n## inodes\n\nCrafatar stores a lot of images on disk. For avatars, these are 8×8 px PNG images with an average file size of \\~90 bytes. This can lead to issues on file systems such as ext4, which (by default) has a bytes-per-inode ratio of 16Kb. With thousands of files with an average file size below this ratio, you will run out of available inodes before running out of disk space. (Note that this will still be reported as `ENOSPC: no space left on device`).\n\nConsider using a different file system, changing the inode ratio, or deleting files before the inode limit is reached.\n\n## disk space and memory usage\n\nEventually you will run out of disk space and/or redis will be out of memory. Make sure to delete image files and/or flush redis before this happens.\n\n# Tests\n```sh\nnpm test\n```\n\nIf you want to debug failing tests:\n```sh\n# show logs during tests\nenv VERBOSE_TEST=true npm test\n```\n\nIt can be helpful to monitor redis commands to debug caching errors:\n```sh\nredis-cli monitor\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrafatar%2Fcrafatar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrafatar%2Fcrafatar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrafatar%2Fcrafatar/lists"}