Time progress bars
for _
Paste a single link to render day, month, year, or custom progress as text, SVG, PNG, WebP, or ASCII. Timezone aware, themeable, and updated to the second.
[░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 0.0000%
Everything the endpoint can do
One API, a lot of control. Every option works across the formats it supports.
Live by the second
Day, month, and year bars recompute on every request — no caching staleness, no cron jobs.
5 output formats
Return text, SVG, PNG, WebP, or ASCII from the same endpoint with a single ?format= switch.
11 styles
minimalistic, drawn, cute, futuristic, terminal — plus 6 unicode ASCII styles for plain-text surfaces.
Timezone aware
Pass any IANA timezone like Europe/Lisbon. Falls back to a proxy header, then UTC.
Fully themeable
Override primary, background, and text with hex colors, or go transparent to blend anywhere.
Custom ranges
/progress/custom takes ISO strings or Unix timestamps (seconds or millis) for any project window.
Precision control
Choose 0–6 decimals, custom labels up to 64 chars, LTR/RTL direction, and compact/wide sizing.
No headless browser
Raster images build from an in-memory SVG string straight to sharp — no headless browser step.
Build your embed
Pick the options and copy the snippet. The preview updates live.
[░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 0.00%
https://api.gru0.dev/progress/year?format=ascii&decimals=2<img src="https://api.gru0.dev/progress/year?format=ascii&decimals=2" alt="year progress" />Eleven ways to render
Six ASCII styles for plain-text surfaces, five rendered styles for images. All use a single ?style= parameter.
[░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 0.00%
?format=ascii&style=blocks▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 0.00%
?format=ascii&style=shades⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀ 0.00%
?format=ascii&style=dots▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻▻ 0.00%
?format=ascii&style=arrows-------------------------------------- 0.00%
?format=ascii&style=line▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 0.00%
?format=ascii&style=mosaicEndpoints & parameters
Four endpoints, eleven parameters. Cross-format combinations (an SVG style with the ascii format) return a clean 400.
/progress/day/progress/month/progress/year/progress/customcurl "https://api.gru0.dev/progress/day?tz=Europe/Lisbon&decimals=3"
# → 65.123tzAny IANA timezone (Europe/Lisbon)proxy header → UTCformattext · svg · png · webp · asciitextstyleminimalistic, drawn, cute, futuristic, terminal, blocks, shades, dots, arrows, line, mosaicminimalistic (blocks for ascii)decimals0 – 60labelCustom text (max 64 chars)auto-generatedsizecompact · default · widedefaultdirectionltr · rtlltrtransparenttrue to drop the backgroundfalseprimary6-digit hex bar fill (ff0000)style gradientbg6-digit hex backgroundstyle-dependenttext6-digit hex text colorstyle-dependentThree ways to drop it in
curl https://api.gru0.dev/progress/day?decimals=3
# → 65.123npm install
npm run devSet it up with AI in one paste
Drop this into Claude, Codex, Cursor, or any coding agent. It will ask you and generate the exact embed for your site.
I need a progress bar on my site using https://api.gru0.dev.
Endpoints: GET /progress/{day,month,year,custom}
Custom requires ?start=DATE&end=DATE.
Formats:
- text → bare number (65.12)
- svg/png/webp → inline SVG or raster image
- ascii → unicode bar (64.00%)
Default is text. Default style is minimalistic for images, blocks for ascii.
Styles:
- svg/png/webp: minimalistic, drawn, cute, futuristic, terminal
- ascii: blocks, shades, dots, arrows, line, mosaic
Parameters: tz (IANA timezone), decimals (0-6), style.
Cross-format styles (e.g. SVG style with ascii format) return a 400 error.
Ask me: (1) image, raw text, or ASCII bar? (2) if image: which style? (3) if ASCII: which style? (4) timezone, decimals, or custom range? Then generate the embed code.