I published 6,500 pages in 2 weeks. Google switched my site off. Here's what I built instead.

I run CalcBloc, a salary and tax calculator site. In October I made a decision that looked smart for exactly two weeks. The mistake I generated about 6,500 programmatic pages: "salary X after tax" for every salary step in every country we covered. Each page was correct. Each page was also nearly identical to the one before it. Page 4,001 answered the same question as page 4,000 with one number changed. Google's response: impressions went to zero. Not low. Zero, including for our own brand name. A site: search still listed our pages, so we were indexed, just not shown for anything. What I did about it Noindexed all 6,500 pages. I'm not bringing them back, even with more content on each. The problem wasn't word count. The problem was that nobody needed 6,500 answers to one question. Asked a different question. Not "how do I get more URLs?" but "what do we have that nobody else gives away?" The answer was the data underneath the calculators: official tax tab

I published 6,500 pages in 2 weeks. Google switched my site off. Here's what I built instead.

I run CalcBloc, a salary and tax calculator site. In October I made a decision that looked smart for exactly two weeks.

The mistake

I generated about 6,500 programmatic pages: "salary X after tax" for every salary step in every country we covered.

Each page was correct. Each page was also nearly identical to the one before it. Page 4,001 answered the same question as page 4,000 with one number changed.

Google's response: impressions went to zero. Not low. Zero, including for our own brand name. A site: search still listed our pages, so we were indexed, just not shown for anything.

What I did about it

  1. Noindexed all 6,500 pages. I'm not bringing them back, even with more content on each. The problem wasn't word count. The problem was that nobody needed 6,500 answers to one question.
  2. Asked a different question. Not "how do I get more URLs?" but "what do we have that nobody else gives away?"

The answer was the data underneath the calculators: official tax tables, checked against government sources.

What we shipped instead

One dataset, and then tools built on top of it. All open source.

The dataset

  • 37 countries, 242 tables (38 national, 204 regional: US states, Canadian provinces, Swiss cantons)
  • 9,427 rows
  • Every row has its official source URL, the date we retrieved it, and a status
  • CSV and JSON, CC BY 4.0, with a DOI

We also publish what we don't know. 118 rows are marked under_review, and Belgium is held back until its 2026 scale is confirmed.

A free API, no signup

curl https://calcbloc.com/api/v1/tax-tables/uk/2026-27

50 requests a day without a key, 5,000 with a free one.

Packages with the data inside

Python, JavaScript, PHP and R. The tables ship in the package, so there is no network call and no rate limit:

from calcbloc import tables, tax_from_bands

us = tables.load("us", "2026")
single = tables.section(us, "federal-income-tax-single")
print(tax_from_bands(single, 75_000))  # 11212.0

An MCP server

Five read-only tools so AI assistants use real tax tables instead of guessing: take-home pay, employer cost, country comparison, tax tables, and a country list.

Also: a browser extension that shows take-home pay next to salaries on job sites, Excel and Google Sheets functions, and a WordPress plugin.

Status, honestly: everything is on GitHub today. The registry and store releases (npm, PyPI, browser stores) are in progress.

Where it stands

  • Google: still zero. The noindex is only days old, so that number doesn't mean much yet.
  • Bing: first impression on 1 November, 32 in the following 10 days, no clicks yet. Small, but not zero.

What I'd tell myself in October

  • More URLs is not more value.
  • Before a page goes into the index, ask whether anyone would bookmark it on its own.
  • The calculators were never the asset. The checked data was.

I'll write a follow-up with the recovery timeline, whatever it turns out to be.

If you've recovered a domain from something like this, I'd like to hear how long it took.

Code and data: https://github.com/itmarkerz

Share