Optimizing your GitHub profile

GitHub isn’t a social network - it’s a development platform - so what kind of content do you need to put in your GitHub profile? In this article, we’ll talk about who might be looking at your GitHub profile, and share some tips to help you make the best possible impression on your intended audience, whether that’s potential employers, clients, or other developers!


Who is your profile for?

GitHub is a platform for “social coding”, with an emphasis on the coding! Unlike fully fledged social networks, there is not much emphasis on providing personal information and building up a pretty and informative profile. But you can build a profile, and if you’re going to build one, why not build the most effective one possible?

To decide what is an effective GitHub profile, and optimize for that, first you need to decide who you are optimizing it for. There are several possible audiences we will consider in this article:

You might be a developer looking for employment with a company.

You might be a freelancer, looking for your next contract.

You might be an open source contributor, looking to join an open source project.

Once you have decided who your targeted audience is, you can start making decisions about how you want to present yourself. Before we think about that, let’s review the elements that we’re working with!


The parts of a personal profile

Your Profile Picture

Probably the most visually important part of your profile, the profile picture you choose creates a visual identity for you on GitHub. Because it is situated at the top-left hand corner of the page, anyone who grew up with a language that is written left-to-right will naturally direct their attention to it first.

Your profile picture will also appear next to every commit, issue and pull request you create, and every comment you make on the Community Forum, so it’s a good idea to choose an image that is distinct and identifiable even when it has been shrunk down to a small size. Large areas of light and dark, or distinct colors, can do this.

If you have a Gravatar set up, GitHub will automatically use it. If you’re looking to have a consistent visual identity everywhere online, it is OK to stick with your Gravatar. If you are not using a Gravatar, when you first create a GitHub account the system will generate you an Identicon. Because so many people stick with their Identicon, if you want to stand out and be memorable, it’s a good idea to change your profile picture to something else.

Does your profile picture have to be a picture of you? No! You can choose any other type of image! A cartoon, a cute animal, some abstract shapes - maybe even create a logo for yourself!

Your Status

We recently introduced the ability to add a status to your profile, that will appear underneath your profile picture, along with an emoji. If you are not using it to post real-time updates about when you are too busy to respond to pull requests, this is a great place to put a call to action. The status lets you create a first impression on anybody looking at your profile.

Your Name

There is space to enter a name here. It is going to be the largest text on your profile page, so from a visual hierarchy point of view, it is pretty important. It doesn’t have to be your real name! If you have been active in online communities under a handle that is different to your GitHub username, and you think your potential audience might recognize you from there, put your username in this field!

Your Bio

In this section, you can provide a bit more information about yourself. You only have 160 characters to work with, so you will need to keep it short and sweet!

So, what are you supposed to write? You could write about your past and present and mention current or former employers, projects you have worked on, or languages and frameworks you enjoy using, or are currently learning. You can use @mentions to reference specific GitHub Users or Organizations.

Alternatively, you could choose to write about your future. Mention the type of company you would like to work for, the kinds of projects you’d like to work on next, or the areas of Open Source you would like to contribute to. You can include anything that will have the right effect on your intended audience.

Underneath the text field, there are some fields where you can mention a current Organization, your geographical location, and a link to a website. All of these fields are optional - only fill them in if you are comfortable doing so.

If you want to make it as easy as possible for people to contact you, you can have an email address visible here. You will need to make sure you have not ticked Keep my email address private in the email settings of your account. You can add multiple email addresses to GitHub and choose which one is displayed to the public, so it doesn’t need to be your personal address. It’s important that if you do include an address here, however, that you actually check it regularly. There’s nothing more frustrating than finding an email from someone interested in hiring you for a dream job 6 months after they sent it!

If you are looking for work, you can tick the “Available for hire” checkbox! (It doesn’t affect how your profile looks, but it does mean you will start to see jobs from the GitHub Jobs board appear on your dashboard!)

Finally, if you have a paid GitHub account, your profile will have a PRO badge. If you don’t like this feature, you can turn it off.

