Skip to main content

GitHub README Badge Generator — shields.io-style, 50+ presets, Markdown/HTML/AsciiDoc/RST output

GitHub README badge generator — shields.io-style badges, 50+ presets (build/version/license/coverage/etc), custom labels, copy as Markdown/HTML/AsciiDoc/RST.

  • Runs locally
  • Category Generator
  • Best for Starting from a blank page without committing to the first result.
build: passing
Presets
Output
markdown
![build: passing](https://img.shields.io/badge/build-passing-brightgreen.svg?labelColor=555555)
html
<img src="https://img.shields.io/badge/build-passing-brightgreen.svg?labelColor=555555" alt="build: passing">
asciidoc
image:https://img.shields.io/badge/build-passing-brightgreen.svg?labelColor=555555[build: passing]
rst
.. image:: https://img.shields.io/badge/build-passing-brightgreen.svg?labelColor=555555
   :alt: build: passing
Batch mode
One badge per line as `label|message|color`. Lines starting with # are comments.
Batch output
build: passing![build: passing](https://img.shields.io/badge/build-passing-brightgreen.svg?labelColor=555555)
license: MIT![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg?labelColor=555555)
coverage: 95%![coverage: 95%](https://img.shields.io/badge/coverage-95%-brightgreen.svg?labelColor=555555)

What this tool does

Generate shields.io-style status badges for your GitHub README entirely in your browser — no calls to shields.io, no signups, no rate limits. Five visual styles (for-the-badge, flat, flat-square, plastic, social) match what shields.io itself renders, so badges you generate here drop into a README next to ones from the live service without a style mismatch. 50+ presets cover the badges you actually see in open-source READMEs — build/passing, version/v1.0.0, license/MIT, coverage/95%, npm/downloads, GitHub/stars, plus 20 brand icons (GitHub, npm, Docker, AWS, Discord, Slack, Twitter and more) embedded inline from Simple Icons. Customize label, message, left and right colors, link URL, and the SVG renders live. Copy in four formats: Markdown `![]()` for READMEs, HTML `<img>` for blog posts, AsciiDoc for docs, and reStructuredText for Python / Sphinx projects. Batch mode lets you write one badge spec per line and grab all the snippets at once. Everything is computed in 200 lines of JavaScript — including the SVG width estimation (monospace character width × 6.6px) — so the page loads instantly, works offline, and never sends your label or message anywhere.

Tool details

Input
Files + Text
The page exposes text boxes, numeric controls, file pickers, or structured inputs depending on the tool.
Output
Live result + Copy + Preview
The result area focuses on usable output, with copy, download, or preview actions when supported.
Privacy
Browser-side processing
The main tool logic does not call an external API, so inputs normally stay in the current tab.
Save / share
Shareable URL state
Key settings are encoded in the URL so another person can reopen the same setup.
Performance budget
Initial JS <= 50 KB
No WASM budget is declared, keeping the tool quick to open on mobile.
Best fit
Generator · Developer
Category and role tags drive related tools, internal links, and quick fit checks.

How to use

  1. 1. Input

    Paste or drop your content into the tool panel.

  2. 2. Process

    Click the button. All processing is local in your browser.

  3. 3. Copy / Download

    Copy the result or download to disk in one click.

How GitHub README Badge Generator fits into your work

Use it to get a strong first draft, starter asset, or structured output that you can edit before publishing.

Generation jobs

  • Starting from a blank page without committing to the first result.
  • Creating repeatable drafts, names, templates, or placeholder assets.
  • Exploring options before choosing the one that fits the job.

Generation checks

  • Review generated output before it reaches a customer, page, or document.
  • Change defaults when you need a specific brand voice, format, or audience.
  • Keep only the parts that match the real task.

Good next steps

These links move the current task into a more complete workflow.

  1. 1 Favicon Generator Generate favicon set — text or upload, output 16x16 / 32x32 / 180x180 / 512x512 PNG. Open
  2. 2 QR Code Generator Generate QR codes from text, URL, WiFi or vCard — customize color and size, download as PNG or SVG. Open
  3. 3 Markdown Table Generator Build Markdown tables visually — add/remove rows, column alignment, paste from Excel / CSV — browser-only Open

Real-world use cases

  • Ship a static "License MIT" badge without depending on shields.io

    Your README has eight badges across the top. Three of them never change (license MIT, made-with-typescript, code style prettier). For each shields.io URL in that group, you pay one DNS lookup + one HTTPS round trip per page view, per visitor, and a 503 on shields.io makes your badges show as broken-image icons. Pick the "license MIT" preset, copy the SVG, save it to `assets/badge-license.svg`, and swap the shields.io URL in your README for the relative path. The badge now loads from the same origin as the README, no external dependency, no rate limit.

  • Match shields.io style exactly across a custom + live mix

    Your README has six live badges from shields.io (build, npm version, downloads, etc.) and you want to add a custom "Made by Acme" badge. Generating it elsewhere usually produces a 2-3 pixel height mismatch and a slightly off color — Acme looks "cheap" next to shields.io's row. This tool's `flat` style ships the same 20-pixel height, same Verdana-ish font width, same color palette as shields.io, so your custom badge sits in the row pixel-flush. Use the for-the-badge style if your existing row uses that; mix and match are both fine.

  • Batch-generate 30 badges for a monorepo with one paste

    A monorepo with 30 packages, each needing a "npm @scope/foo v1.x.x" badge plus a "license" badge. Switch to Batch mode, write one badge spec per line in the format `label|message|color`, paste 30 lines, and the tool emits 30 SVGs + 30 Markdown snippets at once. Drop them in the monorepo's docs site or root README in one commit, no per-package round trip.

  • Embed in AsciiDoc / Antora docs for a Java project

    Most Java open-source projects use AsciiDoc (Antora, Asciidoctor) for docs. The shields.io URL works in AsciiDoc but the syntax is `image:url[alt,link=...]` rather than markdown's `![]()`. This tool's AsciiDoc output formats correctly out of the box: `image:badge.svg[License MIT,link=https://...]`. Drop straight into an `index.adoc` or any chapter file; Antora picks it up without you remembering the syntax.

  • Build a "tech stack" row for a personal site without 12 HTTP requests

    Your developer portfolio's homepage lists "Stack:" with 12 brand badges (React, Node, Postgres, Docker, AWS, ...). With shields.io, that's 12 SVG URLs each making a network round trip — visible flicker on slow connections, Largest Contentful Paint penalty in Lighthouse. Use the brand presets here, save 12 SVGs to your `/public/badges/` folder, reference them as local images. LCP drops 200-400ms, Lighthouse Performance score climbs 5-10 points, and the badges still look identical to shields.io.

  • Render reStructuredText badges for a Python package on PyPI

    PyPI's README rendering supports reStructuredText, and most established Python projects (Django, Flask, numpy) use RST. The syntax for a clickable badge in RST is three lines: `.. image::`, `:target:`, `:alt:`. This tool's RST output gets those three lines right, including indentation. Paste into `README.rst`, run `python -m build`, and the badge renders correctly on PyPI's package page — markdown badges silently don't render there.

Common pitfalls

  • Forgetting to URL-encode spaces in your message as `_` (underscore) and underscores as `__` (double underscore). The tool encodes automatically when you click Copy, but if you hand-edit the URL afterwards and add literal spaces, the badge will break on shields.io-style consumers that expect the encoded form.

  • Using bright neon colors for the right (message) block. shields.io's design language uses muted greens (`#4c1` for passing) and reds (`#e05d44` for failing) — bright colors visually scream "this is a custom one-off" and don't sit well next to the rest of your README. Stick to the muted palette unless intentional.

  • Hardcoding GitHub-proxied URLs (`camo.githubusercontent.com/...`) instead of the raw badge URL. GitHub's image proxy rewrites your image src on render, but the camo URL is GitHub-specific — paste it into a non-GitHub README and the image breaks. Always use the original SVG path.

  • Mixing styles within one badge row (for-the-badge next to flat-square). Each style has a different height (28px vs 20px) and the row becomes visually noisy. Pick one style per row.

  • Embedding too many badges. Eight is a soft cap — past that, the badge row pushes your project description below the fold on most screens and visitors bounce before reading what your project actually does.

Privacy

Everything runs in your browser as plain JavaScript: SVG rendering, character-width estimation, color parsing, the Markdown / HTML / AsciiDoc / RST snippet formatters, and the 20 embedded Simple Icons brand SVGs. Your label, message, colors, and link URL are never sent anywhere — not to shields.io, not to Toolora's servers, not to any third party. The URL-shareable state stores label, message, colors, and style so you can share a configured-badge link, but it's still all client-side rendering once the recipient opens the page. Safe to use offline after first load and on an air-gapped machine for badges describing internal repositories.

FAQ

Tool combos

Folks in your role tend to reach for these alongside this tool.

Made by Toolora · 100% client-side · Updated 2026-05-29