A Cloudflare Worker that generates a dynamic SVG bar chart showing the last 7 days of traffic from the Cloudflare Analytics API. Designed for embedding in a GitHub profile README.
Supports two modes:
- Zone mode — tracks HTTP requests for a specific domain using
CF_ZONE_ID - Worker mode — tracks Worker invocations across your account using
CF_ACCOUNT_ID(ideal for Workers on*.workers.devor unbound from a specific zone)
Choose a theme by appending the theme name to your worker URL. The default theme is Neon Terminal.
| Theme | Path | Description |
|---|---|---|
| Neon Terminal | / or /neon |
Dark terminal aesthetic with vertical bar chart, dot grid, glow effects, and Cloudflare Orange |
| Minimal | /minimal |
Clean card with full-width sparkline area chart and emerald accents |
| Gradient | /gradient |
Vibrant gradient background with horizontal daily breakdown bars (cyan-to-purple) |
Vertical bar chart with a terminal/hacker aesthetic. Monospace fonts, dot grid background, glow effects.
Full-width sparkline area chart with a clean, lightweight card design. Green accent line with shaded area fill.
Horizontal daily breakdown bars with day-of-week labels and per-day request counts. Gradient background with cyan-to-purple bar fills.
All themes automatically adapt to light/dark mode via the prefers-color-scheme media query.
- Fetches the last 7 days of request data from the Cloudflare GraphQL Analytics API
- Displays total requests in compact format (e.g.
2.14M) - Renders a 480×160 SVG chart
- Three distinct UI themes — Neon Terminal (vertical bars), Minimal (sparkline area chart), and Gradient (horizontal daily bars)
- Automatically adapts to light/dark theme via
prefers-color-schememedia query - One-click deploy via the button above
Click the Deploy to Cloudflare Workers button above, or deploy manually:
npm install
npm run deployAfter deploying, set the required secrets. See Generating Secrets below for how to obtain these values.
npx wrangler secret put CF_API_TOKEN
# Then set ONE of the following:
npx wrangler secret put CF_ZONE_ID # for zone-level HTTP traffic
npx wrangler secret put CF_ACCOUNT_ID # for account-level Worker eventsIf both
CF_ZONE_IDandCF_ACCOUNT_IDare set, zone mode takes precedence.
Add the worker URL to your GitHub profile README (or anywhere that renders Markdown).
Default theme (Neon Terminal):
Choose a specific theme:
<!-- Neon Terminal (default) -->

<!-- Minimal Clean -->

<!-- Gradient Modern -->
HTML embed (for more control):
<img src="https://your-worker.your-subdomain.workers.dev/minimal" alt="Cloudflare Usage" width="480" />Bypass cache with ?refresh:
This token allows the worker to read analytics data.
- Log in to the Cloudflare dashboard.
- Click your profile icon (top-right) → My Profile.
- Select the API Tokens tab.
- Click Create Token.
- Under Custom token, click Get started.
- Configure the token:
- Token name: e.g.
cf-usage-graph-read - Permissions:
- For zone mode: select Zone → Analytics → Read
- For worker mode: select Account → Workers Scripts → Read and Account → Analytics → Read
- Zone Resources (zone mode only): choose Include → Specific zone and pick the zone you want to track (or select All zones if you prefer)
- Account Resources (worker mode only): choose Include → your account
- Token name: e.g.
- Click Continue to summary → Create Token.
- Copy the token value — you will not be able to see it again.
The Zone ID identifies which domain's traffic data to query.
- Log in to the Cloudflare dashboard.
- Select the domain (zone) you want to track.
- On the Overview page, scroll down to the right-hand sidebar.
- Under API, copy the Zone ID value.
The Account ID identifies your Cloudflare account for querying Worker invocation data. Use this when your Worker runs on a *.workers.dev subdomain or is not bound to a specific zone.
- Log in to the Cloudflare dashboard.
- On the left sidebar, select Workers & Pages.
- Your Account ID is displayed in the right-hand sidebar.
After you have the required values, store them as Wrangler secrets so they are encrypted and available to the deployed worker:
npx wrangler secret put CF_API_TOKEN
# Paste your API token when prompted
# For zone mode:
npx wrangler secret put CF_ZONE_ID
# Paste your Zone ID when prompted
# For worker mode:
npx wrangler secret put CF_ACCOUNT_ID
# Paste your Account ID when promptedNote: Never commit these values to source control. Wrangler secrets are encrypted at rest and injected into the worker environment at runtime.
npm install # Install dependencies
npm run dev # Start local dev server
npm test # Run tests
npm run deploy # Deploy to Cloudflare WorkersContributions are welcome! Feel free to open an issue or submit a pull request.
This project is open-source. See the repository for license details.