Mark

Docs

Every Mark image is a URL. Put it in an <img> or Markdown image and it renders, with no install, no account and no token. Build one visually in the studio, or use the reference below.

Quick start

  1. Pick a URL below or build one in the studio.
  2. Paste it into your README as ![](URL).
  3. Commit. GitHub renders it.
Aurora banner reading Hello, README
![](https://mark.sylphx.com/api/v1/mark/hero.svg?type=aurora&theme=dark&text=Hello%2C%20README&desc=One%20URL%2C%20one%20image&animation=none)

Badge: /badge/{label}-{message}-{color} and /static/v1

Uses shields.io static-badge syntax: -- is a dash, __ is an underscore, _ is a space, and {message}-{color} alone drops the label.

ParamValuesDefault
text, descTitle and subtitle. Use -nl- for a new line.—
typeStyle: waving aurora mesh spotlight grid minimal terminal transparentwaving
themedark light ocean sunset forest grape mono paperdark
colorOne colour, or gradient stops like 0:0F172A,50:5B8CFF,100:FF8A3D (used when no theme is set; a dark first stop becomes the background). gradient picks a theme from the text.—
layoutdefault (centered) leftdefault
animationambient (the light drifts) fade rise type (play once) noneambient
fontsans monosans
width, heightPixels, up to 1600 × 900. Type scales with the canvas (1280×640 makes a social preview).880, 220
Build passing badge
![](https://mark.sylphx.com/badge/build-passing-brightgreen.svg)
Made with Rust badge
![](https://mark.sylphx.com/badge/made_with-Rust-dea584.svg?style=for-the-badge&logo=rust)

Score: /api/v1/mark/score

label, value, max (default 100), style, logo, color (overrides the automatic grade), theme.

A progress ring and automatic color grading (red → bright green) from value and max.

Coverage score 74
![](https://mark.sylphx.com/api/v1/mark/score.svg?label=coverage&value=74)

Typing text: /typing

The same parameters as readme-typing-svg: lines (separated by ;), font, weight, size, color, background, center, vCenter, multiline, width, height, duration, pause, repeat, random, letterSpacing, separator, plus caret (default true; caret=false drops the blinking caret). Under prefers-reduced-motion the image shows the fully typed first line instead of moving.

Typing text
![](https://mark.sylphx.com/typing.svg?lines=Hi%20there;Welcome%20to%20my%20README&center=true&width=520&height=50)

Tech icons: /icons

i (or icons): comma-separated skill-icons ids or Simple Icons slugs. theme is dark or light. perline is 1–50 (default 15). The native row is /api/v1/mark/strip?icons=….

3,400+ Simple Icons brands and every skill-icons id.

Tech icons: Rust, TypeScript, React, Docker, Postgres
![](https://mark.sylphx.com/icons.svg?i=rust,ts,react,docker,postgres)

GitHub cards

github-readme-stats parameters: username, theme, show_icons, hide, hide_title, hide_rank, hide_border, border_radius, title_color, text_color, icon_color, bg_color, border_color, custom_title, card_width, layout (normal compact donut donut-vertical pie), langs_count, exclude_repo. The native routes are /api/v1/card/{stats|langs|streak|repo|stars}. Trophies (/trophy, or /?username=) take github-profile-trophy's theme, column, row, margin-w, margin-h, no-bg, no-frame, title and rank.

Live cards are cached on the server (about 4 hours) and at the edge. They are served stale while they refresh, and stale when GitHub is unavailable.

GitHub stats card
![](https://mark.sylphx.com/api/v1/card/stats.svg?username=torvalds&show_icons=true&theme=tokyonight)
Top languages card
![](https://mark.sylphx.com/api/top-langs.svg?username=torvalds&layout=compact&theme=tokyonight)
Streak card
![](https://mark.sylphx.com/streak.svg?user=torvalds&theme=dark)
Pinned repository card
![](https://mark.sylphx.com/api/pin.svg?username=torvalds&repo=linux)
Trophy card
![](https://mark.sylphx.com/trophy.svg?username=torvalds&theme=tokyonight)

Live badges

SourcePaths
GitHub/github/{stars,forks,license,last-commit}/{owner}/{repo}, /github/v/release/{owner}/{repo}, /github/actions/workflow/status/{owner}/{repo}/{file} (?branch=, ?event=)
npm/npm/{v,dm,dw,dt,l}/{package} (scoped too)
pub.dev/pub/{v,likes,points,dm}/{package}
Packagist/packagist/{v,dm,dd,dt}/{vendor}/{package}
Bundlephobia/bundlephobia/{min,minzip}/{package}
Chrome Web Store/chrome-web-store/{v,users,rating,stars,rating-count}/{id}
GitHub stars badge
![](https://mark.sylphx.com/github/stars/SylphxAI/readme-mark.svg)
npm version badge
![](https://mark.sylphx.com/npm/v/react.svg)
npm weekly downloads badge
![](https://mark.sylphx.com/npm/dw/react.svg)

Star history: /svg

![](https://mark.sylphx.com/svg?repos=owner/repo&theme=dark)

A star-history.com URL works with only the host changed. GitHub shares star dates only with the people who can manage a repository, so the chart draws a curve for repositories Mark's server can read; for any other repository it shows today's total.

Profile card and deploy badge

/api/v1/mark/profile?text=Name&desc=Tagline, with theme, color, type (an art background), width and height.

/api/v1/mark/deploy?service=name renders a "deployed on Sylphx" badge.

Profile card for Ada Lovelace
![](https://mark.sylphx.com/api/v1/mark/profile.svg?text=Ada%20Lovelace&desc=Analytical%20engines%20and%20poetry&theme=grape)

Switch by changing the host

Mark reads the URL formats you already use. Keep the path and query, change the host:

You haveChange it to
img.shields.io/badge/build-passing-brightgreenmark.sylphx.com/badge/build-passing-brightgreen
img.shields.io/github/stars/owner/repomark.sylphx.com/github/stars/owner/repo
img.shields.io/npm/v/packagemark.sylphx.com/npm/v/package
capsule-render.vercel.app/api?type=waving&text=Himark.sylphx.com/api?type=waving&text=Hi
skillicons.dev/icons?i=rust,tsmark.sylphx.com/icons?i=rust,ts
readme-typing-svg.demolab.com?lines=Hello;Worldmark.sylphx.com/?lines=Hello;World
github-readme-stats.vercel.app/api?username=youmark.sylphx.com/api?username=you
github-readme-stats.vercel.app/api/top-langs?username=youmark.sylphx.com/api/top-langs?username=you
github-readme-stats.vercel.app/api/pin?username=you&repo=rmark.sylphx.com/api/pin?username=you&repo=r
streak-stats.demolab.com?user=youmark.sylphx.com/?user=you
github-profile-trophy.vercel.app/?username=youmark.sylphx.com/?username=you
api.star-history.com/svg?repos=owner/repomark.sylphx.com/svg?repos=owner/repo

Speed and reliability

Append .svg to any image path and it is served from the edge cache. Static images are immutable and cache for a year; live cards refresh about every four hours, are served stale while they refresh, and stay up when the upstream service is down. Every response has a strong ETag and answers If-None-Match with 304. Unknown parameters fall back to defaults, so a Mark URL never shows a broken image.

For tools and agents

GET /api (with no image query) returns the JSON endpoint index; GET /api/v1/catalog returns every form, style, theme, icon id and limit; GET /health returns the deployed revision.

  • /api/v1/mark
  • /api/v1/mark/{form}
  • /badge/{label}-{message}-{color}
  • /icons?i={ids}
  • /typing?lines={a};{b}
  • /?lines={a};{b}
  • /api?type={art}&text={text}
  • /static/v1
  • /api/v1/card/{stats|langs|streak|repo|stars}?username=
  • /api?username=
  • /api/top-langs?username=
  • /api/pin?username=&repo=
  • /streak?user=
  • /trophy?username=
  • /github/{stars|forks|license|last-commit}/{owner}/{repo}
  • /github/v/release/{owner}/{repo}
  • /npm/{v|dm|dw|dt|l}/{package}
  • /github/actions/workflow/status/{owner}/{repo}/{file}
  • /pub/{v|likes|points|dm}/{package}
  • /packagist/{v|dm|dd|dt}/{vendor}/{package}
  • /bundlephobia/{min|minzip}/{package}
  • /chrome-web-store/{v|users|rating|stars|rating-count}/{id}
  • /svg?repos={owner}/{repo}
  • /api/v1/catalog
  • /health

Fair use

Free for every README and site. Automated bulk traffic is not; see the acceptable use policy.