For content databases, knowledge bases and docs

Your content database is quietly rotting.

Every month, a few hundred of the links in your knowledge base stop working. Nothing tells you. Your reader finds out first.

Up to 100,000 URLs in one job, free to run. No credit card. You see how many are broken before you pay anything.

docs.example.com/auth/saml-setup

Docs / Authentication

Configuring SSO with SAML

provider metadata reference
saml-handshake-flow.png

Figure 2. The assertion round trip.

docs.example.com/auth/saml-setup

Docs / Authentication

Configuring SSO with SAML

provider metadata
saml-handshake-flow.png

Every link on this page renders exactly like a working one, and the diagram it walks you through never loads at all.

Why the tool you tried did not work

You have almost certainly been here already. It goes wrong three ways.

article-links.csv

40,000 rows

Maximum 5,000 URLs per import.

Split into 8 files and try again

It refused the list

Built to crawl one website. Yours is a list pointing at hundreds.

Checking

4,182 / 40,000

Last update 41 minutes ago

Job stopped responding.

It stopped partway

Worse than refusing. You get a tenth of an answer and no way to tell which tenth.

guidelines.example.org403
idp.example.net403
files.example.com403
status.example.io403
cdn.example.net403

4,182 of 4,182 blocked

Everything came back blocked

None of those pages was broken. Nothing in that report tells you so.

Here, the list goes in once and the job ends.

40,000submitted
40,000checked
0left over

See the damage before you pay for it

Running the check is free. Paste or upload the list, and we tell you how many of them are dead. That number costs nothing and it is the part you need in order to decide whether the rest is worth anything to you.

Credits unlock which ones. One credit reveals one result, and your first 300 are free.

It rots again next month

An audit tells you about today. The database is still being edited, so it is wrong again by the next release.

Set a cadence and you hear from us only when something changed. Re-running costs nothing, so watching a list weekly costs the same as watching it once.

  • Running is free for up to 100,000 URLs per account, checked or re-checked.
  • One credit unlocks one URL result. The first 300 are free.
  • Starter costs $9 per month and unlocks 15,000 URL results per month, with 1 scheduled check running weekly.
  • Pro costs $29 per month and unlocks 50,000 URL results per month, with 5 scheduled checks running daily.
  • Agency costs $99 per month and unlocks 200,000 URL results per month, with 50 scheduled checks running daily.
  • One-off packs, no subscription: 10,000 results for $9.99, 30,000 results for $23.99, 75,000 results for $49.99.
docs.example.com/auth/saml-setup

Docs / Authentication

Configuring SSO with SAML

provider metadata
saml-handshake-flow.png

Every link on this page renders exactly like a working one, and the diagram it walks you through never loads at all.

The list lives in a database. The check can too.

If the URLs come out of a table, the check probably belongs in a nightly job rather than a browser tab. Pull them, send them, act on what comes back broken.

Same backend and same credits as the web app, so a scheduled job in your own infrastructure and a run from the dashboard behave identically. There is a REST API, Python and Node SDKs, and a hosted MCP server for Claude, ChatGPT and Cursor.

RESTPythonNodeMCPWebhooks
python
# pip install bulkurlchecker
from bulkurlchecker import Client

client = Client(api_key="uck_live_YOUR_KEY")

# however your content actually lives
urls = [row.url for row in db.query(
    "SELECT url FROM article_links WHERE external = true"
)]

results = client.check_urls(urls)

for r in results.broken:
    print(r.status_code, r.url)

Questions

Can it handle 40,000 URLs in one go?

Yes. The largest single job is 100,000 URLs, and running it costs nothing. The list is checked in the cloud, so nothing runs on your machine and there is no batch size to manage yourself.

What does it cost to check 40,000 URLs?

Nothing. Running the check is free for up to 100,000 URLs per account, and you get the count of how many are broken for free. Credits unlock which specific URLs those are: 1 credit reveals 1 result, and the first 300 are free.

Why did other tools fail on my list?

Three ways, usually. It refused a list that size outright, because it was built to crawl one website rather than check a list. It accepted the list and stopped partway, leaving you a fraction of an answer. Or it came back with everything blocked, which looks like thousands of dead pages and is not. Here the whole list goes in once and the job ends.

Does a 403 mean the link is broken?

No, and we do not count it as one. A 403 a real visitor would never hit is our failure to measure, not your dead page. The headline number is only the links that are definitely gone. Anything we are unsure about is listed apart from it rather than folded in to make the number look bigger.

It rots again next month. Do I have to remember to re-run it?

No. A scheduled check re-runs the same list on a cadence and emails you when something changes. Running a scheduled check is free, the same as running one by hand, so the cost of watching a list does not grow with how often you watch it.

What does it cost if I want the full list every month?

Starter is $9 per month and unlocks 15,000 URL results per month; Pro is $29 per month and unlocks 50,000 URL results per month; Agency is $99 per month and unlocks 200,000 URL results per month. One-off credit packs start at $9.99 for 10,000 results if a month runs long.

Can I run it from code instead of the browser?

Yes. There is a REST API, Python and Node SDKs, and a hosted MCP server for Claude, ChatGPT and Cursor. Same backend and same credits as the web app, so a scheduled job in your own infrastructure and a run from the dashboard behave identically.

Up to 100,000 URLs. No credit card. You see the count before you pay.

We use analytics cookies to improve your experience. Opt out anytime in Cookie Settings. Privacy Policy

Settings