Sub-report
Links
Broken Links Audit
Placeholder & Broken Links
Static scan for empty or hash-only hrefs that should become real destinations.
| # | Page | Link text / context | Current href | Recommended fix | Status |
|---|---|---|---|---|---|
| 1 | / |
Footer — Privacy Policy | /privacy/ |
Linked to live /privacy/ page. |
Fixed |
| 2 | / |
Footer — Terms of Use | /terms/ |
Linked to live /terms/ page. |
Fixed |
| 3 | / |
Project modal — Visit Project | JS-gated | Button hidden unless data-link is a valid http(s) URL. |
Fixed |
| 4 | /portfolio/ |
Footer — Privacy Policy | /privacy/ |
Linked to live /privacy/ page. |
Fixed |
| 5 | /portfolio/ |
Footer — Terms of Use | /terms/ |
Linked to live /terms/ page. |
Fixed |
| 6 | /portfolio/ |
Project modal — Visit Project | JS-gated | Same hide-when-invalid behavior as homepage modal. | Fixed |
| 7 | /blog/ + posts |
Footer — Privacy / Terms | /privacy/ · /terms/ |
Index and all 6 post footers link to live legal pages. | Fixed |
| 8 | /experience/ |
Footer — Privacy / Terms | /privacy/ · /terms/ |
Linked to live legal pages. | Fixed |
| 9 | /about/ |
Footer — Privacy / Terms | /privacy/ · /terms/ |
Linked to live legal pages. | Fixed |
| 10 | Legacy media | Old WordPress image URLs | HTML 200 (not image) | Already replaced with local mockups — keep monitoring API seeds. | Fixed |
Recommended Phase 2
Privacy + Terms pages shipped
Footers now link to /privacy/ and /terms/.
Centralize footer markup
One shared footer include so legal links stay in sync sitewide.
Automated link crawl
Add a CI step that flags href="#" and 404 responses on each deploy.
Broken links sub-report · Cyryl Bitangcol · 22 September 2026