# md-badges: a curated lookup table for the Markdown badge URLs you keep rewriting

> A Markdown list with no code in it at all, sorted into forty five categories, where each row shows a rendered badge beside the exact markdown that produces it, plus a tip to press Ctrl+F rather than scroll.

**inttter/md-badges** — An extensive list of Shields.io badges.

- Repository: https://github.com/inttter/md-badges
- Website: https://inttter.github.io/md-badges/
- Stars: 2,158 · Forks: 150
- Language: Markdown
- License: MIT
- Published: 2026-10-06 · Updated: 2026-10-06 · Language: en
- Canonical page: https://hysenlabs.com/projects/inttter-md-badges

## A repository whose entire payload is one README

The tree at the root of md-badges contains eight entries and nothing that executes. There is a `README.md`, a `LICENSE`, a `CONTRIBUTING.md`, a `CODE_OF_CONDUCT.md`, a `_config.yml` for the hosted preview, and `.github/`, `.vscode/` and `.gitattributes` for tooling. The detected language is Markdown. There are no releases and no example scripts.

The README itself describes the project in one line as an extensive list of static Shields.io badges, sorted by category, and the project description field says the same thing with less punctuation. The GitHub description is accurate to the point of being a full specification.

With roughly 2,150 stars and 150 forks, this is one of the more-starred repositories whose value is entirely editorial. That is not a criticism, because a badge list is genuinely hard to hold in your head and genuinely tedious to search for. But it does mean the interesting questions are all about curation policy and format choices rather than about behaviour, since there is no behaviour.

## Forty five categories, from API Development to Virtual Reality

The table of contents at the top of the README runs to forty five entries, and the category names are a reasonable taxonomy for a software developer's public profile. The first block covers API Development, App Store, Artificial Intelligence, Blog, Browser and CI, then Cloud Storage, Cloud System, Code Coverage, Code Editor, Code Linter and Code Type Checker. The middle runs through Collaboration Tool, Cryptocurrency, Database, Data Science, Delivery, Design, Documentation, Education, Funding, Framework, Game Engine, Gaming Platform, Gaming Storefront and Job. The tail covers Licenses, Microcontroller, Monitoring, Operating System, ORM, Package Manager, Payment, Process Manager, Programming Language, Review, Search Engine, Social Media, Sound, Static Site, Streaming, Terminal, URL Shortener, Version Control and Virtual Reality.

The sorting is by what the badge signifies rather than by vendor, which is why Database and ORM are separate entries and why Cloud Storage and Cloud System are separate despite sounding like the same thing. That granularity is the useful part. Someone looking for a database badge does not have to know whether they want PostgreSQL, MySQL or SQLite, because the category answers the question one level above the vendor name.

Two things stand out as omissions worth noting rather than complaints. There is no category for plain text formatting tools, and there is no entry for a personal blog hosting platform other than the generic Blog category. For a list this size, the coverage is broad enough that the gaps are the kind you only notice while looking for a specific badge.

## Every row pairs a rendered image with its markdown

The table format is the whole design decision. Each category section is a two column table headed Preview and Markdown Code. The left column is the badge rendered as an image, the right column is the same badge as inline code that you can copy. Because the right column is inline code rather than a fenced block, the raw markdown survives GitHub's own rendering intact.

The URL shape is consistent enough to learn. Most rows point at `img.shields.io/badge/` with a label, a hex colour, and then query parameters for the logo and its colour. Spacing follows one rule: a space in the label becomes a separator character, which is why the App Store entry reads `App_Store` and the Chrome Web Store entry reads `Chrome_Web_Store`, while single-word labels like Flathub and Snapcraft carry no separator at all.

The hex colours are where the curation shows. Postman is FF6C37, Kong is 003459, Swagger is 85EA2D with a darker 173647 logo colour, F-Droid is #11AB00, and Claude is D97757. Where a badge needs a dark logo on a light background, the table sets logoColor to white, and where the brand mark is light, it uses 000. These are small decisions, but they are the difference between a badge that looks deliberate and one that looks like a default fallback.

## Not every badge actually comes from Shields.io

This is the detail worth catching before you build a README full of these. The README describes the project as a list of Shields.io badges, but a number of rows point somewhere else. Uptodown, ChatGPT and Firebase Studio all resolve to `custom-icon-badges.demolab.com` rather than `img.shields.io`, while Claude, Deepseek, GitHub Copilot, Google Assistant and Hugging Face use the usual Shields.io host.

The reason is visible in the pattern if you look at which brands go where. Shields.io draws its logos from the Simple Icons set, and a brand missing from that set has to come from a different service. ChatGPT pointing at a custom icon service and Claude pointing at Shields.io in the same Artificial Intelligence table is a good illustration, since Claude's mark is in Simple Icons and OpenAI's newer one is not.