Your Organizations

If you are part of any Organizations on GitHub, you can choose to display their logo underneath your Bio. It’s not an all or nothing thing. You can choose to hide some Organizations and publicize others on a case by case basis.

Your Repositories

The next large part of your profile to think about is the repositories that get displayed. By default, GitHub will show the repositories that have the most watchers. If you’re lucky, these will be the repositories you want to show off to your potential audience, but the good news is you don’t need to leave this to luck!

You can choose which repositories appear here, by pinning them. You can select up to six, and they can be a mixture of your own repositories, and repositories you have contributed to.

It is worth spending some time tidying up your pinned repositories so that they make the best possible impression on a viewer. You can change the position they appear in by dragging and dropping them. When you click into each repository, you can add a short description that will be visible on your profile, so you want to add something that tells them a little about the project and piques their interest.

Make sure they all have a README file, and that the README file is relevant and up to date. Some frameworks will auto-populate a README for you, and while you might want to keep that content for reference, it won’t be as relevant to a viewer as something you write yourself, so insert your own content at the top of the file. Explain what the project is, and how you structured it. Include instructions for how they can get it running locally, if possible. If the project isn’t complete, you can give an overview of your progress, and what you’re planning next. If you were using the project as a learning exercise, include a summary of what you have learned.

You don’t need to worry about going to these extremes for every repository on your account, and you don’t need to go through all of your old repos and delete the old and incomplete ones. In practice, people only pay a lot of attention to your pinned repositories or to ones they have been specifically linked to. If you click into anyone’s history you’ll find abandoned ideas, forks that went nowhere, and half finished daydreams. We all have code skeletons in our GitHub closets!

Your Contributions

Another visually prominent part of the profile page is the contribution graph. It can be very tempting to try to get as much green on the graph as possible, but please, don’t stress about it. The contribution graph is intended to be a fun visual representation of your time on GitHub - not a super accurate and integral part of your coding résumé!

There are all sorts of legitimate reasons to have empty patches on your graph. If your employer uses a different version control system, if you change jobs and your access to work repositories is revoked, or if you take a break from coding for a while for personal reasons, these will all leave gaps in your graph, and it doesn’t make you any less of a coder.

People have also discovered all kinds of fun ways to manipulate the graph to create pixel art or spell out messages, so no serious employer or organization is going to use it to measure your skills or dedication!


Optimizing your profile

OK, now that we are familiar with the parts of the profile that can be customized, we’re ready to start optimizing for specific readers!

Learn what you can about your audience. If you’re looking to work for a company or organization, read their website and see how they present themselves. This isn’t necessarily how they really are, but it is how they want to be seen, and they will appreciate someone that seems to have the same values. They might list some of their developers on their site, or you might be able to find some by searching on LinkedIn or GitHub. Open source organizations also might maintain their own site, or they could exist mainly on GitHub. See how much you can learn about their attitudes and style. If your intended audience is potential clients it can be trickier to research their tastes, but you can look up the profiles of other freelancers operating in the same space - you’ll spot details that look effective in how they present themselves, but you’ll also notice things that you can improve upon and make your own.

Let’s explore some scenarios…

Scenario 1 - I want to work for a big company

I’ve decided I want to work at a long-established Enterprise company with lots of blue chip clients. I’ve looked at their website and they seem to favour a professional and reserved approach.

For my profile picture, I’ll use a photo in which I’m wearing quite formal clothing and looking well groomed. I don’t want to present myself as a freewheeling cyberpunk hacker! Their company blog mentioned a big codebase overhaul is on the cards, so I’m going to set my status to “Thinking about refactoring” to let them know I might be useful to them.

I’ll set my profile name to be my actual first name, so it matches up with the résumé I am going to send them, and in my bio I will mention some previous companies I have worked for. I’ll also disclose my location, because I know they have an office near me and I want them to see that I’m local.

