Progress bars you can embed anywhere an image works.
Tracker Images are a tool on the Tracker Snap website. Write your goal
into a URL, drop it into any <img> tag or markdown image, and you get a
live SVG tracker — no account, no database, no JavaScript. To update your progress, just
edit the number in the URL.
🛠️ Build your tracker →
Point-and-click form with live preview, copy & download buttons.
Quick start
Prefer not to hand-write URLs? The Tracker Builder does it
for you with a form and live preview. Otherwise, build a URL from key:value
pairs separated by slashes, then use it as an image source:
<img src="https://trackersnap.com/render/title:Read_50_Books/goal:50/current:32/unit:books/">
Or in markdown (notes apps, GitHub READMEs, blogs):

Use underscores for spaces in titles (Read_50_Books → “Read 50 Books”).
All parameters are optional and can appear in any order. When you make progress,
change current:32 to current:33 wherever the image is embedded.
Styles & themes
style:bar (default)style:dots/segments:20style:ringtheme:darktheme:terminalcolor:auto — red → amber → greenDeadlines & pace
Add deadline:YYYY-MM-DD to show a days-left countdown. Add
start:YYYY-MM-DD too and the bar gains a dashed marker showing where
you should be today — at a glance you can see whether you’re ahead of pace
or behind it.
Parameter reference
| Parameter | What it does | Default |
|---|---|---|
title: | Heading text. Underscores become spaces. Emoji welcome (URL-encoded). | My Goal |
goal: | Target number. | 100 |
current: | Current progress. Values past the goal show as >100%. | 0 |
unit: | Unit label after the numbers (pages, km, dollars…). | none |
style: | bar, dots (habit blocks), or ring (donut). | bar |
theme: | light, dark, minimal (no card), or terminal. | light |
color: | Fill color: hex without # (e.g. ff5722), a name (red, orange, amber, yellow, green, teal, blue, indigo, purple, pink, gray, black), or auto to shift red→amber→green with progress. | 4caf50 |
width: | Image width in pixels, 200–800 (ring: 160–400). | 320 |
segments: | Number of blocks for style:dots (2–50). | 10 |
deadline: | YYYY-MM-DD — shows a days-left countdown. | off |
start: | YYYY-MM-DD — with deadline:, draws the expected-pace marker. | off |
label: | Custom caption replacing the “current / goal unit” line. | off |
percent: | hide to remove the percentage. | show |
numbers: | hide to remove the numbers line. | show |
font: | sans, serif, or mono. | per theme |
bg: | Card background color override (hex or named). | per theme |
track: | Empty-bar color override (hex or named). | per theme |
text: | Text color override (hex or named). | per theme |
Tips
- Trackers are stateless — all the data lives in the URL itself. There is nothing to sign up for and nothing stored on our end.
- Images are served with no-cache headers, so an edited URL shows the new value on the next page load.
- They work anywhere images work: notes apps, READMEs, dashboards, blogs, email signatures.
- Combine freely:
/render/title:Marathon_Training/goal:42/current:28/unit:km/style:dots/segments:42/theme:dark/color:auto/
Heads up: anyone with the URL sees the numbers in it, so don’t put anything private in a tracker you embed on a public page.