Daily snapshots of public certificate data from the OffSec global leaderboard, covering Taiwan (TW) and countries worldwide. Explore holder counts, historical trends, country rankings, and an interactive globe on GitHub Pages. The site pre-renders its main statistics as HTML so search engines can read them without running JavaScript.
This chart is regenerated by the daily update workflow and shows the five certificates with the most holders in the latest Taiwan snapshot:
Historical data collection began on 2026-09-29. The chart will grow as new snapshots are added.
- Collect Taiwan leaderboard data and count accounts listing each certificate.
- Fetch the global leaderboard page by page and aggregate account and certificate counts by country. Global snapshots are stored separately in
data/global-snapshots.json. - Explore global counts on an interactive, rotatable globe. Select a country or a specific certificate to update the map and rankings.
- Find a country or region by name and view its account, certificate, and global-rank details.
- List accounts with no country set separately, and explain why profile-based country totals may differ from the actual distribution.
- View Taiwan account totals, accounts with at least one certificate, certificate counts, and holder trends.
- Browse public certificate badges and holder counts.
- See a podium of the three Taiwan leaderboard accounts listing the most certificates.
- Switch the global page between English, Traditional Chinese, and Japanese.
- Preselect a country from the visitor's IP address on the global page. The lookup uses ipapi.co, which receives the visitor's public IP; a manual selection is never overwritten.
- Store daily snapshots in Taipei time. Rerunning a workflow on the same day updates that day's snapshot instead of creating a duplicate date.
- Keep all history in Git without a database or API key.
data/snapshots.json stores Taiwan history. data/global-snapshots.json stores global and country-level aggregate history; it does not store account-level records. The scheduled GitHub Actions workflow updates both files, regenerates assets/certificate-trends.svg from Taiwan history, and commits the results. GitHub Pages then deploys the Taiwan and global pages.
The first snapshot was collected on 2026-09-29 (Taipei time). Each successful run adds or updates the snapshot for that date.
- Push the project to the
mainbranch of a GitHub repository. - In Settings → Pages, set the deployment source to GitHub Actions.
- In Settings → Actions → General → Workflow permissions, enable Read and write permissions so the scheduled workflow can commit snapshots.
- Push to
mainto run theDeploy to GitHub Pagesworkflow. Successful data updates also trigger a new deployment.
The site URL is usually https://<GitHub account>.github.io/<repository name>/. The exact URL appears under Settings → Pages.
.github/workflows/daily-update.yml runs twice daily at 08:00 and 20:00 Asia/Taipei. It can also be started manually from the repository's Actions page. Each run:
- Fetches Taiwan's all-time leaderboard and paginates through the global all-time leaderboard.
- Aggregates certificate holders, country counts, and the Taiwan accounts listing the most certificates.
- Updates and commits the current day's Taiwan and global snapshots.
- Triggers a GitHub Pages deployment that renders both pages,
sitemap.xml, androbots.txt.
Global snapshots use the successfully fetched, deduplicated accounts as their counts and also retain the total reported by the API. This makes it possible to review count differences caused by leaderboard changes during pagination.
python3 scripts/update_data.py
python3 scripts/update_global_data.py- Taiwan data comes from the public OffSec global leaderboard API filtered by
countryCode=TW. Global data uses the same API without a country filter. Both usetimeFilter=ALL_TIME. - Counts represent leaderboard accounts that list a certificate in the
credentialsfield. They are not an official OffSec count of unique certificate holders. - An account may list multiple certificates, so the sum of per-certificate counts can exceed the number of accounts with at least one certificate.
- Changes to leaderboard membership, profile country settings, or API fields can affect daily counts.
- The global leaderboard may change while its pages are being fetched. Each snapshot also records the total reported by the API so it can be compared with the deduplicated account count.
- The API is undocumented. Changes to its response format may require updates to the collection workflow.
.
├── .github/workflows/
│ ├── daily-update.yml # Fetches data and commits daily snapshots
│ └── pages.yml # Deploys the GitHub Pages site
├── data/snapshots.json # Taiwan history
├── data/global-snapshots.json # Global and country aggregate history
├── assets/certificate-trends.svg # Daily trend chart embedded above
├── scripts/update_data.py # Taiwan API collection and aggregation
├── scripts/update_global_data.py # Global pagination and country aggregation
├── scripts/render_site.py # Pre-renders the Taiwan page and sitemap
├── scripts/render_global_site.py # Pre-renders the global page and rankings
├── app.js # Taiwan dashboard and trend chart
├── global.js # Interactive globe and global statistics
├── global.html # Global certificate page
├── index.html # Taiwan certificate page
├── global.css # Global page styles
└── style.css # Shared site styles