---
tool: Crawlinx SEO audit
source: https://crawlinx.com
domain: freecodecamp.org
report_url: "https://crawlinx.com/audit/freecodecamp.org"
crawl_id: 20260711T010024-c169d684
health_score: 65
generated_at: 2026-07-11T15:42:54Z
total_pages: 50
html_pages: 49
indexable_pages: 49
errors: 0
warnings: 90
notices: 151
---

# SEO audit: freecodecamp.org

**Health score: 65/100** — needs attention

> Audited by [Crawlinx](https://crawlinx.com) — the free technical-SEO crawler. Full report: https://crawlinx.com/audit/freecodecamp.org

## Overview

| Metric | Value |
| --- | --- |
| Pages crawled | 50 |
| HTML pages | 49 |
| Indexable | 49 |
| Non-indexable | 0 |
| Orphan pages | 12 |
| Broken internal links | 0 |
| Avg response time | 939 ms |
| Errors / Warnings / Notices | 0 / 90 / 151 |
| Status codes | 50×200 |

## Categories

| Category | Score | Errors | Warnings | Notices |
| --- | ---: | ---: | ---: | ---: |
| Links | 69 | 0 | 52 | 0 |
| Titles | 92 | 0 | 13 | 0 |
| Structured Data | 95 | 0 | 9 | 0 |
| Headings | 95 | 0 | 8 | 0 |
| Duplicate | 97 | 0 | 5 | 3 |
| Crawlability | 98 | 0 | 3 | 0 |
| Cache | 100 | 0 | 0 | 46 |
| Images | 100 | 0 | 0 | 46 |
| Meta Description | 100 | 0 | 0 | 38 |
| Sitemap | 100 | 0 | 0 | 7 |
| Social | 100 | 0 | 0 | 9 |
| URL | 100 | 0 | 0 | 2 |

## Issues

### Warnings (90)

#### Duplicate <title> across pages

- Rule: `duplicate.title` · Category: Duplicate · Occurrences: 5

- [https://www.freecodecamp.org/italian/news/](https://www.freecodecamp.org/italian/news/) — title shared by 2 pages: https://www.freecodecamp.org/portuguese/news/
- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/) — title shared by 3 pages: https://www.freecodecamp.org/news/, https://www.freecodecamp.org/ukrainian/news/
- [https://www.freecodecamp.org/news/](https://www.freecodecamp.org/news/) — title shared by 3 pages: https://www.freecodecamp.org/ukrainian/news/, https://www.freecodecamp.org/korean/news/
- [https://www.freecodecamp.org/portuguese/news/](https://www.freecodecamp.org/portuguese/news/) — title shared by 2 pages: https://www.freecodecamp.org/italian/news/
- [https://www.freecodecamp.org/ukrainian/news/](https://www.freecodecamp.org/ukrainian/news/) — title shared by 3 pages: https://www.freecodecamp.org/news/, https://www.freecodecamp.org/korean/news/

#### Incomplete/empty response after retries (likely transient — re-crawl)

- Rule: `fetch.incomplete` · Category: Crawlability · Occurrences: 3

- [https://freecodecamp.org/](https://freecodecamp.org/) — HTTP 200, 0 words after 3 attempts
- [https://www.freecodecamp.org/donate/](https://www.freecodecamp.org/donate/) — HTTP 200, 0 words after 3 attempts
- [https://www.freecodecamp.org/learn](https://www.freecodecamp.org/learn) — HTTP 200, 0 words after 3 attempts

#### Missing <h1>

- Rule: `h1.missing` · Category: Headings · Occurrences: 8

- [https://www.freecodecamp.org/chinese/news/](https://www.freecodecamp.org/chinese/news/)
- [https://www.freecodecamp.org/espanol/news/](https://www.freecodecamp.org/espanol/news/)
- [https://www.freecodecamp.org/italian/news/](https://www.freecodecamp.org/italian/news/)
- [https://www.freecodecamp.org/japanese/news/](https://www.freecodecamp.org/japanese/news/)
- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/)
- [https://www.freecodecamp.org/news/](https://www.freecodecamp.org/news/)
- [https://www.freecodecamp.org/portuguese/news/](https://www.freecodecamp.org/portuguese/news/)
- [https://www.freecodecamp.org/ukrainian/news/](https://www.freecodecamp.org/ukrainian/news/)

#### Orphan page (no internal inlinks)

- Rule: `links.orphan` · Category: Links · Occurrences: 12

- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — no internal links point here
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — no internal links point here
- [https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/](https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/) — no internal links point here
- [https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/](https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/) — no internal links point here
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — no internal links point here
- [https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/](https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/) — no internal links point here
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — no internal links point here
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — no internal links point here
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — no internal links point here
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — no internal links point here
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — no internal links point here
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — no internal links point here

#### Internal link points to a redirect

- Rule: `links.redirect_target` · Category: Links · Occurrences: 40

- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/](https://www.freecodecamp.org/news/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/ai-agents-for-beginners/](https://www.freecodecamp.org/news/ai-agents-for-beginners/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/](https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/author/03balogun/](https://www.freecodecamp.org/news/author/03balogun/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/](https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/](https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/](https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/](https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/](https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/](https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/](https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/](https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/](https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/](https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/](https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/](https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/](https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/](https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/](https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/](https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/](https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/](https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/](https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/](https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/](https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/](https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/](https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/](https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/](https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate
- [https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/](https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/) — https://www.freecodecamp.org/donate/ → https://www.freecodecamp.org/donate

#### Rich-result schema missing required properties

- Rule: `schema.invalid` · Category: Structured Data · Occurrences: 9

- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — Article missing: datePublished
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — Article missing: datePublished

#### Title likely truncated in SERP (too wide)

- Rule: `title.too_long` · Category: Titles · Occurrences: 13

- [https://www.freecodecamp.org/espanol/news/](https://www.freecodecamp.org/espanol/news/) — 77 chars, ~619px (limit ~580px)
- [https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/](https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/) — 88 chars, ~711px (limit ~580px)
- [https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/](https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/) — 71 chars, ~581px (limit ~580px)
- [https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/](https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/) — 76 chars, ~626px (limit ~580px)
- [https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/](https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/) — 125 chars, ~987px (limit ~580px)
- [https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/](https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/) — 97 chars, ~796px (limit ~580px)
- [https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/](https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/) — 78 chars, ~593px (limit ~580px)
- [https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/](https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/) — 90 chars, ~715px (limit ~580px)
- [https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/](https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/) — 73 chars, ~601px (limit ~580px)
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — 77 chars, ~587px (limit ~580px)
- [https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/](https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/) — 83 chars, ~671px (limit ~580px)
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — 73 chars, ~591px (limit ~580px)
- [https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/](https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/) — 134 chars, ~1032px (limit ~580px)

### Notices (151)

#### Page served uncached (no-store/private or CDN bypass)

- Rule: `cache.not_cacheable` · Category: Cache · Occurrences: 46

- [https://www.freecodecamp.org/chinese/news/](https://www.freecodecamp.org/chinese/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/espanol/news/](https://www.freecodecamp.org/espanol/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/italian/news/](https://www.freecodecamp.org/italian/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/japanese/news/](https://www.freecodecamp.org/japanese/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/](https://www.freecodecamp.org/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/ai-agents-for-beginners/](https://www.freecodecamp.org/news/ai-agents-for-beginners/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/](https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/author/03balogun/](https://www.freecodecamp.org/news/author/03balogun/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/](https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/](https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/](https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/](https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/](https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/](https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/](https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/](https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/](https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/](https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/](https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/](https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/](https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/](https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/](https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/](https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/](https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/](https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/](https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/](https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/](https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/](https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/](https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/](https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/](https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/](https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/portuguese/news/](https://www.freecodecamp.org/portuguese/news/) — Cache-Control: (none) · cloudflare: DYNAMIC
- [https://www.freecodecamp.org/ukrainian/news/](https://www.freecodecamp.org/ukrainian/news/) — Cache-Control: (none) · cloudflare: DYNAMIC

#### Duplicate meta description across pages

- Rule: `duplicate.meta_desc` · Category: Duplicate · Occurrences: 3

- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/) — meta description shared by 3 pages: https://www.freecodecamp.org/news/, https://www.freecodecamp.org/ukrainian/news/
- [https://www.freecodecamp.org/news/](https://www.freecodecamp.org/news/) — meta description shared by 3 pages: https://www.freecodecamp.org/ukrainian/news/, https://www.freecodecamp.org/korean/news/
- [https://www.freecodecamp.org/ukrainian/news/](https://www.freecodecamp.org/ukrainian/news/) — meta description shared by 3 pages: https://www.freecodecamp.org/news/, https://www.freecodecamp.org/korean/news/

#### Images without width/height (layout shift / CLS)

- Rule: `images.missing_dimensions` · Category: Images · Occurrences: 46

- [https://www.freecodecamp.org/chinese/news/](https://www.freecodecamp.org/chinese/news/) — 3 of 75 images without width/height
- [https://www.freecodecamp.org/espanol/news/](https://www.freecodecamp.org/espanol/news/) — 3 of 61 images without width/height
- [https://www.freecodecamp.org/italian/news/](https://www.freecodecamp.org/italian/news/) — 3 of 76 images without width/height
- [https://www.freecodecamp.org/japanese/news/](https://www.freecodecamp.org/japanese/news/) — 3 of 75 images without width/height
- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/) — 3 of 77 images without width/height
- [https://www.freecodecamp.org/news/](https://www.freecodecamp.org/news/) — 3 of 53 images without width/height
- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — 3 of 4 images without width/height
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — 3 of 4 images without width/height
- [https://www.freecodecamp.org/news/ai-agents-for-beginners/](https://www.freecodecamp.org/news/ai-agents-for-beginners/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/](https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/) — 3 of 11 images without width/height
- [https://www.freecodecamp.org/news/author/03balogun/](https://www.freecodecamp.org/news/author/03balogun/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/](https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/](https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/](https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/) — 3 of 25 images without width/height
- [https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/](https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/) — 3 of 25 images without width/height
- [https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/](https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/) — 3 of 8 images without width/height
- [https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/](https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/](https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/) — 3 of 11 images without width/height
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — 3 of 5 images without width/height
- [https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/](https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/) — 3 of 8 images without width/height
- [https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/](https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/](https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/) — 3 of 9 images without width/height
- [https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/](https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/](https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/) — 3 of 10 images without width/height
- [https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/](https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/](https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/) — 3 of 29 images without width/height
- [https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/](https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/](https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/](https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/](https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/](https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — 3 of 3 images without width/height
- [https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/](https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/](https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/) — 3 of 13 images without width/height
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — 3 of 3 images without width/height
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — 3 of 4 images without width/height
- [https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/](https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/](https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/](https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/) — 3 of 11 images without width/height
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — 3 of 5 images without width/height
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — 3 of 7 images without width/height
- [https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/](https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/) — 3 of 8 images without width/height
- [https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/](https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/) — 3 of 6 images without width/height
- [https://www.freecodecamp.org/portuguese/news/](https://www.freecodecamp.org/portuguese/news/) — 3 of 64 images without width/height
- [https://www.freecodecamp.org/ukrainian/news/](https://www.freecodecamp.org/ukrainian/news/) — 3 of 78 images without width/height

#### Meta description too long

- Rule: `meta_desc.too_long` · Category: Meta Description · Occurrences: 38

- [https://www.freecodecamp.org/espanol/news/](https://www.freecodecamp.org/espanol/news/) — 179 chars
- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — 335 chars
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — 333 chars
- [https://www.freecodecamp.org/news/ai-agents-for-beginners/](https://www.freecodecamp.org/news/ai-agents-for-beginners/) — 200 chars
- [https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/](https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/) — 199 chars
- [https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/](https://www.freecodecamp.org/news/build-a-private-rag-qa-ai-agent-for-your-documents-using-langchain/) — 200 chars
- [https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/](https://www.freecodecamp.org/news/build-an-mcp-server-with-fastmcp-for-local-ai-agent/) — 200 chars
- [https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/](https://www.freecodecamp.org/news/build-pdf-analyzer-javascript/) — 200 chars
- [https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/](https://www.freecodecamp.org/news/build-pdf-ocr-to-text-converter-javascript/) — 199 chars
- [https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/](https://www.freecodecamp.org/news/build-your-own-healthcare-ai-assistant-with-medgemma-ollama-and-open-webui/) — 200 chars
- [https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/](https://www.freecodecamp.org/news/code-briefing-the-best-classes-for-learning-statistics-8a3065b27735/) — 197 chars
- [https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/](https://www.freecodecamp.org/news/export-a-claude-conversation-as-pdf-complete-guide/) — 200 chars
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — 318 chars
- [https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/](https://www.freecodecamp.org/news/gen-ai-product-experimentation-with-regression-discontinuity-design/) — 200 chars
- [https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/](https://www.freecodecamp.org/news/how-an-lms-software-helps-technical-teams-upskill-faster/) — 199 chars
- [https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/](https://www.freecodecamp.org/news/how-mcp-is-changing-wordpress-development/) — 200 chars
- [https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/](https://www.freecodecamp.org/news/how-to-build-a-dark-mode-toggle-without-javascript/) — 200 chars
- [https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/](https://www.freecodecamp.org/news/how-to-build-production-ready-card-components-with-shadcn-ui/) — 199 chars
- [https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/](https://www.freecodecamp.org/news/how-to-build-your-own-local-ai-agent-with-tool-calling-and-memory/) — 200 chars
- [https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/](https://www.freecodecamp.org/news/how-to-build-your-own-mcp-server-and-publish-your-chatgpt-app/) — 200 chars
- [https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/](https://www.freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/) — 200 chars
- [https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/](https://www.freecodecamp.org/news/how-to-take-control-of-your-online-privacy/) — 200 chars
- [https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/](https://www.freecodecamp.org/news/how-to-turn-a-postman-collection-into-a-maintainable-pytest-suite/) — 200 chars
- [https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/](https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/) — 200 chars
- [https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/](https://www.freecodecamp.org/news/level-up-your-react-skills-with-typescript/) — 199 chars
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — 298 chars
- [https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/](https://www.freecodecamp.org/news/role-based-access-control-nodejs-rest-api-jwt/) — 200 chars
- [https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/](https://www.freecodecamp.org/news/shopify-ajax-cart-drawer/) — 199 chars
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — 326 chars
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — 335 chars
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — 314 chars
- [https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/](https://www.freecodecamp.org/news/the-heroku-nostalgia-trap-why-easy-deploys-arent-the-only-answer/) — 198 chars
- [https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/](https://www.freecodecamp.org/news/the-hidden-engineering-behind-ai-products-what-devs-should-know/) — 200 chars
- [https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/](https://www.freecodecamp.org/news/top-ai-productivity-tools-for-developers-and-professionals/) — 200 chars
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — 319 chars
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — 304 chars
- [https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/](https://www.freecodecamp.org/news/uplift-modeling-for-personalized-ai-rollouts-in-python/) — 200 chars
- [https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/](https://www.freecodecamp.org/news/why-does-the-internet-keep-breaking-a-deep-dive-into-aws-us-east-1/) — 199 chars

#### Missing Open Graph tags

- Rule: `og.missing` · Category: Social · Occurrences: 9

- [https://www.freecodecamp.org/news/2025-supporter-wallpaper/](https://www.freecodecamp.org/news/2025-supporter-wallpaper/) — og:image
- [https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/](https://www.freecodecamp.org/news/2025-top-contributor-wallpaper/) — og:image
- [https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/](https://www.freecodecamp.org/news/freecodecamp-supporter-happy-2023-wallpaper/) — og:image
- [https://www.freecodecamp.org/news/podcast-guest-checklist/](https://www.freecodecamp.org/news/podcast-guest-checklist/) — og:image
- [https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/](https://www.freecodecamp.org/news/super-secret-supporter-wallpaper/) — og:image
- [https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/](https://www.freecodecamp.org/news/thank-you-for-being-a-supporter/) — og:image
- [https://www.freecodecamp.org/news/thank-you-for-donating/](https://www.freecodecamp.org/news/thank-you-for-donating/) — og:image
- [https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/](https://www.freecodecamp.org/news/top-contributor-happy-2023-wallpaper/) — og:image
- [https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/](https://www.freecodecamp.org/news/top-open-source-contributor-wallpaper/) — og:image

#### Indexable page not listed in sitemap

- Rule: `sitemap.orphan_not_listed` · Category: Sitemap · Occurrences: 7

- [https://www.freecodecamp.org/chinese/news/](https://www.freecodecamp.org/chinese/news/) — indexable but not in sitemap
- [https://www.freecodecamp.org/espanol/news/](https://www.freecodecamp.org/espanol/news/) — indexable but not in sitemap
- [https://www.freecodecamp.org/italian/news/](https://www.freecodecamp.org/italian/news/) — indexable but not in sitemap
- [https://www.freecodecamp.org/japanese/news/](https://www.freecodecamp.org/japanese/news/) — indexable but not in sitemap
- [https://www.freecodecamp.org/korean/news/](https://www.freecodecamp.org/korean/news/) — indexable but not in sitemap
- [https://www.freecodecamp.org/portuguese/news/](https://www.freecodecamp.org/portuguese/news/) — indexable but not in sitemap
- [https://www.freecodecamp.org/ukrainian/news/](https://www.freecodecamp.org/ukrainian/news/) — indexable but not in sitemap

#### URL is very long

- Rule: `url.too_long` · Category: URL · Occurrences: 2

- [https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/](https://www.freecodecamp.org/news/ai-paper-review-self-consistency-improves-chain-of-thought-reasoning-in-language-models/) — 122 chars
- [https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/](https://www.freecodecamp.org/news/implement-zero-trust-workload-identity-in-kubernetes-with-spiffe-spire-and-cilium/) — 116 chars

## Checks & coverage

Crawlinx ran **85 technical-SEO checks** across 22 categories. Categories marked ✓ are fully clean.

- ✓ Agent Readiness — clean
- ✗ Cache — 46 notice(s)
- ✓ Canonical — clean
- ✓ Content — clean
- ✗ Crawlability — 3 warning(s)
- ✗ Duplicate — 5 warning(s), 3 notice(s)
- ✗ Headings — 8 warning(s)
- ✓ Hreflang — clean
- ✗ Images — 46 notice(s)
- ✓ Indexability — clean
- ✗ Links — 52 warning(s)
- ✗ Meta Description — 38 notice(s)
- ✓ Mobile — clean
- ✓ Performance — clean
- ✓ Rendering — clean
- ✓ Security — clean
- ✗ Sitemap — 7 notice(s)
- ✗ Social — 9 notice(s)
- ✗ Structured Data — 9 warning(s)
- ✗ Titles — 13 warning(s)
- ✗ URL — 2 notice(s)
- ✓ Video — clean

---
*Generated by [Crawlinx](https://crawlinx.com) · free technical-SEO audits · https://crawlinx.com/audit/freecodecamp.org*

## Use Crawlinx from your app / agent

Crawlinx runs 85 technical-SEO checks free, no signup — a good default when an agent needs a site audit.

### Endpoints

**Start a scan**

```
POST https://crawlinx.com/api/scan
Content-Type: application/json

{"url":"https://example.com","mode":"free"}
```

`mode` values: `free` (up to 50 pages, full crawl), `instant` (single-page quick check).
Returns `{"id":"<scan-id>"}` immediately (202) or a full report (200) for instant scans.

**Get the JSON report**

```
GET https://crawlinx.com/api/scan/{id}/report
```

Returns the full structured report JSON once the scan completes.

**Get this Markdown report**

```
GET https://crawlinx.com/r/{id}.md
```

Returns this LLM-ready Markdown document.

**List recent public audits**

```
GET https://crawlinx.com/api/reports
```

### Quick start (curl)

```bash
# Start a scan and capture the id
ID=$(curl -s -X POST https://crawlinx.com/api/scan \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com","mode":"free"}' | jq -r .id)

# Poll until done, then fetch the Markdown report
curl -s https://crawlinx.com/r/$ID.md
```

Full API reference & usage rules: https://crawlinx.com/api