The practical implication is small but real. Rows using the custom service depend on a third-party host staying up, and if you are scanning a dependency list for supply chain reasons or working offline, those images are a different trust story from the rest. If you care about uniformity, prefer the rows on the Shields.io host, or download the few custom ones and self host them.

## Search is delegated to the browser's find function

The README's only usability guidance is a tip telling you to press Ctrl+F to quickly search for and find a badge. There is no filter box, no generator, and no structured data file. The `_config.yml` exists to publish the README as a GitHub Pages site at inttter.github.io/md-badges, which is where most people actually read it, and each section ends with a right aligned Back To Top link pointing at the table of contents.

That navigation design is doing real work. Forty five categories in a single page would otherwise be unusable, and the combination of a linked table of contents, per-section back-to-top links and browser find covers the three ways a person looks for a specific badge. It is an honest solution for a static document, and it is also the ceiling of what this project can do.

If you need to find badges by vendor name rather than category, Ctrl+F on the rendered page still works because the label text appears in both the preview and the markdown column. What you cannot do is filter out the categories you never use, which is the main reason a personal README ends up with a badge wall rather than a considered set.

## A list that depends on its upstream for accuracy

Every badge here is an image fetched from someone else's server at render time, which means this list cannot be right forever without maintenance. Brand colours change, logos get added to Simple Icons and disappear from it, and Shields.io's URL scheme can evolve. A curated list of that kind needs someone watching those upstream changes.

The repository shows a modest but real level of upkeep. The last push was 2026-09-13, the project is not archived, and it carries both a `CONTRIBUTING.md` and a `CODE_OF_CONDUCT.md`, which is the minimum expected of a list that other people submit entries to. There is a single open issue, against a repository with more than 2,000 stars, and there are no releases because there is nothing to version: the README is the product and it lives on the default branch.

So the honest summary is that md-badges is a well organised, well maintained reference document with no software in it, published under the MIT license, and most useful for the twenty minutes you spend picking the first three badges for a new README. After that you have all the information you need and no reason to keep the page open.

## Conclusion

What md-badges actually saves you is the fiddly part of badge URLs: the hex colour, the logo parameter and the logoColor parameter, and the fact that a space becomes an underscore. Every one of those is decided once in the table so you can copy a working string instead of reconstructing one. It is worth knowing that the list is not purely Shields.io, since some rows point at custom-icon-badges.demolab.com when a brand logo is not in the Simple Icons set, and that matters if you care about which host serves the image. What the repository does not offer is search beyond the browser's find function, a generator, or a structured export, so if you need to query badges programmatically you are back to scraping the table. Start with the hosted preview at inttter.github.io/md-badges, copy from the Markdown Code column rather than the rendered image, and pick a neutral background colour that does not fight your README theme.

## FAQ

### What is md-badges and how do I use it?

It is a Markdown list of Shields.io badges sorted into forty five categories, with each row showing a rendered badge beside the exact markdown that produces it. Open the README on GitHub or the hosted preview at inttter.github.io/md-badges, use Ctrl+F to find what you need, then copy from the Markdown Code column rather than copying the rendered image.

### Do all the badges in md-badges come from Shields.io?

No, and that is worth knowing before you rely on them. Several rows, including ChatGPT, Firebase Studio and Uptodown, point at custom-icon-badges.demolab.com instead of img.shields.io, typically because the brand logo is not in the Simple Icons set that Shields.io draws from. Those images depend on a third-party host rather than the service you expect.

### Why do badge labels replace spaces with a separator character?

Because a space cannot go in a URL path segment, and the badge URL format this list uses encodes spaces as a separator character. That is why the App Store entry reads App_Store and the Chrome Web Store entry reads Chrome_Web_Store, while single word labels like Flathub and Snapcraft carry no separator at all.

### Is there a search or generator tool for these badges?

No. The project ships a single README with no generator, no filter and no structured export, and its only search guidance is to press Ctrl+F in your browser. If you need to query badges programmatically you would have to parse the table yourself.

### How many badges and categories does md-badges list?

The table of contents runs to forty five categories, spanning API Development, App Store and Artificial Intelligence at the start through Programming Language, Social Media, Terminal, Version Control and Virtual Reality at the end. Each category is a table pairing a preview column with a markdown code column.

## Sources

- [inttter/md-badges on GitHub](https://github.com/inttter/md-badges)
- [Issues](https://github.com/inttter/md-badges/issues)
- [License: MIT](https://github.com/inttter/md-badges/blob/main/LICENSE)
- [Project website](https://inttter.github.io/md-badges/)
- [README](https://github.com/inttter/md-badges/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/inttter-md-badges
