Markdown Badges: Shields.io Guide with Copy-Paste Examples

How to add status, version, license, and tech stack badges to your README

What Are Markdown Badges?

Badges are small status images you see at the top of many README files: build passing, latest version, license, supported language. They are not a special Markdown feature. A badge is a regular Markdown image whose URL points to a service that generates the picture on the fly. The most popular service is shields.io.

The basic syntax is the standard image syntax with a shields.io URL:

buildpassinglicenseMITplatformmacOS
![alt text](https://img.shields.io/badge/LABEL-MESSAGE-COLOR)

The URL has three parts separated by dashes: the label (left side), the message (right side), and the color. The alt text is what screen readers announce and what shows if the image fails to load, so make it meaningful.

Basic Badge Syntax

Every static shields.io badge follows the same pattern. Break it down:

LABELMESSAGE
https://img.shields.io/badge/LABEL-MESSAGE-COLOR
PartWhere it appearsExample
LABELLeft side, dark greybuild
MESSAGERight side, coloredpassing
COLORBackground of the right sidebrightgreen or 4c1

A complete example, with its rendered look:

buildpassing
![Build](https://img.shields.io/badge/build-passing-brightgreen)

Special characters in labels

Because the dash separates the parts, a few characters need escaping inside the label or message:

You wantWrite
A space_ or %20
A literal dash--
A literal underscore__
releasev1.0-beta
build statusall green
![Version](https://img.shields.io/badge/release-v1.0--beta-orange)
![Status](https://img.shields.io/badge/build_status-all_green-brightgreen)

Static Badges

Static badges show text you write yourself. Use them for anything that does not change often: project status, supported platforms, or a license. Change the last part of the URL to change the color. Named colors and hex codes (without the #) both work.

statusactivecoverage92%docsin progressreleasebeta
buildfailingplatformmacOSmaintenancearchived
![Status](https://img.shields.io/badge/status-active-brightgreen)
![Coverage](https://img.shields.io/badge/coverage-92%25-green)
![Docs](https://img.shields.io/badge/docs-in_progress-yellow)
![Beta](https://img.shields.io/badge/release-beta-orange)
![Build](https://img.shields.io/badge/build-failing-red)
![Platform](https://img.shields.io/badge/platform-macOS-blue)
![Archived](https://img.shields.io/badge/maintenance-archived-lightgrey)

The named colors at a glance:

NamePreviewTypical use
brightgreencolorbrightgreenPassing, active, success
greencolorgreenGood, stable
yellowcoloryellowWarning, in progress
orangecolororangeBeta, caution
redcolorredFailing, deprecated
bluecolorblueInformational, platform
lightgreycolorlightgreyInactive, neutral

For a custom color, use a six-digit hex code without the hash: https://img.shields.io/badge/brand-MDViewer-8A2BE2.

Dynamic Badges

Dynamic badges ask shields.io to look up live data, so the badge updates itself when your package version, star count, or CI result changes. Replace the uppercase placeholders with your own values.

npm version

npmv10.2.0
![npm](https://img.shields.io/npm/v/PACKAGE)

GitHub stars

stars1.2k
![GitHub stars](https://img.shields.io/github/stars/USER/REPO)

License

licenseMIT
![License](https://img.shields.io/github/license/USER/REPO)

Build status (GitHub Actions)

buildpassing
![Build](https://img.shields.io/github/actions/workflow/status/USER/REPO/WORKFLOW.yml)

Other common dynamic patterns follow the same shape: /github/v/release/USER/REPO for the latest release, /github/last-commit/USER/REPO for the last commit date, and /pypi/v/PACKAGE for a Python package. The previews above use sample values. Real badges show your project’s live data.

Badge Styles

Add ?style=NAME to the end of the URL to change the look. The default is flat. Available styles are flat, flat-square, plastic, for-the-badge, and social.

styleflat
styleflat-square
styleplastic
stylefor-the-badge
![flat](https://img.shields.io/badge/style-flat-blue)
![flat-square](https://img.shields.io/badge/style-flat--square-blue?style=flat-square)
![plastic](https://img.shields.io/badge/style-plastic-blue?style=plastic)
![for-the-badge](https://img.shields.io/badge/style-for--the--badge-blue?style=for-the-badge)
![social](https://img.shields.io/badge/style-social-blue?style=social)

Pick one style and use it for every badge in the file. Mixed styles look messy. For multiple parameters, join them with &, for example ?style=flat-square&logo=python&logoColor=white.

Adding Logos

Shields.io can embed a brand logo on the left side of any badge using the logo parameter. Logos come from the Simple Icons set. Use logoColor to change the icon color. White works well on dark and colored backgrounds.

Python
![Python](https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white)

Common logo names to use with ?logo=:

TechnologyLogo name
Pythonpython
JavaScriptjavascript
TypeScripttypescript
Reactreact
Node.jsnodedotjs
Dockerdocker
AWSamazonaws
GitHubgithub

Logo availability depends on the current Simple Icons release. If a logo does not show, search for the exact name on simpleicons.org. Some brand logos have been removed over time.

Tech Stack Badges

A tech stack row tells visitors what your project is built with. Here is a copy-paste collection for popular technologies. Each badge uses a brand color with a matching logo. Keep only the ones that apply to your project.

PythonJavaScriptTypeScriptReactNode.jsDockerPostgreSQLSwiftRustGoGitGitHubMarkdownVue.jsLinux
![Python](https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white)
![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)
![React](https://img.shields.io/badge/React-20232A?logo=react&logoColor=61DAFB)
![Node.js](https://img.shields.io/badge/Node.js-339933?logo=nodedotjs&logoColor=white)
![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker&logoColor=white)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?logo=postgresql&logoColor=white)
![Swift](https://img.shields.io/badge/Swift-F05138?logo=swift&logoColor=white)
![Rust](https://img.shields.io/badge/Rust-000000?logo=rust&logoColor=white)
![Go](https://img.shields.io/badge/Go-00ADD8?logo=go&logoColor=white)
![Git](https://img.shields.io/badge/Git-F05032?logo=git&logoColor=white)
![GitHub](https://img.shields.io/badge/GitHub-181717?logo=github&logoColor=white)
![Markdown](https://img.shields.io/badge/Markdown-000000?logo=markdown&logoColor=white)
![Vue.js](https://img.shields.io/badge/Vue.js-4FC08D?logo=vuedotjs&logoColor=white)
![Linux](https://img.shields.io/badge/Linux-FCC624?logo=linux&logoColor=black)

Put them on consecutive lines or on a single line separated by spaces. Both render as a row. For a different technology, swap the name, the hex color (look up the brand color on simpleicons.org), and the logo value.

The previews on this page are simplified drawings that show colors and layout. Real shields.io badges also include the logo and are rendered by shields.io.

Social Badges

Social badges link to your profiles. To make any badge clickable, wrap the image syntax in a link. The format is [![alt](badge-url)](link-url).

Twitter / X
[![Twitter](https://img.shields.io/badge/Twitter-000000?logo=x&logoColor=white)](https://x.com/USERNAME)

Here is a ready-made set for the most common profiles. Replace the placeholders with your own handles and URLs.

TwitterLinkedInYouTubeWebsite
[![Twitter](https://img.shields.io/badge/Twitter-000000?logo=x&logoColor=white)](https://x.com/USERNAME)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0A66C2?logo=linkedin&logoColor=white)](https://www.linkedin.com/in/USERNAME)
[![YouTube](https://img.shields.io/badge/YouTube-FF0000?logo=youtube&logoColor=white)](https://www.youtube.com/@CHANNEL)
[![Website](https://img.shields.io/badge/Website-4285F4?logo=googlechrome&logoColor=white)](https://example.com)

Shields.io also has a live social style for follower counts on some platforms. For example, https://img.shields.io/github/followers/USER?style=social shows your GitHub follower count.

Best Practices

  • Group badges logically. Put status badges (build, coverage) together, then version and license, then tech stack and social links on separate lines.
  • Do not overdo it. Five to ten badges in a row is plenty. A wall of badges hides the information people actually need.
  • Use one consistent style. Pick flat, flat-square, or for-the-badge and apply it to every badge.
  • Keep them up to date. Prefer dynamic badges for versions and build status. A stale static badge that says “passing” is worse than no badge.
  • Write useful alt text. ![Build status](...) is better than ![badge](...) for accessibility and for when images fail to load.
  • Link badges where it helps. Wrap a build badge in a link to your CI page and a license badge in a link to your LICENSE file.

FAQ

How do I add a badge to my GitHub README?

Add an image line to your README.md with the shields.io URL, for example ![Status](https://img.shields.io/badge/status-active-brightgreen). GitHub renders it as a badge when the README is displayed. To make it clickable, wrap it in a link: [![Status](badge-url)](link-url).

How do I change the color of a shields.io badge?

For static badges, change the last part of the URL: .../status-active-brightgreen becomes .../status-active-red. You can use a named color (brightgreen, green, yellow, orange, red, blue, lightgrey) or a hex code without the #. For dynamic badges, add ?color=blue to the end of the URL. Use ?labelColor=black to change the left side.

Can I create custom badges with my own text?

Yes. Use the static format https://img.shields.io/badge/LABEL-MESSAGE-COLOR and fill in your own text. Use an underscore or %20 for a space, -- for a literal dash, and __ for a literal underscore. No account or API key is needed.

Preview Your Markdown with MDViewer

MDViewer is a native macOS app for reading and previewing Markdown files. Double-click any .md file in Finder and see it rendered instantly — headings, tables, code blocks, images, and more. Lite is free; Pro adds editing, Git history, and PDF export.

Download MDViewer

Requires macOS 13.0 or later. Intel and Apple Silicon.