Finally, I’ll make sure the first few pinned repositories on my profile are using the same tech stack as the company, and I’ll also include some repositories that were heavily refactored, and draw attention to that fact in their description and README.

Scenario 2 - I want to work for a startup

Hmmmmm, on second thought, maybe I don’t want to work for a corporation. Maybe a young, hip, and groovy startup would be more fun! After looking at a couple of likely company websites, and doing a little light cyber-stalking of the developers that work at them, I’ve decided I can take a more playful approach.

For my profile picture, I will possibly choose a photo taken during my last snowball fight. You can’t really see my face, but it looks like I’m having fun, and the high contrast between me and the snow means it still looks identifiable even at a tiny size. The other option would be a screengrab from a children’s TV show, as that seems to be a popular choice too. I’ll set my status to “Available to Hire” as it looks like these companies move quickly - I want them to know I can move quickly too.

In my bio I’m going to mention some of the frameworks that I have experience in, that I know these startups favor. I’ll also mention that I love learning new things and adapting to rapid change. I’ll reorder my pinned repos to show how quickly I can learn a new stack, and edit the descriptions to highlight the fact that I went from a “Hello World” project to something much more complex in a matter of weeks.

Scenario 3 - I want to get some gigs for my freelance work

I’m having third thoughts now. Perhaps I’d rather be my own boss! I’ll change my profile to help me get work as a freelancer specializing in web design and front end work.

I’ll swap out my profile picture for a minimalist, though stylish, logo - mostly abstract colors. My status will now read “Frontend project work a speciality”, and I’ll change my screen name to something that sounds more like a design agency than an individual.

I’ll update my bio with some blurb about my passion for good UX and design, and make sure my portfolio website is linked to, and there’s an email address present to make it as easy as possible for clients to contact me. I’ll rearrange my pinned repos to include the GitHub Pages sites I’ve designed for people in the past.

Scenario 4 - I want to join an open source organization

On fourth thought, maybe what I actually want to do is use my skills, and my GitHub profile, to contribute to open source! There are a couple of organizations I have in mind with big presences on the site already, so I will target them.

A lot of the developers in these organizations have vaguely humanoid cartoon animals as their avatars. Whilst I don’t have a picture like that to use, I do have one of me snuggling up with the family cat, so I could use that. Alternatively, unlike the corporation from scenario 1, I think this organization would appreciate a freewheeling cyberpunk hacker, so I could use a picture of me typing on my laptop whilst wearing a ski mask.

I’ll set my status to be “Passionate about Open Source” at a minimum - possibly something more radical! In my bio I will mention my commitment to the type of projects I am trying to participate in, and make sure my existing membership to other open source Organizations is public. I’ll also include a link to my StackOverflow profile, where I’ve tried to be helpful and welcoming to everyone I’ve responded to.

I’ll make sure my pinned repositories are showcasing any existing open source contributions I have made, and I’ll thoroughly go through them to ensure they not only have just a good README, but also an open source license, a code of conduct, and a contributing guideline, to show that I understand the importance of community profiles for repositories.


It’s all about the targeting

In conclusion, then, there might be a limited amount of customization you can apply to your GitHub profile - you can’t set a banner image or have an auto-playing theme song - but the customization that you can do can create an effective impression if you target the right audience.

Consider who you’re trying to appeal to. An established multinational corporation, or a hungry and disruptive up and coming startup? A small business looking for their first website or an established brand hoping to give their existing offering a makeover? An open source project focused on social responsibility or one looking to completely obliterate the status quo?

Once you decide on an audience, you can optimize your profile to have the best possible effect on them!

These are not the only scenarios you might decide to target, of course, and there are certainly many more ways you could optimize your profile. If you have some tips, please share them with the community in the comments!


Thank you @yamiacat, for this very in-depth and thoughtful guide! super excited to apply some of these principles to my own profile.


@yamiacat Thanks a lot this is very helpful


@yamiacat Thank you for posting, this is very helpful.

Ok thanks mr, very helpful for us

Thank you I think i understand, I’ll get on it now