[BUG] Broken Links in Documentation – Open Governance Model and Link - Redirects to 404
Describe the bug.
Hi , I noticed that the "LInk" and “Open Governance Model” link on the website redirects to two GitHub pages that no longer exist: • https://github.com/asyncapi/community/blob/master/TSC_MEMBERSHIP.md • https://github.com/asyncapi/community/blob/master/CHARTER.md
Both links return: 404 - page not found The master branch of community does not contain the path TSC_MEMBERSHIP.md and chapter.md
It seems the files were moved, renamed, or the branch structure changed, but the website still points to the old master branch paths.
Expected behavior
The links should correctly open the governance documents in the community repo.
Screenshots
The link points to outdated locations under the master branch.
url -> https://www.asyncapi.com/community/tsc
How to Reproduce
1. Go to the - [https://www.asyncapi.com/community/tsc](url)
2. Click Link → Open Governance Model and links
3. You are redirected to URLs that result in a 404.
🖥️ Device Information [optional]
- Operating System (OS):
- Browser:
- Browser Version:
👀 Have you checked for similar open issues?
- [x] I checked and didn't find similar issue
🏢 Have you read the Contributing Guidelines?
- [x] I have read the Contributing Guidelines
Are you willing to work on this issue ?
Yes I am willing to submit a PR!
Hii @princerajpoot20 please review this issue .
Can you please do one thing:
Use Ctrl + Shift + F (Find in all files) and check all the links that end with .md which are pointing to files at the root directory.
For example, in this case:
https://github.com/asyncapi/community/blob/master/TSC_MEMBERSHIP.md
this .md file is located at the root (immediately after /master/).
Please cross-verify all such links and check whether the referenced .md files actually exist or not.
I’d suggest, If you could go one step further, checking all the links that end with .md, not just the ones at the root.
The problem is that there are multiple broken links, and we’ve been fixing them one or two at a time for quite a long period. Instead of repeatedly opening new issues for each broken link, it would be better to fix them all in one go so we don’t have to come back with yet another issue for a different broken link.
You can share your findings here in the issue (a list of all the broken links) before creating the PR.
@princerajpoot20
okayy
Prepare a list with three columns:
-
Where the link is present(location of the file). This will help us identify whether the fix needs to be made in the website repo or in other repository. -
Current docs link (the broken one) -
Corrected docs link
@princerajpoot20 many of the url is duplicate -> (- here we can also use scripts in package.json for future reference here -) Broken links found: 120 -> [ { "file": "/Users/sourya/website/.github/workflows/stale-issues-prs.yml", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/.github/workflows/stale-issues-prs.yml", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/.github/workflows/welcome-first-time-contrib.yml", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/CONTRIBUTING.md", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/CONTRIBUTING.md", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/CONTRIBUTING.md", "url": "https://github.com/asyncapi/community/blob/master/recognize-contributors.md" }, { "file": "/Users/sourya/website/README.md", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/components/NewsletterSubscribe.tsx", "url": "https://github.com/asyncapi/website/issues/new?template=bug.md" }, { "file": "/Users/sourya/website/components/layout/CommunityLayout.tsx", "url": "https://github.com/asyncapi/community/blob/master/TSC_MEMBERSHIP.md" }, { "file": "/Users/sourya/website/components/newsroom/Newsroom.tsx", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/markdown/about/index.md", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/markdown/blog/2020-summary.md", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/markdown/blog/2020-summary.md", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/markdown/blog/2021-summary.md", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/markdown/blog/2022Q1-summary.md", "url": "https://github.com/asyncapi/community/blob/master/MEETINGS_ORGANIZATION.md" }, { "file": "/Users/sourya/website/markdown/blog/2023-mentorship-summary.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/markdown/blog/2023-mentorship-summary.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/markdown/blog/2023-mentorship-summary.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/markdown/blog/2023-mentorship-summary.md", "url": "https://github.com/asyncapi/.github/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/markdown/blog/2024-Q1-docs-report.md", "url": "https://github.com/asyncapi/community/blob/master/docs/onboarding-guide/docs-onboarding-checklist.md" }, { "file": "/Users/sourya/website/markdown/blog/2024-annual-summary.md", "url": "https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md" }, { "file": "/Users/sourya/website/markdown/blog/2024-april-summary.md", "url": "https://github.com/asyncapi/community/blob/master/voting.md" }, { "file": "/Users/sourya/website/markdown/blog/2024-february-summary.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/markdown/blog/2024-february-summary.md", "url": "https://github.com/asyncapi/community/blob/master/WORKING_GROUPS.md" }, { "file": "/Users/sourya/website/markdown/blog/2024-july-summary.md", "url": "https://github.com/asyncapi/community/blob/master/TSC_VOTING_OVERVIEW.md" }, { "file": "/Users/sourya/website/markdown/blog/2025-Q1-marketing-report.md", "url": "https://github.com/asyncapi/community/blob/master/annual-goals/2025_marketing_strategy.md" }, { "file": "/Users/sourya/website/markdown/blog/2025-february-summary.md", "url": "https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md" }, { "file": "/Users/sourya/website/markdown/blog/2025-gsoc-phase-1.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2025/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/markdown/blog/april-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/markdown/blog/async-api-spec-3.0-release.md", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/markdown/blog/asyncapi-bounty-program-2024.md", "url": "https://github.com/asyncapi/community/blob/master/voting.md" }, { "file": "/Users/sourya/website/markdown/blog/asyncapi-bounty-program-2024.md", "url": "https://github.com/asyncapi/community/blob/master/TSC_VOTING_OVERVIEW.md" }, { "file": "/Users/sourya/website/markdown/blog/beyond-boundaries.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/asyncapi-mentorship/2022/project-ideas.md" }, { "file": "/Users/sourya/website/markdown/blog/beyond-boundaries.md", "url": "https://github.com/asyncapi/community/blob/master/mentorship/asyncapi-mentorship/2022/README.md" }, { "file": "/Users/sourya/website/markdown/blog/beyond-boundaries.md", "url": "https://github.com/asyncapi/.github/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/markdown/blog/february-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/event-gateway/issues/new?assignees=&labels=use+case&template=use_case.md" }, { "file": "/Users/sourya/website/markdown/blog/february-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md" }, { "file": "/Users/sourya/website/markdown/blog/february-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/generator/blob/master/docs/typescript-support.md" }, { "file": "/Users/sourya/website/markdown/blog/first-governance-elections.md", "url": "https://github.com/asyncapi/community/blob/master/GOVERNANCE.md" }, { "file": "/Users/sourya/website/markdown/blog/google-season-of-docs-2022.md", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/markdown/blog/hacktoberfest-2020.md", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/markdown/blog/january-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md" }, { "file": "/Users/sourya/website/markdown/blog/july-december-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/markdown/blog/march-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/markdown/blog/may-2021-at-asyncapi.md", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/markdown/blog/new-governance-board.md", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/markdown/blog/new-governance-board.md", "url": "https://github.com/asyncapi/community/blob/master/GOVERNANCE.md" }, { "file": "/Users/sourya/website/markdown/blog/openforce-2022.md", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/markdown/blog/react-as-generator-engine.md", "url": "https://github.com/asyncapi/generator/blob/master/docs/configuration-file.md" }, { "file": "/Users/sourya/website/markdown/blog/react-as-generator-engine.md", "url": "https://github.com/asyncapi/generator/blob/master/docs/nunjucks-render-engine.md" }, { "file": "/Users/sourya/website/markdown/blog/using-nunjucks-with-asyncapi.md", "url": "https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md" }, { "file": "/Users/sourya/website/markdown/docs/community/010-contribution-guidelines/contribute-blog-post.md", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/markdown/docs/community/010-contribution-guidelines/contribution-flow.md", "url": "https://github.com/asyncapi/community/issues/new?assignees=&labels=bug&template=bug_report.md" }, { "file": "/Users/sourya/website/markdown/docs/community/050-mentorship-program/summerofcode-2021-README.md", "url": "https://github.com/asyncapi/asyncapi/blob/master/versions/2.0.0/asyncapi.md" }, { "file": "/Users/sourya/website/markdown/docs/community/050-mentorship-program/summerofcode-2023-asyncapi-gsoc-ideas-page.md", "url": "https://github.com/asyncapi/.github/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/markdown/docs/community/maintainership-guide/amp-code-of-conduct.md", "url": "https://github.com/asyncapi/community/blob/master/code_of_conduct/coc-incident-resolution-procedures.md" }, { "file": "/Users/sourya/website/markdown/docs/community/maintainership-guide/amp-mentor-support-and-escalation-path.md", "url": "https://github.com/asyncapi/community/blob/master/code_of_conduct/coc-incident-resolution-procedures.md" }, { "file": "/Users/sourya/website/markdown/docs/reference/specification/v3.0.0.md", "url": "https://github.com/asyncapi/bindings/blob/master/sns/README.md" }, { "file": "/Users/sourya/website/markdown/docs/reference/specification/v3.0.0.md", "url": "https://github.com/asyncapi/bindings/blob/master/sns/README.md" }, { "file": "/Users/sourya/website/markdown/docs/reference/specification/v3.0.0.md", "url": "https://github.com/asyncapi/bindings/blob/master/sns/README.md" }, { "file": "/Users/sourya/website/pages/about/index.mdx", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/blog/2020-summary.mdx", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/pages/blog/2020-summary.mdx", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/pages/blog/2021-summary.mdx", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/pages/blog/2022Q1-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/MEETINGS_ORGANIZATION.md" }, { "file": "/Users/sourya/website/pages/blog/2023-mentorship-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/pages/blog/2023-mentorship-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/pages/blog/2023-mentorship-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/pages/blog/2023-mentorship-summary.mdx", "url": "https://github.com/asyncapi/.github/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/pages/blog/2024-Q1-docs-report.mdx", "url": "https://github.com/asyncapi/community/blob/master/docs/onboarding-guide/docs-onboarding-checklist.md" }, { "file": "/Users/sourya/website/pages/blog/2024-annual-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md" }, { "file": "/Users/sourya/website/pages/blog/2024-april-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/voting.md" }, { "file": "/Users/sourya/website/pages/blog/2024-february-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/pages/blog/2024-february-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/WORKING_GROUPS.md" }, { "file": "/Users/sourya/website/pages/blog/2024-july-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/TSC_VOTING_OVERVIEW.md" }, { "file": "/Users/sourya/website/pages/blog/2025-Q1-marketing-report.mdx", "url": "https://github.com/asyncapi/community/blob/master/annual-goals/2025_marketing_strategy.md" }, { "file": "/Users/sourya/website/pages/blog/2025-february-summary.mdx", "url": "https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md" }, { "file": "/Users/sourya/website/pages/blog/2025-gsoc-phase-1.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2025/asyncapi-gsoc-ideas-page.md" }, { "file": "/Users/sourya/website/pages/blog/april-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/blog/async-api-spec-3.0-release.mdx", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/pages/blog/asyncapi-bounty-program-2024.mdx", "url": "https://github.com/asyncapi/community/blob/master/voting.md" }, { "file": "/Users/sourya/website/pages/blog/asyncapi-bounty-program-2024.mdx", "url": "https://github.com/asyncapi/community/blob/master/TSC_VOTING_OVERVIEW.md" }, { "file": "/Users/sourya/website/pages/blog/beyond-boundaries.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/asyncapi-mentorship/2022/project-ideas.md" }, { "file": "/Users/sourya/website/pages/blog/beyond-boundaries.mdx", "url": "https://github.com/asyncapi/community/blob/master/mentorship/asyncapi-mentorship/2022/README.md" }, { "file": "/Users/sourya/website/pages/blog/beyond-boundaries.mdx", "url": "https://github.com/asyncapi/.github/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/pages/blog/february-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/event-gateway/issues/new?assignees=&labels=use+case&template=use_case.md" }, { "file": "/Users/sourya/website/pages/blog/february-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md" }, { "file": "/Users/sourya/website/pages/blog/february-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/generator/blob/master/docs/typescript-support.md" }, { "file": "/Users/sourya/website/pages/blog/first-governance-elections.mdx", "url": "https://github.com/asyncapi/community/blob/master/GOVERNANCE.md" }, { "file": "/Users/sourya/website/pages/blog/google-season-of-docs-2022.mdx", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/pages/blog/hacktoberfest-2020.mdx", "url": "https://github.com/asyncapi/community/blob/master/git-workflow.md" }, { "file": "/Users/sourya/website/pages/blog/index.tsx", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/pages/blog/january-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md" }, { "file": "/Users/sourya/website/pages/blog/july-december-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/blog/march-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/blog/may-2021-at-asyncapi.mdx", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/pages/blog/new-governance-board.mdx", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/blog/new-governance-board.mdx", "url": "https://github.com/asyncapi/community/blob/master/GOVERNANCE.md" }, { "file": "/Users/sourya/website/pages/blog/openforce-2022.mdx", "url": "https://github.com/asyncapi/community/blob/master/slack-etiquette.md" }, { "file": "/Users/sourya/website/pages/blog/react-as-generator-engine.mdx", "url": "https://github.com/asyncapi/generator/blob/master/docs/configuration-file.md" }, { "file": "/Users/sourya/website/pages/blog/react-as-generator-engine.mdx", "url": "https://github.com/asyncapi/generator/blob/master/docs/nunjucks-render-engine.md" }, { "file": "/Users/sourya/website/pages/blog/using-nunjucks-with-asyncapi.mdx", "url": "https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md" }, { "file": "/Users/sourya/website/pages/community/ambassadors/index.tsx", "url": "https://github.com/asyncapi/community/blob/master/AMBASSADOR_ORGANIZATION.md" }, { "file": "/Users/sourya/website/pages/community/board.tsx", "url": "https://github.com/asyncapi/community/blob/master/GOVERNANCE.md" }, { "file": "/Users/sourya/website/pages/community/board.tsx", "url": "https://github.com/asyncapi/community/blob/master/GOVERNANCE.md" }, { "file": "/Users/sourya/website/pages/community/tsc.tsx", "url": "https://github.com/asyncapi/community/blob/master/TSC_MEMBERSHIP.md" }, { "file": "/Users/sourya/website/pages/community/tsc.tsx", "url": "https://github.com/asyncapi/community/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/docs/community/010-contribution-guidelines/contribute-blog-post.mdx", "url": "https://github.com/asyncapi/website/issues/new?template=blog.md" }, { "file": "/Users/sourya/website/pages/docs/community/010-contribution-guidelines/contribution-flow.mdx", "url": "https://github.com/asyncapi/community/issues/new?assignees=&labels=bug&template=bug_report.md" }, { "file": "/Users/sourya/website/pages/docs/community/050-mentorship-program/summerofcode-2021-README.mdx", "url": "https://github.com/asyncapi/asyncapi/blob/master/versions/2.0.0/asyncapi.md" }, { "file": "/Users/sourya/website/pages/docs/community/050-mentorship-program/summerofcode-2023-README.mdx", "url": "https://github.com/asyncapi/.github/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/docs/community/050-mentorship-program/summerofcode-2023-asyncapi-gsoc-ideas-page.mdx", "url": "https://github.com/asyncapi/.github/blob/master/CHARTER.md" }, { "file": "/Users/sourya/website/pages/docs/community/maintainership-guide/amp-code-of-conduct.mdx", "url": "https://github.com/asyncapi/community/blob/master/code_of_conduct/coc-incident-resolution-procedures.md" }, { "file": "/Users/sourya/website/pages/docs/community/maintainership-guide/amp-mentor-support-and-escalation-path.mdx", "url": "https://github.com/asyncapi/community/blob/master/code_of_conduct/coc-incident-resolution-procedures.md" }, { "file": "/Users/sourya/website/pages/docs/reference/specification/v3.0.0.mdx", "url": "https://github.com/asyncapi/bindings/blob/master/sns/README.md" }, { "file": "/Users/sourya/website/pages/docs/reference/specification/v3.0.0.mdx", "url": "https://github.com/asyncapi/bindings/blob/master/sns/README.md" }, { "file": "/Users/sourya/website/pages/docs/reference/specification/v3.0.0.mdx", "url": "https://github.com/asyncapi/bindings/blob/master/sns/README.md" }, { "file": "/Users/sourya/website/tests/fixtures/markdown/check-edit-links-data.ts", "url": "https://github.com/asyncapi/website/blob/master/markdown/docs/docs/concepts/application.md" }, { "file": "/Users/sourya/website/tests/fixtures/markdown/check-edit-links-data.ts", "url": "https://github.com/asyncapi/cli/tree/master/docs/index.md" }, { "file": "/Users/sourya/website/tests/markdown/check-edit-links.test.ts", "url": "https://github.com/org/repo/edit/main/v2.x.md" } ]
Hi @Sourya07, great start with that list! However, it looks like it is still missing some broken links. After I checked for relative (internal) links, I found 106 broken links total. After I checked for all links (including external links), I found 901 bad links, 2 time outs and 1 unsupported link.
@princerajpoot20 I dug deeper to figure out why we have so many broken links despite having a test script. I found the root cause. The current local script reports "All links are valid" even when they are not, meaning it is giving us false negatives and letting these errors slip into production.
Proposal: I suggest we upgrade our tooling to use Lychee:
On Pull Requests (Strict): We run Lychee with the --offline flag.
- This checks only internal/relative links (file paths).
- If a contributor links to a missing local file, the PR fails. This stops the "106 broken links" issue from growing.
- This is safe because it ignores external URLs .
Weekly Schedule (Informational): We keep the Sunday midnight workflow but switch it to Lychee.
- This checks external URLs (online).
- It catches the ~900+ external links that might have rotted or timed out and notifies us on Slack, without blocking daily development.
Do you want me to create a new issue for this "Tooling Upgrade" to track it separately, or should we handle it here?
@rlpratyoosh, The maintainer had specifically instructed me to check only .md file references, so the initial list I shared was intentionally limited to Markdown links. That’s why my scan didn’t include all external URLs — it was focused on what was requested. I noticed that the repository already includes a GitHub workflow that checks for broken “Edit this page” links. Since we already have this mechanism in place, I think we can extend or upgrade the existing script to cover all link types (internal + external) instead of introducing an entirely new tool.
Upgrading the current workflow could give us: ->Consistent logic within the repo ->No additional dependency ->A single source of truth for link checking ->The ability to fix the root cause without splitting the logic across tools
I’m completely open to Lychee as well if the team prefers it — but since we already have a working foundation, enhancing the current script might be the simpler first step.
Most of the links you have mentioned will work due to this -> GitHub does NOT allow automated requests (HEAD/GET) to certain URLs i have worked on that previously . don't just use gpt 😅
@Sourya07 Thanks for the detailed response! I totally get the hesitation to add new dependencies if we can avoid them.
To clarify my point about Lychee vs. Upgrading the Script:
Re: GitHub Rate Limiting: You are absolutely right that GitHub blocks automated external requests (429 errors). That’s exactly why I proposed using Lychee in --offline mode for PRs.
- The offline mode only checks the local file system (resolving ../ and ./ paths against the directory structure).
- It makes zero network requests, so it triggers no rate limits and is blazing fast for CI.
Re: Complexity: My concern with upgrading the current script is that accurately resolving relative paths (handling ../../, anchors, and mixed HTML/Markdown) usually requires a full AST parser, not just regex. The current script passes "Success" because it’s likely not resolving those paths at all.
- Lychee handles that resolution out of the box.
- "Upgrading" our script to match that logic effectively means rebuilding a link checker from scratch, which might actually be more maintenance than just using a specialized tool.
However, I’m happy to follow the maintainer's lead! If @princerajpoot20 prefers we patch the existing Node script to handle relative paths better, I can look into that too. Just wanted to offer the "ready-made" solution first.
Personally, I’m open to either approach — whichever direction @princerajpoot20 feels is better for the repo, I’m happy to implement.
This discussion will definitely help us choose the cleanest long-term solution!
@princerajpoot20 can you suggest the best next steps we should take here? If you have any recommended approach or direction, please share — it will help us plan the next move.
Prepare a list with three columns:
Where the link is present(location of the file). This will help us identify whether the fix needs to be made in the website repo or in other repository.Current docs link (the broken one)Corrected docs link
@Sourya07 you ignored the first point I mentioned here
@princerajpoot20 bhaiya 😊 i have mentioned in the slack that most of the links are not presented in the community folder thats why i did not mentioned that . i have checked for most of the link that are not mentioned or did not have link point no 1. should i mentioned for the links which are present ? tell me so i can proceed further
I am talking about the location of the file in the website repo. Which file in the website repository contains this link
Broken Links Report - AsyncAPI Website
This report lists all broken .md file links found in the AsyncAPI website repository with their corrected URLs.
Summary
- Total broken links found: 120 (with duplicates)
- Unique broken links: ~35
Governance & Policy Files
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
.github/workflows/stale-issues-prs.yml |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
components/layout/CommunityLayout.tsx |
https://github.com/asyncapi/community/blob/master/TSC_MEMBERSHIP.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/TSC_MEMBERSHIP.md |
markdown/about/index.md |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
pages/about/index.mdx |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
pages/community/tsc.tsx |
https://github.com/asyncapi/community/blob/master/TSC_MEMBERSHIP.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/TSC_MEMBERSHIP.md |
pages/community/tsc.tsx |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
markdown/blog/april-2021-at-asyncapi.md |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
markdown/blog/july-december-2021-at-asyncapi.md |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
markdown/blog/march-2021-at-asyncapi.md |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
markdown/blog/new-governance-board.md |
https://github.com/asyncapi/community/blob/master/CHARTER.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/CHARTER.md |
markdown/blog/new-governance-board.md |
https://github.com/asyncapi/community/blob/master/GOVERNANCE.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/GOVERNANCE.md |
markdown/blog/first-governance-elections.md |
https://github.com/asyncapi/community/blob/master/GOVERNANCE.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/GOVERNANCE.md |
pages/community/board.tsx |
https://github.com/asyncapi/community/blob/master/GOVERNANCE.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/GOVERNANCE.md |
Contribution Guidelines
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
.github/workflows/welcome-first-time-contrib.yml |
https://github.com/asyncapi/community/blob/master/git-workflow.md |
https://github.com/asyncapi/community/blob/master/docs/010-contribution-guidelines/git-workflow.md |
CONTRIBUTING.md |
https://github.com/asyncapi/community/blob/master/git-workflow.md |
https://github.com/asyncapi/community/blob/master/docs/010-contribution-guidelines/git-workflow.md |
CONTRIBUTING.md |
https://github.com/asyncapi/community/blob/master/recognize-contributors.md |
https://github.com/asyncapi/community/blob/master/docs/010-contribution-guidelines/recognize-contributors.md |
README.md |
https://github.com/asyncapi/community/blob/master/git-workflow.md |
https://github.com/asyncapi/community/blob/master/docs/010-contribution-guidelines/git-workflow.md |
markdown/blog/hacktoberfest-2020.md |
https://github.com/asyncapi/community/blob/master/git-workflow.md |
https://github.com/asyncapi/community/blob/master/docs/010-contribution-guidelines/git-workflow.md |
markdown/blog/async-api-spec-3.0-release.md |
https://github.com/asyncapi/community/blob/master/git-workflow.md |
https://github.com/asyncapi/community/blob/master/docs/010-contribution-guidelines/git-workflow.md |
Communication & Meetings
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
CONTRIBUTING.md |
https://github.com/asyncapi/community/blob/master/slack-etiquette.md |
https://github.com/asyncapi/community/blob/master/docs/060-meetings-and-communication/slack-etiquette.md |
markdown/blog/may-2021-at-asyncapi.md |
https://github.com/asyncapi/community/blob/master/slack-etiquette.md |
https://github.com/asyncapi/community/blob/master/docs/060-meetings-and-communication/slack-etiquette.md |
markdown/blog/google-season-of-docs-2022.md |
https://github.com/asyncapi/community/blob/master/slack-etiquette.md |
https://github.com/asyncapi/community/blob/master/docs/060-meetings-and-communication/slack-etiquette.md |
markdown/blog/openforce-2022.md |
https://github.com/asyncapi/community/blob/master/slack-etiquette.md |
https://github.com/asyncapi/community/blob/master/docs/060-meetings-and-communication/slack-etiquette.md |
markdown/blog/2022Q1-summary.md |
https://github.com/asyncapi/community/blob/master/MEETINGS_ORGANIZATION.md |
https://github.com/asyncapi/community/blob/master/docs/060-meetings-and-communication/MEETINGS_ORGANIZATION.md |
Voting & TSC
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
markdown/blog/2024-april-summary.md |
https://github.com/asyncapi/community/blob/master/voting.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/voting.md |
markdown/blog/asyncapi-bounty-program-2024.md |
https://github.com/asyncapi/community/blob/master/voting.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/voting.md |
markdown/blog/asyncapi-bounty-program-2024.md |
https://github.com/asyncapi/community/blob/master/TSC_VOTING_OVERVIEW.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/TSC_VOTING_OVERVIEW.md |
markdown/blog/2024-july-summary.md |
https://github.com/asyncapi/community/blob/master/TSC_VOTING_OVERVIEW.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/TSC_VOTING_OVERVIEW.md |
Working Groups & Ambassadors
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
markdown/blog/2024-february-summary.md |
https://github.com/asyncapi/community/blob/master/WORKING_GROUPS.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/WORKING_GROUPS.md |
pages/community/ambassadors/index.tsx |
https://github.com/asyncapi/community/blob/master/AMBASSADOR_ORGANIZATION.md |
https://github.com/asyncapi/community/blob/master/docs/020-governance-and-policies/AMBASSADOR_PROGRAM.md |
Mentorship Programs
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
markdown/blog/2023-mentorship-summary.md |
https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md |
https://github.com/asyncapi/community/blob/master/docs/050-mentorship-program/summerofcode-2024-asyncapi-gsoc-ideas-page.md |
markdown/blog/2024-february-summary.md |
https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2024/asyncapi-gsoc-ideas-page.md |
https://github.com/asyncapi/community/blob/master/docs/050-mentorship-program/summerofcode-2024-asyncapi-gsoc-ideas-page.md |
markdown/blog/2025-gsoc-phase-1.md |
https://github.com/asyncapi/community/blob/master/mentorship/summerofcode/2025/asyncapi-gsoc-ideas-page.md |
https://github.com/asyncapi/community/blob/master/docs/050-mentorship-program/summerofcode-2025-asyncapi-gsoc-ideas-page.md |
markdown/blog/beyond-boundaries.md |
https://github.com/asyncapi/community/blob/master/mentorship/asyncapi-mentorship/2022/project-ideas.md |
https://github.com/asyncapi/community/blob/master/docs/050-mentorship-program/asyncapi-mentorship-2022-project-ideas.md |
markdown/blog/beyond-boundaries.md |
https://github.com/asyncapi/community/blob/master/mentorship/asyncapi-mentorship/2022/README.md |
https://github.com/asyncapi/community/blob/master/docs/050-mentorship-program/asyncapi-mentorship-README.md |
markdown/docs/community/050-mentorship-program/summerofcode-2023-asyncapi-gsoc-ideas-page.md |
https://github.com/asyncapi/.github/blob/master/CHARTER.md |
⚠️ NEEDS VERIFICATION - File doesn't exist in .github repo |
Annual Goals & Strategy
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
markdown/blog/2024-annual-summary.md |
https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md |
https://github.com/asyncapi/community/blob/master/docs/030-project-vision-strategy-goals/2025_Community_Goals.md |
markdown/blog/2025-february-summary.md |
https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md |
https://github.com/asyncapi/community/blob/master/docs/030-project-vision-strategy-goals/2025_Community_Goals.md |
markdown/blog/2025-Q1-marketing-report.md |
https://github.com/asyncapi/community/blob/master/annual-goals/2025_marketing_strategy.md |
https://github.com/asyncapi/community/blob/master/docs/030-project-vision-strategy-goals/2025_marketing_strategy.md |
Documentation Links
| File Location | Current (Broken) Link | Corrected Link |
|---|---|---|
markdown/blog/2024-Q1-docs-report.md |
https://github.com/asyncapi/community/blob/master/docs/onboarding-guide/docs-onboarding-checklist.md |
https://github.com/asyncapi/community/blob/master/docs/000-onboarding/docs-onboarding-checklist.md |
markdown/docs/community/maintainership-guide/amp-code-of-conduct.md |
https://github.com/asyncapi/community/blob/master/code_of_conduct/coc-incident-resolution-procedures.md |
NEEDS VERIFICATION - File might be in different location or deleted |
markdown/docs/community/maintainership-guide/amp-mentor-support-and-escalation-path.md |
https://github.com/asyncapi/community/blob/master/code_of_conduct/coc-incident-resolution-procedures.md |
NEEDS VERIFICATION - File might be in different location or deleted |
Links to .github Repo
| File Location | Current (Broken) Link | Status |
|---|---|---|
markdown/blog/2023-mentorship-summary.md |
https://github.com/asyncapi/.github/blob/master/slack-etiquette.md |
Check if exists or redirect to community repo |
markdown/blog/beyond-boundaries.md |
https://github.com/asyncapi/.github/blob/master/slack-etiquette.md |
Check if exists or redirect to community repo |
pages/docs/community/050-mentorship-program/summerofcode-2023-README.mdx |
https://github.com/asyncapi/.github/blob/master/CHARTER.md |
Check if exists or redirect to community repo |
pages/docs/community/050-mentorship-program/summerofcode-2023-asyncapi-gsoc-ideas-page.mdx |
https://github.com/asyncapi/.github/blob/master/CHARTER.md |
Check if exists or redirect to community repo |
Other Repository Links
AsyncAPI Generator
| File Location | Current (Broken) Link | Notes |
|---|---|---|
markdown/blog/february-2021-at-asyncapi.md |
https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md |
Check if file still exists |
markdown/blog/february-2021-at-asyncapi.md |
https://github.com/asyncapi/generator/blob/master/docs/typescript-support.md |
Check if file still exists |
markdown/blog/january-2021-at-asyncapi.md |
https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md |
Check if file still exists |
markdown/blog/react-as-generator-engine.md |
https://github.com/asyncapi/generator/blob/master/docs/configuration-file.md |
Check if file still exists |
markdown/blog/react-as-generator-engine.md |
https://github.com/asyncapi/generator/blob/master/docs/nunjucks-render-engine.md |
Check if file still exists |
markdown/blog/using-nunjucks-with-asyncapi.md |
https://github.com/asyncapi/generator/blob/master/docs/react-render-engine.md |
Check if file still exists |
AsyncAPI Bindings
| File Location | Current (Broken) Link | Notes |
|---|---|---|
markdown/docs/reference/specification/v3.0.0.md |
https://github.com/asyncapi/bindings/blob/master/sns/README.md |
Check if file still exists (appears 3 times) |
AsyncAPI Spec
| File Location | Current (Broken) Link | Notes |
|---|---|---|
markdown/docs/community/050-mentorship-program/summerofcode-2021-README.md |
https://github.com/asyncapi/asyncapi/blob/master/versions/2.0.0/asyncapi.md |
Check if file still exists |
Issue Templates
| File Location | Current (Broken) Link | Notes |
|---|---|---|
components/NewsletterSubscribe.tsx |
https://github.com/asyncapi/website/issues/new?template=bug.md |
Check if template exists or use bug_report.md |
components/newsroom/Newsroom.tsx |
https://github.com/asyncapi/website/issues/new?template=blog.md |
Check if template exists |
markdown/blog/*.md (multiple files) |
https://github.com/asyncapi/website/issues/new?template=blog.md |
Check if template exists |
markdown/docs/community/010-contribution-guidelines/contribute-blog-post.md |
https://github.com/asyncapi/website/issues/new?template=blog.md |
Check if template exists |
markdown/docs/community/010-contribution-guidelines/contribution-flow.md |
https://github.com/asyncapi/community/issues/new?assignees=&labels=bug&template=bug_report.md |
Verify template name |
AsyncAPI CLI (Windows Executables)
| File Location | Current (Broken) Link | Notes |
|---|---|---|
markdown/docs/tools/cli/installation.md |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x64.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
markdown/docs/tools/cli/installation.md |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x86.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
assets/docs/fragments/cli-installation.md |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x64.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
assets/docs/fragments/cli-installation.md |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x86.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
pages/tools/cli.tsx |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x64.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
pages/tools/cli.tsx |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x86.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
pages/[lang]/tools/cli.tsx |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x64.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
pages/[lang]/tools/cli.tsx |
https://github.com/asyncapi/cli/releases/latest/download/asyncapi.x86.exe |
.exe files no longer published in releases (since v4.x). Use npm or chocolatey instead |
Event Gateway
| File Location | Current (Broken) Link | Notes |
|---|---|---|
markdown/blog/february-2021-at-asyncapi.md |
https://github.com/asyncapi/event-gateway/issues/new?assignees=&labels=use+case&template=use_case.md |
Project may be archived or moved |
take a look @princerajpoot20 👍
@princerajpoot20 ?
@Sourya07 Oh my goodness, that’s a lot to look at.
To start with, for the files files that start with .github and raise a separate issue in the .github repository.
For docs under the /blog folder, you can fix them directly in the website repository.
For files under /docs/community, the fixes belong in the community repository, so please create an issue there.
Sorry for the late reply
no problem thanks for the clarrification☺️🙏🏻
@princerajpoot20 @Sourya07 hi, may I work on this ?
Hi @Sourya07,
If you need any help with the fixes or testing things locally, feel free to let me know — I would be happy to help.
Looking forward to collaborating, and thanks for taking this forward!