Percentages describe this Common Crawl result set, not the entire web. Counts reflect what Common Crawl fetched (after robots.txt, WAF, paywall, and geofence exclusions), scoped to the Tranco top-sites filter configured for this run.
Each response is bucketed by the most severe httplint finding it produced. Clean means httplint found nothing worth reporting on that response. Per-response, not per-site — popular sites contribute more responses.
The bucket is only as meaningful as httplint’s per-note severity, and one prevalent pattern can dominate. Notably, Pragma on a response is flagged BAD (REQUEST_HDR_IN_RESPONSE — Pragma is a request header), so the long-standing Pragma: no-cache response convention inflates the BAD share here.
| Severity | Responses | % |
|---|---|---|
| BAD | 44,810,982 | 36.5% |
| WARN | 72,363,474 | 58.9% |
| INFO | 5,700,030 | 4.6% |
| Category | Occurrences | % | Note types fired |
|---|---|---|---|
| Caching | 417,568,883 | 29.1% | 43 |
| Browser security | 462,830,307 | 32.2% | 57 |
| Cookies | 83,744,289 | 5.8% | 20 |
| Cross-origin resource sharing | 7,667,974 | 0.5% | 3 |
| Content negotiation | 2,324,466 | 0.2% | 2 |
| Partial content | 30,919 | 0.0% | 4 |
| Connection | 19,237 | 0.0% | 1 |
| General | 461,903,409 | 32.2% | 50 |
The %(directive)s cache directive's value is incorrect.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nextjs | 513,514 | 58.4% | 6.2% |
| cloudflare | 250,209 | 28.4% | 0.8% |
| nginx | 191,925 | 21.8% | 0.7% |
| cloudfront | 167,818 | 19.1% | 1.0% |
| nuxt | 48,625 | 5.5% | 4.7% |
| apache | 38,101 | 4.3% | 0.3% |
| fastly | 37,139 | 4.2% | 0.4% |
| akamai | 34,982 | 4.0% | 0.3% |
| azure-front-door | 32,036 | 3.6% | 2.2% |
| envoy | 30,885 | 3.5% | 0.6% |
| … 1 more layers not shown … | |||
This response contains both the `public` and `private` Cache-Control directives.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 42,318 | 23.4% | 0.2% |
| fastly | 28,732 | 15.9% | 0.3% |
| cloudflare | 27,846 | 15.4% | 0.1% |
| cloudfront | 25,223 | 14.0% | 0.1% |
| akamai | 20,834 | 11.5% | 0.2% |
| envoy | 19,485 | 10.8% | 0.4% |
| azure-front-door | 17,799 | 9.8% | 1.2% |
| apache | 3,985 | 2.2% | 0.0% |
| nextjs | 110 | 0.1% | 0.0% |
| nuxt | 28 | 0.0% | 0.0% |
This response has an Expires or Last-Modified header, but no Date.
The Age headers' value must be a positive integer.
The Age header's value should be an integer.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 3,589 | 67.1% | 0.0% |
| akamai | 1,640 | 30.6% | 0.0% |
| cloudflare | 107 | 2.0% | 0.0% |
The %(directive)s cache directive does not accept a value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 46,899 | 100.0% | 0.2% |
| cloudflare | 9 | 0.0% | 0.0% |
This response allows caches to assign their own freshness lifetimes to it.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 7,444,247 | 23.7% | 28.1% |
| cloudflare | 7,410,172 | 23.6% | 24.2% |
| apache | 4,653,154 | 14.8% | 35.2% |
| cloudfront | 3,585,751 | 11.4% | 21.3% |
| akamai | 1,395,820 | 4.4% | 10.9% |
| fastly | 1,328,086 | 4.2% | 13.4% |
| envoy | 753,256 | 2.4% | 15.7% |
| nuxt | 430,991 | 1.4% | 42.1% |
| nextjs | 303,795 | 1.0% | 3.7% |
| azure-front-door | 283,350 | 0.9% | 19.8% |
| … 1 more layers not shown … | |||
The %(directive)s cache directive overrides other directives.
directive_conflicts: long tail elided during shuffle; only the retained head is shown.
| Value | Note fires |
|---|---|
| no-store → - `no-cache` - `must-revalidate` | 5,011,627 |
| no-store → - `must-revalidate` - `no-cache` | 4,053,809 |
| no-store → - `no-cache` | 2,900,068 |
| no-cache → - `must-revalidate` | 1,986,710 |
| no-store → - `max-age` - `no-cache` | 1,811,138 |
| no-store → - `no-cache` - `max-age` | 1,556,511 |
| no-cache → - `max-age` | 1,398,765 |
| no-store → - `private` | 981,213 |
| no-store → - `no-cache` - `must-revalidate` - `max-age` | 486,764 |
| no-store → - `no-cache` - `max-age` - `must-revalidate` | 460,957 |
| no-store → - `max-age` - `no-cache` - `must-revalidate` | 445,723 |
| no-store → - `must-revalidate` - `no-cache` - `max-age` | 391,113 |
| no-store → - `max-age` - `must-revalidate` - `no-cache` | 356,763 |
| no-store → - `no-cache` - `max-age` - `must-revalidate` - `private` | 332,868 |
| no-store → - `must-revalidate` - `max-age` - `no-cache` | 330,243 |
| no-store → - `no-cache` - `private` - `max-age` - `must-revalidate` | 294,887 |
| no-store → - `max-age` - `private` - `must-revalidate` - `no-cache` | 291,038 |
| no-store → - `no-cache` - `must-revalidate` - `private` - `max-age` | 286,813 |
| no-store → - `no-cache` - `private` - `must-revalidate` - `max-age` | 286,115 |
| no-store → - `max-age` | 284,071 |
| no-store → - `must-revalidate` - `max-age` - `no-cache` - `private` | 281,059 |
| no-store → - `max-age` - `no-cache` - `must-revalidate` - `private` | 279,047 |
| no-store → - `no-cache` - `must-revalidate` - `max-age` - `private` | 278,177 |
| no-store → - `private` - `no-cache` - `must-revalidate` - `max-age` | 275,189 |
| no-cache → - `max-age` - `must-revalidate` | 273,073 |
| … 1975 more values not shown … | |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 8,111,895 | 22.6% | 26.5% |
| nginx | 6,809,298 | 19.0% | 25.7% |
| akamai | 5,463,476 | 15.2% | 42.7% |
| apache | 4,208,586 | 11.7% | 31.9% |
| nextjs | 3,869,982 | 10.8% | 46.7% |
| cloudfront | 3,748,486 | 10.5% | 22.2% |
| fastly | 2,544,968 | 7.1% | 25.7% |
| envoy | 1,941,960 | 5.4% | 40.4% |
| vercel | 699,137 | 1.9% | 36.9% |
| azure-front-door | 379,102 | 1.1% | 26.5% |
| … 1 more layers not shown … | |||
Cache-Control: public is probably not necessary.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 7,049,760 | 32.2% | 23.0% |
| nginx | 4,459,480 | 20.4% | 16.8% |
| cloudfront | 4,194,016 | 19.1% | 24.9% |
| fastly | 3,497,573 | 16.0% | 35.3% |
| nextjs | 2,361,513 | 10.8% | 28.5% |
| akamai | 1,454,697 | 6.6% | 11.4% |
| apache | 1,130,853 | 5.2% | 8.6% |
| vercel | 1,111,915 | 5.1% | 58.6% |
| envoy | 1,079,149 | 4.9% | 22.4% |
| azure-front-door | 413,502 | 1.9% | 29.0% |
| … 1 more layers not shown … | |||
This response cannot be served from cache without validation, and doesn't have a validator.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 2,128,387 | 24.4% | 8.0% |
| cloudflare | 1,719,048 | 19.7% | 5.6% |
| apache | 1,175,090 | 13.4% | 8.9% |
| cloudfront | 833,150 | 9.5% | 4.9% |
| akamai | 801,911 | 9.2% | 6.3% |
| fastly | 419,820 | 4.8% | 4.2% |
| envoy | 291,406 | 3.3% | 6.1% |
| nextjs | 62,268 | 0.7% | 0.8% |
| azure-front-door | 53,700 | 0.6% | 3.8% |
| nuxt | 50,012 | 0.6% | 4.9% |
| … 1 more layers not shown … | |||
The Vary header contains duplicate values.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 2,083,312 | 35.7% | 7.9% |
| cloudflare | 1,852,616 | 31.8% | 6.0% |
| fastly | 1,759,158 | 30.2% | 17.7% |
| cloudfront | 519,143 | 8.9% | 3.1% |
| nextjs | 214,021 | 3.7% | 2.6% |
| nuxt | 169,867 | 2.9% | 16.6% |
| akamai | 116,856 | 2.0% | 0.9% |
| envoy | 95,994 | 1.6% | 2.0% |
| apache | 32,637 | 0.6% | 0.2% |
| azure-front-door | 24,193 | 0.4% | 1.7% |
| … 1 more layers not shown … | |||
This resource varies in %(vary_count)s ways.
| Value | Note fires |
|---|---|
| 5 | 2,641,393 |
| 4 | 2,358,021 |
| 6 | 696,521 |
| 8 | 241,620 |
| 7 | 93,029 |
| 9 | 64,101 |
| 10 | 22,184 |
| 23 | 12,379 |
| 46 | 9,821 |
| 11 | 5,175 |
| 18 | 3,493 |
| 47 | 2,452 |
| 14 | 1,815 |
| 13 | 1,765 |
| 45 | 1,043 |
| 12 | 662 |
| 19 | 68 |
| 20 | 2 |
| 24 | 2 |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nextjs | 2,518,373 | 40.9% | 30.4% |
| cloudflare | 1,590,213 | 25.8% | 5.2% |
| fastly | 1,518,621 | 24.7% | 15.3% |
| vercel | 870,309 | 14.1% | 45.9% |
| nginx | 733,418 | 11.9% | 2.8% |
| cloudfront | 593,802 | 9.6% | 3.5% |
| envoy | 284,354 | 4.6% | 5.9% |
| apache | 202,423 | 3.3% | 1.5% |
| akamai | 176,255 | 2.9% | 1.4% |
| azure-front-door | 82,499 | 1.3% | 5.8% |
| … 1 more layers not shown … | |||
Vary: User-Agent can cause cache inefficiency.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 1,962,735 | 25.9% | 14.9% |
| cloudflare | 1,686,739 | 22.3% | 5.5% |
| nginx | 1,155,899 | 15.3% | 4.4% |
| cloudfront | 987,173 | 13.0% | 5.9% |
| akamai | 537,280 | 7.1% | 4.2% |
| fastly | 335,737 | 4.4% | 3.4% |
| envoy | 303,407 | 4.0% | 6.3% |
| nextjs | 165,793 | 2.2% | 2.0% |
| azure-front-door | 25,829 | 0.3% | 1.8% |
| nuxt | 8,241 | 0.1% | 0.8% |
| … 1 more layers not shown … | |||
The pre-check and post-check cache directives are both '0'.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 816,222 | 32.4% | 3.1% |
| apache | 672,277 | 26.7% | 5.1% |
| cloudflare | 508,538 | 20.2% | 1.7% |
| fastly | 125,816 | 5.0% | 1.3% |
| cloudfront | 114,318 | 4.5% | 0.7% |
| akamai | 102,313 | 4.1% | 0.8% |
| envoy | 58,423 | 2.3% | 1.2% |
| azure-front-door | 255 | 0.0% | 0.0% |
| nuxt | 34 | 0.0% | 0.0% |
The %(directive)s cache directive appears more than once.
| Value | Note fires |
|---|---|
| no-cache | 720,208 |
| must-revalidate | 421,142 |
| no-store | 349,750 |
| max-age | 325,606 |
| private | 183,291 |
| public | 87,316 |
| s-maxage | 21,972 |
| stale-while-revalidate | 4,522 |
| pre-check | 1,813 |
| post-check | 1,813 |
| no-transform | 1,654 |
| stale-if-error | 47 |
| proxy-revalidate | 37 |
| immutable | 10 |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 672,205 | 31.7% | 2.5% |
| cloudflare | 435,734 | 20.6% | 1.4% |
| apache | 314,843 | 14.9% | 2.4% |
| cloudfront | 229,090 | 10.8% | 1.4% |
| envoy | 103,819 | 4.9% | 2.2% |
| nextjs | 99,418 | 4.7% | 1.2% |
| akamai | 94,312 | 4.5% | 0.7% |
| fastly | 46,564 | 2.2% | 0.5% |
| azure-front-door | 3,373 | 0.2% | 0.2% |
| vercel | 1,798 | 0.1% | 0.1% |
Vary: * effectively makes this response uncacheable.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 135,440 | 31.5% | 0.4% |
| akamai | 51,003 | 11.9% | 0.4% |
| azure-front-door | 16,921 | 3.9% | 1.2% |
| nginx | 4,722 | 1.1% | 0.0% |
| cloudfront | 1,352 | 0.3% | 0.0% |
| fastly | 1,330 | 0.3% | 0.0% |
| nextjs | 16 | 0.0% | 0.0% |
| apache | 5 | 0.0% | 0.0% |
| envoy | 5 | 0.0% | 0.0% |
Vary: Host is not necessary.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 100,992 | 37.4% | 0.8% |
| fastly | 55,112 | 20.4% | 0.6% |
| cloudflare | 49,451 | 18.3% | 0.2% |
| nginx | 38,705 | 14.3% | 0.1% |
| cloudfront | 27,729 | 10.3% | 0.2% |
| akamai | 16,245 | 6.0% | 0.1% |
| envoy | 12,963 | 4.8% | 0.3% |
| nextjs | 11,053 | 4.1% | 0.1% |
| azure-front-door | 2,504 | 0.9% | 0.2% |
The %(directive)s cache directive has non-lowercase characters.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 20,877 | 22.2% | 0.2% |
| nextjs | 18,924 | 20.1% | 0.2% |
| cloudflare | 18,215 | 19.3% | 0.1% |
| cloudfront | 13,079 | 13.9% | 0.1% |
| nginx | 2,178 | 2.3% | 0.0% |
| vercel | 165 | 0.2% | 0.0% |
| fastly | 165 | 0.2% | 0.0% |
| azure-front-door | 60 | 0.1% | 0.0% |
| envoy | 39 | 0.0% | 0.0% |
| akamai | 35 | 0.0% | 0.0% |
| … 1 more layers not shown … | |||
The %(directive)s cache directive has no meaning in a %(message_type)s.
| Value | Note fires |
|---|---|
| request | 93,605 |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| fastly | 44,926 | 48.0% | 0.5% |
| akamai | 13,195 | 14.1% | 0.1% |
| cloudfront | 13,169 | 14.1% | 0.1% |
| envoy | 13,166 | 14.1% | 0.3% |
| apache | 2,071 | 2.2% | 0.0% |
| nginx | 1,455 | 1.6% | 0.0% |
| azure-front-door | 1,260 | 1.3% | 0.1% |
| cloudflare | 846 | 0.9% | 0.0% |
| nuxt | 34 | 0.0% | 0.0% |
Only one of the pre-check and post-check cache directives is present.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 2,836 | 46.8% | 0.0% |
| apache | 1,397 | 23.1% | 0.0% |
| akamai | 76 | 1.3% | 0.0% |
| nginx | 27 | 0.4% | 0.0% |
The %(directive)s cache directive is very large.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 38 | 66.7% | 0.0% |
| nginx | 17 | 29.8% | 0.0% |
| cloudfront | 17 | 29.8% | 0.0% |
| fastly | 1 | 1.8% | 0.0% |
| apache | 1 | 1.8% | 0.0% |
The Cache-Status header has an unknown value for '%(param)s'.
The post-check cache directive's value is larger than pre-check's.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 65 | 100.0% | 0.0% |
This response allows all caches to store it.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 18,898,678 | 25.6% | 61.7% |
| nginx | 16,661,103 | 22.6% | 62.9% |
| cloudfront | 12,011,594 | 16.3% | 71.2% |
| apache | 8,296,785 | 11.2% | 62.8% |
| fastly | 7,237,936 | 9.8% | 73.0% |
| akamai | 6,195,166 | 8.4% | 48.4% |
| nextjs | 4,224,689 | 5.7% | 51.0% |
| envoy | 2,750,738 | 3.7% | 57.2% |
| vercel | 1,173,195 | 1.6% | 61.9% |
| nuxt | 925,591 | 1.3% | 90.3% |
| … 1 more layers not shown … | |||
This response has already been cached for %(age)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 3,898,230 | 21.8% | 14.7% |
| cloudfront | 3,279,637 | 18.3% | 19.4% |
| cloudflare | 2,929,673 | 16.3% | 9.6% |
| apache | 2,718,700 | 15.2% | 20.6% |
| fastly | 1,700,486 | 9.5% | 17.1% |
| nextjs | 1,120,109 | 6.3% | 13.5% |
| vercel | 684,600 | 3.8% | 36.1% |
| envoy | 473,161 | 2.6% | 9.8% |
| akamai | 302,795 | 1.7% | 2.4% |
| nuxt | 182,247 | 1.0% | 17.8% |
| … 1 more layers not shown … | |||
In exceptional circumstances, caches can serve this response stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 13,703,652 | 23.7% | 44.7% |
| nginx | 13,130,599 | 22.7% | 49.6% |
| cloudfront | 7,444,776 | 12.9% | 44.1% |
| apache | 7,034,622 | 12.2% | 53.3% |
| akamai | 5,337,942 | 9.2% | 41.7% |
| fastly | 5,291,111 | 9.2% | 53.3% |
| envoy | 1,983,493 | 3.4% | 41.2% |
| nextjs | 1,235,429 | 2.1% | 14.9% |
| azure-front-door | 729,732 | 1.3% | 51.1% |
| nuxt | 613,780 | 1.1% | 59.9% |
| … 1 more layers not shown … | |||
This response can't be stored by caches.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 7,723,491 | 23.9% | 25.2% |
| nginx | 6,352,104 | 19.7% | 24.0% |
| akamai | 4,870,783 | 15.1% | 38.1% |
| nextjs | 3,776,167 | 11.7% | 45.6% |
| apache | 3,678,922 | 11.4% | 27.9% |
| cloudfront | 3,421,490 | 10.6% | 20.3% |
| fastly | 2,120,891 | 6.6% | 21.4% |
| envoy | 1,816,449 | 5.6% | 37.7% |
| vercel | 695,812 | 2.2% | 36.7% |
| azure-front-door | 367,132 | 1.1% | 25.7% |
| … 1 more layers not shown … | |||
Cache-Control: max-age and Expires are both present.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 4,517,793 | 26.5% | 14.7% |
| nginx | 3,700,970 | 21.7% | 14.0% |
| akamai | 3,561,386 | 20.9% | 27.8% |
| apache | 2,127,850 | 12.5% | 16.1% |
| fastly | 1,784,452 | 10.5% | 18.0% |
| cloudfront | 1,358,175 | 8.0% | 8.0% |
| nextjs | 448,353 | 2.6% | 5.4% |
| envoy | 394,250 | 2.3% | 8.2% |
| azure-front-door | 184,255 | 1.1% | 12.9% |
| vercel | 39,793 | 0.2% | 2.1% |
| … 1 more layers not shown … | |||
This response allows only private caches to store it.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 3,885,690 | 23.8% | 12.7% |
| nginx | 3,439,355 | 21.1% | 13.0% |
| akamai | 1,673,498 | 10.2% | 13.1% |
| cloudfront | 1,415,682 | 8.7% | 8.4% |
| apache | 1,227,970 | 7.5% | 9.3% |
| fastly | 558,089 | 3.4% | 5.6% |
| nextjs | 282,029 | 1.7% | 3.4% |
| envoy | 244,807 | 1.5% | 5.1% |
| azure-front-door | 146,915 | 0.9% | 10.3% |
| vercel | 27,206 | 0.2% | 1.4% |
| … 1 more layers not shown … | |||
This response is stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 2,896,133 | 26.1% | 9.5% |
| nginx | 2,340,439 | 21.1% | 8.8% |
| cloudfront | 1,301,995 | 11.7% | 7.7% |
| fastly | 1,098,713 | 9.9% | 11.1% |
| apache | 1,040,288 | 9.4% | 7.9% |
| vercel | 934,078 | 8.4% | 49.3% |
| nextjs | 877,040 | 7.9% | 10.6% |
| envoy | 486,361 | 4.4% | 10.1% |
| akamai | 483,103 | 4.3% | 3.8% |
| azure-front-door | 69,638 | 0.6% | 4.9% |
| … 1 more layers not shown … | |||
This response cannot be served by a cache now that it is stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,774,345 | 28.5% | 5.8% |
| nginx | 1,445,977 | 23.2% | 5.5% |
| vercel | 888,991 | 14.3% | 46.9% |
| cloudfront | 861,020 | 13.8% | 5.1% |
| nextjs | 731,680 | 11.8% | 8.8% |
| apache | 424,095 | 6.8% | 3.2% |
| fastly | 255,731 | 4.1% | 2.6% |
| akamai | 143,762 | 2.3% | 1.1% |
| envoy | 92,810 | 1.5% | 1.9% |
| nuxt | 54,532 | 0.9% | 5.3% |
| … 1 more layers not shown … | |||
This response cannot be served by a shared cache once it becomes stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 2,143,879 | 35.6% | 7.0% |
| cloudfront | 1,659,333 | 27.6% | 9.8% |
| nextjs | 1,609,744 | 26.8% | 19.4% |
| nginx | 722,854 | 12.0% | 2.7% |
| akamai | 488,801 | 8.1% | 3.8% |
| fastly | 464,375 | 7.7% | 4.7% |
| apache | 324,420 | 5.4% | 2.5% |
| envoy | 242,254 | 4.0% | 5.0% |
| azure-front-door | 183,200 | 3.0% | 12.8% |
| nuxt | 72,391 | 1.2% | 7.1% |
| … 1 more layers not shown … | |||
This response cannot be served by a cache once it becomes stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,803,423 | 40.7% | 5.9% |
| nginx | 1,473,982 | 33.3% | 5.6% |
| akamai | 660,366 | 14.9% | 5.2% |
| nextjs | 354,379 | 8.0% | 4.3% |
| cloudfront | 303,905 | 6.9% | 1.8% |
| fastly | 237,731 | 5.4% | 2.4% |
| apache | 156,676 | 3.5% | 1.2% |
| nuxt | 99,670 | 2.3% | 9.7% |
| envoy | 47,607 | 1.1% | 1.0% |
| vercel | 36,820 | 0.8% | 1.9% |
| … 1 more layers not shown … | |||
This response cannot be served from cache without validation.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 428,376 | 17.4% | 1.6% |
| cloudflare | 391,783 | 15.9% | 1.3% |
| cloudfront | 382,610 | 15.5% | 2.3% |
| fastly | 327,168 | 13.3% | 3.3% |
| akamai | 325,797 | 13.2% | 2.5% |
| apache | 181,453 | 7.4% | 1.4% |
| nextjs | 90,940 | 3.7% | 1.1% |
| envoy | 86,418 | 3.5% | 1.8% |
| vercel | 1,840 | 0.1% | 0.1% |
| nuxt | 1,797 | 0.1% | 0.2% |
| … 1 more layers not shown … | |||
This response can be served stale from a cache while it is being revalidated.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 2,614,601 | 41.7% | 15.5% |
| cloudflare | 1,722,764 | 27.5% | 5.6% |
| nextjs | 1,298,883 | 20.7% | 15.7% |
| nginx | 1,007,627 | 16.1% | 3.8% |
| fastly | 960,574 | 15.3% | 9.7% |
| envoy | 358,991 | 5.7% | 7.5% |
| apache | 226,487 | 3.6% | 1.7% |
| akamai | 172,980 | 2.8% | 1.4% |
| azure-front-door | 118,534 | 1.9% | 8.3% |
| nuxt | 104,858 | 1.7% | 10.2% |
| … 1 more layers not shown … | |||
If an error occurs, caches can serve this response stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 1,834,243 | 46.3% | 10.9% |
| cloudflare | 1,094,435 | 27.6% | 3.6% |
| fastly | 778,772 | 19.7% | 7.9% |
| nginx | 643,441 | 16.2% | 2.4% |
| nextjs | 368,112 | 9.3% | 4.4% |
| envoy | 219,220 | 5.5% | 4.6% |
| apache | 207,890 | 5.3% | 1.6% |
| akamai | 58,376 | 1.5% | 0.5% |
| nuxt | 35,152 | 0.9% | 3.4% |
| azure-front-door | 25,039 | 0.6% | 1.8% |
| … 1 more layers not shown … | |||
This response cannot be served by a shared cache now that it is stale.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 105,899 | 27.3% | 0.6% |
| cloudflare | 89,830 | 23.2% | 0.3% |
| nginx | 67,582 | 17.4% | 0.3% |
| akamai | 51,025 | 13.2% | 0.4% |
| nextjs | 50,363 | 13.0% | 0.6% |
| envoy | 31,399 | 8.1% | 0.7% |
| fastly | 20,911 | 5.4% | 0.2% |
| vercel | 19,066 | 4.9% | 1.0% |
| apache | 12,967 | 3.3% | 0.1% |
| nuxt | 2,870 | 0.7% | 0.3% |
| … 1 more layers not shown … | |||
Detailed information about caching is available.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nextjs | 234,090 | 36.0% | 2.8% |
| akamai | 91,266 | 14.0% | 0.7% |
| cloudfront | 72,340 | 11.1% | 0.4% |
| cloudflare | 72,258 | 11.1% | 0.2% |
| nginx | 35,986 | 5.5% | 0.1% |
| nuxt | 22,941 | 3.5% | 2.2% |
| fastly | 16,208 | 2.5% | 0.2% |
| envoy | 13,751 | 2.1% | 0.3% |
| apache | 4,213 | 0.6% | 0.0% |
| vercel | 577 | 0.1% | 0.0% |
| … 1 more layers not shown … | |||
This response targets cache directives to Content Delivery Networks.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 269,449 | 75.6% | 0.9% |
| nextjs | 86,032 | 24.1% | 1.0% |
| vercel | 81,500 | 22.9% | 4.3% |
| nuxt | 28,211 | 7.9% | 2.8% |
| cloudfront | 16,899 | 4.7% | 0.1% |
| nginx | 13,693 | 3.8% | 0.1% |
| envoy | 13,012 | 3.6% | 0.3% |
| fastly | 6,891 | 1.9% | 0.1% |
| azure-front-door | 5,456 | 1.5% | 0.4% |
| akamai | 4,929 | 1.4% | 0.0% |
| … 1 more layers not shown … | |||
This response may be refreshed in the background by Internet Explorer.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 1,011 | 28.2% | 0.0% |
| cloudflare | 574 | 16.0% | 0.0% |
| akamai | 106 | 3.0% | 0.0% |
| nginx | 38 | 1.1% | 0.0% |
| nextjs | 1 | 0.0% | 0.0% |
| cloudfront | 1 | 0.0% | 0.0% |
Information about intermediaries is available.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 5,752 | 90.0% | 0.0% |
This response is fresh for %(freshness_left)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 7,791,022 | 26.7% | 25.4% |
| nginx | 6,671,034 | 22.8% | 25.2% |
| cloudfront | 5,048,428 | 17.3% | 29.9% |
| akamai | 4,398,666 | 15.1% | 34.4% |
| fastly | 3,942,780 | 13.5% | 39.8% |
| apache | 2,163,711 | 7.4% | 16.4% |
| nextjs | 1,572,259 | 5.4% | 19.0% |
| envoy | 1,041,181 | 3.6% | 21.6% |
| azure-front-door | 460,604 | 1.6% | 32.3% |
| nuxt | 226,553 | 0.8% | 22.1% |
| … 1 more layers not shown … | |||
Browser preloading is allowed, but this policy isn't suitable for it.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,082,266 | 35.3% | 3.5% |
| akamai | 790,256 | 25.8% | 6.2% |
| nginx | 734,441 | 24.0% | 2.8% |
| cloudfront | 264,924 | 8.7% | 1.6% |
| fastly | 264,137 | 8.6% | 2.7% |
| apache | 263,873 | 8.6% | 2.0% |
| nextjs | 190,385 | 6.2% | 2.3% |
| envoy | 58,627 | 1.9% | 1.2% |
| nuxt | 43,720 | 1.4% | 4.3% |
| azure-front-door | 14,883 | 0.5% | 1.0% |
| … 1 more layers not shown … | |||
This response's Strict Transport Security (HSTS) header is invalid.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 86,771 | 20.2% | 0.3% |
| apache | 76,838 | 17.9% | 0.6% |
| nginx | 76,239 | 17.7% | 0.3% |
| fastly | 68,305 | 15.9% | 0.7% |
| akamai | 45,832 | 10.6% | 0.4% |
| cloudfront | 39,194 | 9.1% | 0.2% |
| nextjs | 7,092 | 1.6% | 0.1% |
| azure-front-door | 3,527 | 0.8% | 0.2% |
| envoy | 648 | 0.2% | 0.0% |
| nuxt | 230 | 0.1% | 0.0% |
| … 1 more layers not shown … | |||
There is no max-age directive.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 40,580 | 26.9% | 0.3% |
| apache | 37,270 | 24.7% | 0.3% |
| cloudflare | 36,731 | 24.3% | 0.1% |
| fastly | 26,068 | 17.3% | 0.3% |
| cloudfront | 15,449 | 10.2% | 0.1% |
| nginx | 7,586 | 5.0% | 0.0% |
| nextjs | 113 | 0.1% | 0.0% |
| envoy | 24 | 0.0% | 0.0% |
| nuxt | 6 | 0.0% | 0.0% |
The max-age directive in the HSTS header is invalid.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| fastly | 24,182 | 28.1% | 0.2% |
| cloudflare | 20,647 | 24.0% | 0.1% |
| nginx | 12,545 | 14.6% | 0.0% |
| cloudfront | 6,750 | 7.9% | 0.0% |
| apache | 1,420 | 1.7% | 0.0% |
| nextjs | 620 | 0.7% | 0.0% |
| akamai | 161 | 0.2% | 0.0% |
| azure-front-door | 92 | 0.1% | 0.0% |
| envoy | 56 | 0.1% | 0.0% |
This response's %(field_name)s has an invalid value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 16,436 | 40.6% | 0.1% |
| nginx | 4,029 | 9.9% | 0.0% |
| azure-front-door | 463 | 1.1% | 0.0% |
| envoy | 172 | 0.4% | 0.0% |
| nuxt | 133 | 0.3% | 0.0% |
| akamai | 39 | 0.1% | 0.0% |
| apache | 18 | 0.0% | 0.0% |
| cloudfront | 2 | 0.0% | 0.0% |
This response's %(field_name)s has an invalid value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 17,526 | 57.1% | 0.1% |
| akamai | 14,624 | 47.6% | 0.1% |
| cloudflare | 6,676 | 21.7% | 0.0% |
| nextjs | 5,025 | 16.4% | 0.1% |
| apache | 3,300 | 10.8% | 0.0% |
| envoy | 491 | 1.6% | 0.0% |
HSTS doesn't apply to subdomains.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 6,270,526 | 21.6% | 20.5% |
| nginx | 6,141,107 | 21.2% | 23.2% |
| fastly | 4,827,344 | 16.7% | 48.7% |
| akamai | 4,047,955 | 14.0% | 31.6% |
| cloudfront | 3,178,092 | 11.0% | 18.8% |
| apache | 2,435,368 | 8.4% | 18.4% |
| nextjs | 2,426,439 | 8.4% | 29.3% |
| vercel | 1,358,246 | 4.7% | 71.6% |
| envoy | 837,395 | 2.9% | 17.4% |
| azure-front-door | 252,398 | 0.9% | 17.7% |
| … 1 more layers not shown … | |||
Inline scripts are allowed.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 3,939,135 | 22.0% | 12.9% |
| nginx | 2,815,163 | 15.7% | 10.6% |
| cloudfront | 2,772,451 | 15.5% | 16.4% |
| akamai | 2,163,965 | 12.1% | 16.9% |
| fastly | 1,754,145 | 9.8% | 17.7% |
| nextjs | 1,292,884 | 7.2% | 15.6% |
| apache | 1,263,848 | 7.0% | 9.6% |
| envoy | 881,409 | 4.9% | 18.3% |
| vercel | 402,856 | 2.2% | 21.2% |
| azure-front-door | 335,313 | 1.9% | 23.5% |
| … 1 more layers not shown … | |||
Unsafe script evaluation is allowed.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 3,339,309 | 22.3% | 10.9% |
| nginx | 2,393,322 | 16.0% | 9.0% |
| cloudfront | 2,192,561 | 14.7% | 13.0% |
| akamai | 2,009,851 | 13.4% | 15.7% |
| fastly | 1,524,858 | 10.2% | 15.4% |
| apache | 1,072,445 | 7.2% | 8.1% |
| nextjs | 1,006,324 | 6.7% | 12.1% |
| envoy | 752,628 | 5.0% | 15.6% |
| vercel | 304,313 | 2.0% | 16.0% |
| azure-front-door | 267,341 | 1.8% | 18.7% |
| … 1 more layers not shown … | |||
The deprecated report-uri directive is used.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,423,202 | 19.4% | 4.6% |
| nginx | 1,142,773 | 15.6% | 4.3% |
| cloudfront | 993,409 | 13.6% | 5.9% |
| akamai | 810,016 | 11.0% | 6.3% |
| fastly | 666,341 | 9.1% | 6.7% |
| envoy | 540,676 | 7.4% | 11.2% |
| apache | 439,487 | 6.0% | 3.3% |
| nextjs | 304,264 | 4.2% | 3.7% |
| vercel | 75,327 | 1.0% | 4.0% |
| azure-front-door | 49,495 | 0.7% | 3.5% |
| … 1 more layers not shown … | |||
The max-age is less than one year.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| fastly | 1,824,353 | 32.3% | 18.4% |
| nginx | 1,771,930 | 31.3% | 6.7% |
| akamai | 1,306,830 | 23.1% | 10.2% |
| cloudflare | 1,055,266 | 18.7% | 3.4% |
| cloudfront | 373,766 | 6.6% | 2.2% |
| nextjs | 353,955 | 6.3% | 4.3% |
| apache | 338,992 | 6.0% | 2.6% |
| envoy | 153,260 | 2.7% | 3.2% |
| nuxt | 42,198 | 0.7% | 4.1% |
| vercel | 38,064 | 0.7% | 2.0% |
| … 1 more layers not shown … | |||
The X-Frame-Options header contains an unknown value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 822,519 | 42.1% | 3.1% |
| akamai | 467,595 | 23.9% | 3.7% |
| cloudflare | 391,651 | 20.0% | 1.3% |
| fastly | 296,574 | 15.2% | 3.0% |
| cloudfront | 236,779 | 12.1% | 1.4% |
| envoy | 121,141 | 6.2% | 2.5% |
| apache | 107,423 | 5.5% | 0.8% |
| nextjs | 93,991 | 4.8% | 1.1% |
| vercel | 33,215 | 1.7% | 1.8% |
| azure-front-door | 5,778 | 0.3% | 0.4% |
| … 1 more layers not shown … | |||
Loading from insecure HTTP sources is allowed.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 604,991 | 23.1% | 2.0% |
| nginx | 260,074 | 9.9% | 1.0% |
| fastly | 226,859 | 8.7% | 2.3% |
| cloudfront | 218,421 | 8.3% | 1.3% |
| nextjs | 139,065 | 5.3% | 1.7% |
| apache | 77,947 | 3.0% | 0.6% |
| envoy | 71,062 | 2.7% | 1.5% |
| akamai | 66,987 | 2.6% | 0.5% |
| azure-front-door | 33,136 | 1.3% | 2.3% |
| vercel | 30,007 | 1.1% | 1.6% |
| … 1 more layers not shown … | |||
Multiple Referrer-Policy values found; only '%(effective)s' is used.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 344,256 | 31.5% | 1.1% |
| nginx | 220,740 | 20.2% | 0.8% |
| akamai | 107,229 | 9.8% | 0.8% |
| cloudfront | 93,591 | 8.6% | 0.6% |
| nextjs | 83,937 | 7.7% | 1.0% |
| apache | 55,734 | 5.1% | 0.4% |
| fastly | 48,564 | 4.4% | 0.5% |
| envoy | 38,992 | 3.6% | 0.8% |
| azure-front-door | 10,883 | 1.0% | 0.8% |
| vercel | 4,187 | 0.4% | 0.2% |
| … 1 more layers not shown … | |||
All sources are allowed in one or more directives.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 307,832 | 21.6% | 1.8% |
| cloudflare | 303,945 | 21.3% | 1.0% |
| akamai | 263,667 | 18.5% | 2.1% |
| nginx | 195,574 | 13.7% | 0.7% |
| nextjs | 122,942 | 8.6% | 1.5% |
| apache | 110,804 | 7.8% | 0.8% |
| fastly | 100,160 | 7.0% | 1.0% |
| envoy | 70,711 | 5.0% | 1.5% |
| vercel | 58,746 | 4.1% | 3.1% |
| azure-front-door | 28,089 | 2.0% | 2.0% |
| … 1 more layers not shown … | |||
The HSTS header is sent over HTTP.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 56,001 | 31.0% | 0.2% |
| apache | 38,158 | 21.1% | 0.3% |
| cloudflare | 21,252 | 11.8% | 0.1% |
| fastly | 18,114 | 10.0% | 0.2% |
| cloudfront | 15,578 | 8.6% | 0.1% |
| akamai | 5,055 | 2.8% | 0.0% |
| nextjs | 4,080 | 2.3% | 0.0% |
| envoy | 568 | 0.3% | 0.0% |
| nuxt | 224 | 0.1% | 0.0% |
| azure-front-door | 125 | 0.1% | 0.0% |
| … 1 more layers not shown … | |||
This response allows sharing the browsing context with cross-origin documents%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 141,389 | 44.4% | 0.5% |
| nginx | 56,598 | 17.8% | 0.2% |
| fastly | 46,155 | 14.5% | 0.5% |
| nextjs | 36,255 | 11.4% | 0.4% |
| vercel | 31,211 | 9.8% | 1.6% |
| akamai | 19,350 | 6.1% | 0.2% |
| envoy | 19,214 | 6.0% | 0.4% |
| cloudfront | 11,739 | 3.7% | 0.1% |
| azure-front-door | 6,556 | 2.1% | 0.5% |
| apache | 6,106 | 1.9% | 0.0% |
| … 1 more layers not shown … | |||
The max-age is 0.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 534,726 | 49.4% | 1.7% |
| nginx | 128,769 | 11.9% | 0.5% |
| apache | 92,936 | 8.6% | 0.7% |
| akamai | 86,672 | 8.0% | 0.7% |
| nextjs | 55,483 | 5.1% | 0.7% |
| cloudfront | 47,726 | 4.4% | 0.3% |
| nuxt | 40,368 | 3.7% | 3.9% |
| envoy | 30,682 | 2.8% | 0.6% |
| vercel | 16,446 | 1.5% | 0.9% |
| fastly | 10,871 | 1.0% | 0.1% |
| … 1 more layers not shown … | |||
The report-to endpoint '%(endpoint)s' is not defined.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 244,810 | 33.6% | 0.9% |
| envoy | 219,961 | 30.2% | 4.6% |
| cloudflare | 218,222 | 30.0% | 0.7% |
| akamai | 193,055 | 26.5% | 1.5% |
| fastly | 81,256 | 11.2% | 0.8% |
| cloudfront | 62,840 | 8.6% | 0.4% |
| nextjs | 39,136 | 5.4% | 0.5% |
| apache | 23,918 | 3.3% | 0.2% |
| azure-front-door | 12,145 | 1.7% | 0.9% |
| vercel | 7,527 | 1.0% | 0.4% |
| … 1 more layers not shown … | |||
The '%(feature)s' feature is allowed for all origins.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 290,857 | 32.5% | 1.7% |
| nginx | 274,043 | 30.7% | 1.0% |
| cloudflare | 232,109 | 26.0% | 0.8% |
| akamai | 97,149 | 10.9% | 0.8% |
| apache | 81,210 | 9.1% | 0.6% |
| azure-front-door | 59,759 | 6.7% | 4.2% |
| envoy | 41,909 | 4.7% | 0.9% |
| fastly | 30,434 | 3.4% | 0.3% |
| nextjs | 16,587 | 1.9% | 0.2% |
| vercel | 4,521 | 0.5% | 0.2% |
| … 1 more layers not shown … | |||
This response allows loading cross-origin resources without restriction%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 200,821 | 27.1% | 0.7% |
| cloudfront | 197,582 | 26.6% | 1.2% |
| fastly | 96,791 | 13.1% | 1.0% |
| nginx | 91,568 | 12.3% | 0.3% |
| akamai | 88,751 | 12.0% | 0.7% |
| envoy | 84,502 | 11.4% | 1.8% |
| apache | 43,480 | 5.9% | 0.3% |
| nextjs | 6,235 | 0.8% | 0.1% |
| azure-front-door | 4,785 | 0.6% | 0.3% |
| vercel | 4,494 | 0.6% | 0.2% |
| … 1 more layers not shown … | |||
The value for '%(feature)s' should be an Inner List or the token '*'.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 282,482 | 40.2% | 2.2% |
| cloudflare | 158,437 | 22.5% | 0.5% |
| nginx | 91,763 | 13.1% | 0.3% |
| fastly | 35,578 | 5.1% | 0.4% |
| apache | 29,079 | 4.1% | 0.2% |
| azure-front-door | 15,974 | 2.3% | 1.1% |
| cloudfront | 14,146 | 2.0% | 0.1% |
| nextjs | 13,635 | 1.9% | 0.2% |
| vercel | 10,445 | 1.5% | 0.6% |
| envoy | 3,989 | 0.6% | 0.1% |
The %(name)s reporting endpoint is not secure.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 4,741 | 5.5% | 0.0% |
| cloudflare | 510 | 0.6% | 0.0% |
This response's Referrer-Policy allows unsafe URLs.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 118,327 | 28.9% | 0.4% |
| cloudflare | 77,608 | 19.0% | 0.3% |
| apache | 52,521 | 12.8% | 0.4% |
| cloudfront | 38,569 | 9.4% | 0.2% |
| nextjs | 30,348 | 7.4% | 0.4% |
| envoy | 21,545 | 5.3% | 0.4% |
| fastly | 20,865 | 5.1% | 0.2% |
| akamai | 15,715 | 3.8% | 0.1% |
| azure-front-door | 11,303 | 2.8% | 0.8% |
| nuxt | 1,318 | 0.3% | 0.1% |
The report-to endpoint '%(endpoint)s' is not defined%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 19,667 | 4.6% | 0.1% |
| nginx | 7,875 | 1.8% | 0.0% |
| cloudfront | 7,696 | 1.8% | 0.0% |
| fastly | 85 | 0.0% | 0.0% |
| envoy | 7 | 0.0% | 0.0% |
'%(token)s' is not valid in an allowlist.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 279,046 | 27.9% | 1.7% |
| cloudflare | 183,055 | 18.3% | 0.6% |
| envoy | 119,365 | 11.9% | 2.5% |
| akamai | 67,226 | 6.7% | 0.5% |
| apache | 40,439 | 4.0% | 0.3% |
| nginx | 32,604 | 3.3% | 0.1% |
| fastly | 18,177 | 1.8% | 0.2% |
| vercel | 10,149 | 1.0% | 0.5% |
| azure-front-door | 6,124 | 0.6% | 0.4% |
| nextjs | 5,441 | 0.5% | 0.1% |
X-Content-Type-Options contains an unknown value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 27,191 | 25.2% | 0.2% |
| nginx | 23,505 | 21.8% | 0.1% |
| cloudflare | 13,591 | 12.6% | 0.0% |
| azure-front-door | 2,821 | 2.6% | 0.2% |
| apache | 2,644 | 2.4% | 0.0% |
| cloudfront | 1,264 | 1.2% | 0.0% |
| nextjs | 911 | 0.8% | 0.0% |
| fastly | 871 | 0.8% | 0.0% |
| envoy | 725 | 0.7% | 0.0% |
| vercel | 32 | 0.0% | 0.0% |
Duplicate directives are present.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 45,942 | 70.2% | 0.4% |
| nextjs | 19,772 | 30.2% | 0.2% |
| cloudfront | 17,876 | 27.3% | 0.1% |
| fastly | 16,435 | 25.1% | 0.2% |
| cloudflare | 15,498 | 23.7% | 0.1% |
| nginx | 471 | 0.7% | 0.0% |
| apache | 207 | 0.3% | 0.0% |
The Referrer-Policy value '%(policy)s' is unknown.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 10,250 | 44.2% | 0.1% |
| cloudfront | 693 | 3.0% | 0.0% |
| nginx | 589 | 2.5% | 0.0% |
| azure-front-door | 276 | 1.2% | 0.0% |
| akamai | 41 | 0.2% | 0.0% |
| cloudflare | 40 | 0.2% | 0.0% |
| envoy | 32 | 0.1% | 0.0% |
| fastly | 1 | 0.0% | 0.0% |
Cross-Origin-Resource-Policy has an invalid value.
| Value | Note fires |
|---|---|
| * | 19,447 |
| same-origin-allow-popups | 12,948 |
| same-origin; | 9,816 |
| cross-origin media.hbkworl.com js.stripe.com js.hubspot.com *.livechatinc.com *.typesense.net 'no-referrer-when-downgrade'; | 3,708 |
| unsafe-none | 3,401 |
| cross-site | 2,607 |
| same?site | 1,714 |
| cross-origin; | 183 |
| same-site | same-origin | 80 |
| same-site www.youtube.com | 1 |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 18,724 | 34.7% | 0.1% |
| fastly | 7,789 | 14.4% | 0.1% |
| cloudflare | 5,960 | 11.1% | 0.0% |
| apache | 80 | 0.1% | 0.0% |
The HSTS header contains a duplicate directive.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 8,382 | 64.0% | 0.0% |
| azure-front-door | 3,310 | 25.3% | 0.2% |
| nextjs | 2,279 | 17.4% | 0.0% |
| cloudfront | 1,477 | 11.3% | 0.0% |
| nginx | 118 | 0.9% | 0.0% |
| akamai | 36 | 0.3% | 0.0% |
The report-to endpoint '%(endpoint)s' is not defined%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 20,182 | 14.7% | 0.1% |
| nginx | 7,868 | 5.7% | 0.0% |
The speculation rule URL is not secure.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,737 | 100.0% | 0.0% |
| nextjs | 6 | 0.3% | 0.0% |
The value '%(value)s' looks like a keyword but is a string.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 9,268 | 52.1% | 0.1% |
| fastly | 6,762 | 38.0% | 0.1% |
| cloudfront | 1,738 | 9.8% | 0.0% |
| cloudflare | 12 | 0.1% | 0.0% |
This response has both enforcing and report-only COEP headers.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 10,311 | 99.9% | 0.0% |
This response has both enforcing and report-only COOP headers.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 74,598 | 88.2% | 0.3% |
| cloudflare | 9,968 | 11.8% | 0.0% |
Browser preloading isn't allowed.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 10,093,459 | 21.5% | 32.9% |
| nginx | 8,898,812 | 19.0% | 33.6% |
| fastly | 6,810,994 | 14.5% | 68.7% |
| akamai | 6,685,158 | 14.3% | 52.3% |
| cloudfront | 6,006,726 | 12.8% | 35.6% |
| apache | 3,933,535 | 8.4% | 29.8% |
| nextjs | 3,449,575 | 7.4% | 41.6% |
| envoy | 2,493,749 | 5.3% | 51.8% |
| vercel | 1,501,920 | 3.2% | 79.2% |
| azure-front-door | 731,683 | 1.6% | 51.2% |
| … 1 more layers not shown … | |||
HSTS applies to subdomains.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 10,203,950 | 25.1% | 33.3% |
| nginx | 7,134,220 | 17.5% | 26.9% |
| cloudfront | 6,699,478 | 16.5% | 39.7% |
| akamai | 5,875,731 | 14.4% | 45.9% |
| fastly | 3,683,424 | 9.1% | 37.1% |
| apache | 3,302,301 | 8.1% | 25.0% |
| envoy | 2,863,745 | 7.0% | 59.5% |
| nextjs | 2,574,105 | 6.3% | 31.1% |
| azure-front-door | 854,506 | 2.1% | 59.8% |
| vercel | 534,800 | 1.3% | 28.2% |
| … 1 more layers not shown … | |||
The Strict-Transport-Security header has a trailing semicolon.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 1,013,022 | 29.2% | 3.8% |
| cloudflare | 602,681 | 17.4% | 2.0% |
| apache | 545,053 | 15.7% | 4.1% |
| cloudfront | 342,489 | 9.9% | 2.0% |
| akamai | 243,830 | 7.0% | 1.9% |
| fastly | 242,566 | 7.0% | 2.4% |
| envoy | 237,139 | 6.8% | 4.9% |
| nextjs | 73,721 | 2.1% | 0.9% |
| azure-front-door | 48,651 | 1.4% | 3.4% |
| vercel | 11,415 | 0.3% | 0.6% |
| … 1 more layers not shown … | |||
This response is available for reading to requests from all origins.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 261,323 | 24.0% | 0.9% |
| nginx | 225,365 | 20.7% | 0.9% |
| cloudfront | 197,385 | 18.1% | 1.2% |
| fastly | 108,961 | 10.0% | 1.1% |
| akamai | 79,821 | 7.3% | 0.6% |
| envoy | 79,052 | 7.3% | 1.6% |
| apache | 54,054 | 5.0% | 0.4% |
| nextjs | 34,975 | 3.2% | 0.4% |
| vercel | 7,269 | 0.7% | 0.4% |
| azure-front-door | 1,555 | 0.1% | 0.1% |
| … 1 more layers not shown … | |||
No valid Referrer-Policy found.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 22,078 | 35.1% | 0.2% |
| nginx | 11,523 | 18.3% | 0.0% |
| cloudflare | 10,860 | 17.2% | 0.0% |
| cloudfront | 4,397 | 7.0% | 0.0% |
| azure-front-door | 337 | 0.5% | 0.0% |
| envoy | 46 | 0.1% | 0.0% |
| akamai | 42 | 0.1% | 0.0% |
Clear-Site-Data contains unquoted values.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 29,651 | 56.9% | 0.1% |
| nginx | 19,805 | 38.0% | 0.1% |
| akamai | 561 | 1.1% | 0.0% |
| apache | 560 | 1.1% | 0.0% |
| nextjs | 88 | 0.2% | 0.0% |
| nuxt | 15 | 0.0% | 0.0% |
| cloudfront | 8 | 0.0% | 0.0% |
Strict Transport Security (HSTS) is enabled.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 16,387,705 | 23.7% | 53.5% |
| nginx | 13,199,088 | 19.1% | 49.8% |
| akamai | 9,877,854 | 14.3% | 77.2% |
| cloudfront | 9,838,376 | 14.2% | 58.3% |
| fastly | 8,442,463 | 12.2% | 85.1% |
| apache | 5,660,831 | 8.2% | 42.9% |
| nextjs | 4,993,452 | 7.2% | 60.3% |
| envoy | 3,700,492 | 5.3% | 76.9% |
| vercel | 1,893,031 | 2.7% | 99.8% |
| azure-front-door | 1,103,377 | 1.6% | 77.3% |
| … 1 more layers not shown … | |||
This response instructs browsers not to 'sniff' its media type.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 14,412,390 | 25.0% | 47.0% |
| nginx | 11,063,985 | 19.2% | 41.8% |
| cloudfront | 8,667,880 | 15.0% | 51.4% |
| akamai | 7,967,575 | 13.8% | 62.3% |
| fastly | 5,691,346 | 9.9% | 57.4% |
| apache | 5,549,034 | 9.6% | 42.0% |
| envoy | 3,228,764 | 5.6% | 67.1% |
| nextjs | 3,205,362 | 5.6% | 38.7% |
| azure-front-door | 840,844 | 1.5% | 58.9% |
| vercel | 723,558 | 1.3% | 38.2% |
| … 1 more layers not shown … | |||
This response prevents browsers from rendering it within a frame on another site.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 10,990,583 | 23.0% | 35.9% |
| nginx | 10,634,534 | 22.3% | 40.1% |
| cloudfront | 6,674,948 | 14.0% | 39.6% |
| akamai | 6,641,604 | 13.9% | 51.9% |
| fastly | 5,201,027 | 10.9% | 52.4% |
| apache | 4,881,901 | 10.2% | 37.0% |
| nextjs | 2,366,634 | 5.0% | 28.6% |
| envoy | 2,331,304 | 4.9% | 48.4% |
| azure-front-door | 726,304 | 1.5% | 50.9% |
| vercel | 510,534 | 1.1% | 26.9% |
| … 1 more layers not shown … | |||
This response sets a Content Security Policy%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 8,811,129 | 21.8% | 28.8% |
| cloudfront | 6,518,707 | 16.1% | 38.6% |
| akamai | 6,405,590 | 15.8% | 50.1% |
| nginx | 6,328,650 | 15.7% | 23.9% |
| fastly | 4,594,802 | 11.4% | 46.3% |
| apache | 2,993,667 | 7.4% | 22.7% |
| nextjs | 2,566,880 | 6.4% | 31.0% |
| envoy | 2,104,715 | 5.2% | 43.7% |
| vercel | 750,295 | 1.9% | 39.6% |
| azure-front-door | 532,514 | 1.3% | 37.3% |
| … 1 more layers not shown … | |||
This response's Referrer-Policy ('%(policy)s') restricts referrer leakage.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 4,963,493 | 25.8% | 16.2% |
| cloudfront | 4,028,741 | 20.9% | 23.9% |
| nginx | 3,592,336 | 18.7% | 13.6% |
| akamai | 2,039,724 | 10.6% | 15.9% |
| fastly | 1,372,145 | 7.1% | 13.8% |
| apache | 1,372,144 | 7.1% | 10.4% |
| nextjs | 1,316,467 | 6.8% | 15.9% |
| envoy | 1,131,369 | 5.9% | 23.5% |
| vercel | 380,450 | 2.0% | 20.1% |
| azure-front-door | 360,466 | 1.9% | 25.2% |
| … 1 more layers not shown … | |||
Browser preloading is allowed.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 5,298,751 | 26.9% | 17.3% |
| nginx | 3,642,074 | 18.5% | 13.7% |
| cloudfront | 3,605,920 | 18.3% | 21.4% |
| akamai | 2,448,272 | 12.4% | 19.1% |
| apache | 1,540,261 | 7.8% | 11.7% |
| fastly | 1,435,637 | 7.3% | 14.5% |
| nextjs | 1,360,584 | 6.9% | 16.4% |
| envoy | 1,148,764 | 5.8% | 23.9% |
| vercel | 382,594 | 1.9% | 20.2% |
| azure-front-door | 360,338 | 1.8% | 25.2% |
| … 1 more layers not shown … | |||
This response prevents browsers from rendering it within a frame.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,969,106 | 24.5% | 6.4% |
| nginx | 1,549,601 | 19.3% | 5.9% |
| cloudfront | 1,342,250 | 16.7% | 8.0% |
| akamai | 1,045,035 | 13.0% | 8.2% |
| nextjs | 654,489 | 8.2% | 7.9% |
| apache | 585,348 | 7.3% | 4.4% |
| fastly | 561,720 | 7.0% | 5.7% |
| envoy | 423,993 | 5.3% | 8.8% |
| vercel | 182,378 | 2.3% | 9.6% |
| azure-front-door | 88,450 | 1.1% | 6.2% |
| … 1 more layers not shown … | |||
This response sets a Permissions Policy.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 2,485,567 | 24.5% | 8.1% |
| nginx | 1,715,238 | 16.9% | 6.5% |
| cloudfront | 1,561,514 | 15.4% | 9.3% |
| akamai | 997,007 | 9.8% | 7.8% |
| fastly | 883,567 | 8.7% | 8.9% |
| apache | 841,866 | 8.3% | 6.4% |
| nextjs | 620,307 | 6.1% | 7.5% |
| envoy | 332,164 | 3.3% | 6.9% |
| azure-front-door | 288,114 | 2.8% | 20.2% |
| vercel | 209,228 | 2.1% | 11.0% |
| … 1 more layers not shown … | |||
This response isolates the browsing context to the same origin%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 485,367 | 17.9% | 3.8% |
| nginx | 448,397 | 16.5% | 1.7% |
| cloudflare | 419,119 | 15.4% | 1.4% |
| cloudfront | 377,179 | 13.9% | 2.2% |
| envoy | 310,995 | 11.4% | 6.5% |
| fastly | 301,748 | 11.1% | 3.0% |
| apache | 216,055 | 8.0% | 1.6% |
| nextjs | 60,569 | 2.2% | 0.7% |
| vercel | 11,666 | 0.4% | 0.6% |
| azure-front-door | 6,390 | 0.2% | 0.4% |
| … 1 more layers not shown … | |||
This response isolates the browsing context but allows popups%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 360,165 | 23.6% | 1.2% |
| nginx | 300,472 | 19.7% | 1.1% |
| cloudfront | 253,287 | 16.6% | 1.5% |
| akamai | 150,456 | 9.9% | 1.2% |
| envoy | 96,022 | 6.3% | 2.0% |
| apache | 82,168 | 5.4% | 0.6% |
| fastly | 65,762 | 4.3% | 0.7% |
| nextjs | 60,183 | 3.9% | 0.7% |
| azure-front-door | 15,654 | 1.0% | 1.1% |
| vercel | 9,594 | 0.6% | 0.5% |
| … 1 more layers not shown … | |||
This response is only available for reading to requests from the same origin.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 343,963 | 37.0% | 2.7% |
| envoy | 254,071 | 27.3% | 5.3% |
| cloudfront | 162,256 | 17.5% | 1.0% |
| cloudflare | 142,506 | 15.3% | 0.5% |
| fastly | 96,133 | 10.3% | 1.0% |
| nginx | 81,048 | 8.7% | 0.3% |
| nextjs | 34,174 | 3.7% | 0.4% |
| apache | 20,587 | 2.2% | 0.2% |
| vercel | 5,226 | 0.6% | 0.3% |
| azure-front-door | 5,017 | 0.5% | 0.4% |
| … 1 more layers not shown … | |||
This response is available for reading to requests from the same site.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 70,195 | 41.5% | 0.2% |
| cloudfront | 41,725 | 24.6% | 0.2% |
| nginx | 28,586 | 16.9% | 0.1% |
| akamai | 24,894 | 14.7% | 0.2% |
| envoy | 18,549 | 11.0% | 0.4% |
| nextjs | 6,300 | 3.7% | 0.1% |
| azure-front-door | 5,168 | 3.1% | 0.4% |
| fastly | 4,460 | 2.6% | 0.0% |
| apache | 3,225 | 1.9% | 0.0% |
| vercel | 451 | 0.3% | 0.0% |
This response requires resources to have a CORP header%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 38,120 | 16.6% | 0.1% |
| apache | 16,898 | 7.3% | 0.1% |
| fastly | 3,247 | 1.4% | 0.0% |
| cloudfront | 2,824 | 1.2% | 0.0% |
| cloudflare | 2,405 | 1.0% | 0.0% |
| azure-front-door | 132 | 0.1% | 0.0% |
| akamai | 35 | 0.0% | 0.0% |
| vercel | 19 | 0.0% | 0.0% |
| nextjs | 17 | 0.0% | 0.0% |
| envoy | 1 | 0.0% | 0.0% |
This response loads cross-origin resources without credentials%(report_only)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 23,648 | 51.9% | 0.2% |
| nextjs | 11,640 | 25.5% | 0.1% |
| cloudfront | 10,191 | 22.4% | 0.1% |
| envoy | 1,741 | 3.8% | 0.0% |
| apache | 507 | 1.1% | 0.0% |
| vercel | 368 | 0.8% | 0.0% |
| nginx | 192 | 0.4% | 0.0% |
| cloudflare | 115 | 0.3% | 0.0% |
| azure-front-door | 1 | 0.0% | 0.0% |
This response clears browser-side data for this origin.
This response has a Set-Cookie header without a cookie-name.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 38,253 | 35.1% | 0.1% |
| cloudfront | 28,863 | 26.5% | 0.2% |
| akamai | 24,346 | 22.4% | 0.2% |
| fastly | 13,833 | 12.7% | 0.1% |
| apache | 2,498 | 2.3% | 0.0% |
| cloudflare | 1,668 | 1.5% | 0.0% |
| azure-front-door | 4 | 0.0% | 0.0% |
| nextjs | 1 | 0.0% | 0.0% |
The %(cookie_name)s Set-Cookie header is too large.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 10 | 0.1% | 0.0% |
The %(cookie_name)s Set-Cookie header requires the Secure attribute.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nextjs | 10,063 | 75.2% | 0.1% |
| cloudflare | 10,039 | 75.0% | 0.0% |
| envoy | 3,342 | 25.0% | 0.1% |
| fastly | 4 | 0.0% | 0.0% |
The %(cookie_name)s Set-Cookie header has a __Host- prefix but does not set Path=/.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| envoy | 3,342 | 99.9% | 0.1% |
| nextjs | 24 | 0.7% | 0.0% |
| fastly | 4 | 0.1% | 0.0% |
The %(cookie_name)s Set-Cookie header has a __Host- prefix but sets a Domain.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| vercel | 1,560 | 99.7% | 0.1% |
| fastly | 4 | 0.3% | 0.0% |
This response sets duplicate cookies.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,450,514 | 21.6% | 4.7% |
| akamai | 1,319,713 | 19.6% | 10.3% |
| nginx | 1,220,086 | 18.2% | 4.6% |
| envoy | 732,947 | 10.9% | 15.2% |
| apache | 723,480 | 10.8% | 5.5% |
| cloudfront | 636,504 | 9.5% | 3.8% |
| nextjs | 362,061 | 5.4% | 4.4% |
| fastly | 295,993 | 4.4% | 3.0% |
| azure-front-door | 130,269 | 1.9% | 9.1% |
| vercel | 80,244 | 1.2% | 4.2% |
| … 1 more layers not shown … | |||
The %(cookie_name)s Set-Cookie header has a lifetime that is too long.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 4,003,995 | 19.9% | 15.1% |
| akamai | 3,752,156 | 18.6% | 29.3% |
| cloudflare | 3,464,339 | 17.2% | 11.3% |
| envoy | 3,158,432 | 15.7% | 65.6% |
| cloudfront | 2,875,808 | 14.3% | 17.0% |
| apache | 1,650,829 | 8.2% | 12.5% |
| nextjs | 1,069,784 | 5.3% | 12.9% |
| fastly | 675,507 | 3.3% | 6.8% |
| azure-front-door | 273,881 | 1.4% | 19.2% |
| vercel | 129,416 | 0.6% | 6.8% |
| … 1 more layers not shown … | |||
The %(cookie_name)s Set-Cookie header has duplicate '%(attribute)s' attributes.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 845,969 | 33.0% | 6.6% |
| cloudflare | 650,152 | 25.3% | 2.1% |
| apache | 499,391 | 19.5% | 3.8% |
| nginx | 441,302 | 17.2% | 1.7% |
| cloudfront | 93,330 | 3.6% | 0.6% |
| envoy | 62,123 | 2.4% | 1.3% |
| fastly | 35,130 | 1.4% | 0.4% |
| vercel | 23,484 | 0.9% | 1.2% |
| nextjs | 22,829 | 0.9% | 0.3% |
| azure-front-door | 22,053 | 0.9% | 1.5% |
| … 1 more layers not shown … | |||
The 'Priority' Set-Cookie attribute is deprecated.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 229,674 | 63.2% | 0.7% |
| fastly | 36,592 | 10.1% | 0.4% |
| akamai | 31,762 | 8.7% | 0.2% |
| nginx | 17,507 | 4.8% | 0.1% |
| cloudfront | 15,868 | 4.4% | 0.1% |
| envoy | 13,701 | 3.8% | 0.3% |
| apache | 10,170 | 2.8% | 0.1% |
| nextjs | 9,133 | 2.5% | 0.1% |
| vercel | 3,501 | 1.0% | 0.2% |
| nuxt | 4 | 0.0% | 0.0% |
The %(cookie_name)s cookie has an unknown attribute, '%(attribute)s'.
attribute: long tail elided during shuffle; only the retained head is shown.
| Value | Note fires |
|---|---|
| Comment | 1,018,142 |
| 331,510 | |
| host | 150,126 |
| $x-enc | 32,400 |
| "" | 18,098 |
| maxAge | 13,573 |
| e-country | 10,745 |
| HttpOnly, HTTPOnly, Secure | 9,889 |
| " | 8,889 |
| Category | 8,423 |
| AETN-Country-Code | 6,345 |
| MaxAge | 5,481 |
| secure,_helpkit_session | 4,087 |
| secure,__cf_bm | 4,087 |
| ,bbsession | 3,409 |
| Discard | 3,225 |
| CAMPAIGN_CODE | 2,966 |
| expiry | 2,619 |
| SmaeSite | 2,284 |
| HttpOnly" | 2,271 |
| HASH_SameSite | 1,583 |
| HttpOnly,MISCGCs | 1,355 |
| Secure/g | 1,284 |
| ANYTHING | 885 |
| same-site | 600 |
| … 1975 more values not shown … | |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,093,472 | 65.4% | 3.6% |
| akamai | 407,862 | 24.4% | 3.2% |
| cloudfront | 118,106 | 7.1% | 0.7% |
| apache | 49,600 | 3.0% | 0.4% |
| nginx | 49,042 | 2.9% | 0.2% |
| nextjs | 43,138 | 2.6% | 0.5% |
| fastly | 37,534 | 2.2% | 0.4% |
| azure-front-door | 28,748 | 1.7% | 2.0% |
| envoy | 8,940 | 0.5% | 0.2% |
| vercel | 7,004 | 0.4% | 0.4% |
| … 1 more layers not shown … | |||
The 'Version Set-Cookie attribute is deprecated.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,105,058 | 69.9% | 3.6% |
| akamai | 436,721 | 27.6% | 3.4% |
| cloudfront | 181,207 | 11.5% | 1.1% |
| apache | 144,502 | 9.1% | 1.1% |
| nginx | 73,169 | 4.6% | 0.3% |
| fastly | 45,300 | 2.9% | 0.5% |
| envoy | 15,818 | 1.0% | 0.3% |
| azure-front-door | 2,983 | 0.2% | 0.2% |
| nextjs | 733 | 0.0% | 0.0% |
| vercel | 50 | 0.0% | 0.0% |
The %(cookie_name)s cookie is missing the Secure attribute.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 156,002 | 53.7% | 0.9% |
| nginx | 79,065 | 27.2% | 0.3% |
| apache | 78,045 | 26.8% | 0.6% |
| akamai | 42,496 | 14.6% | 0.3% |
| cloudflare | 32,328 | 11.1% | 0.1% |
| nextjs | 14,054 | 4.8% | 0.2% |
| envoy | 8,911 | 3.1% | 0.2% |
| nuxt | 216 | 0.1% | 0.0% |
| azure-front-door | 6 | 0.0% | 0.0% |
| fastly | 6 | 0.0% | 0.0% |
The %(cookie_name)s cookie has a non-numeric Max-Age.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| envoy | 700,933 | 45.2% | 14.6% |
| cloudflare | 624,832 | 40.3% | 2.0% |
| akamai | 259,744 | 16.8% | 2.0% |
| nextjs | 214,035 | 13.8% | 2.6% |
| nginx | 50,651 | 3.3% | 0.2% |
| cloudfront | 45,742 | 3.0% | 0.3% |
| fastly | 37,741 | 2.4% | 0.4% |
| apache | 3,887 | 0.3% | 0.0% |
| vercel | 1,596 | 0.1% | 0.1% |
The %(cookie_name)s cookie has an invalid Expires date.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| fastly | 119,050 | 48.7% | 1.2% |
| akamai | 52,137 | 21.3% | 0.4% |
| cloudflare | 18,365 | 7.5% | 0.1% |
| cloudfront | 12,668 | 5.2% | 0.1% |
| envoy | 12,128 | 5.0% | 0.3% |
| nginx | 4,781 | 2.0% | 0.0% |
| nextjs | 2,506 | 1.0% | 0.0% |
| apache | 2,396 | 1.0% | 0.0% |
| azure-front-door | 593 | 0.2% | 0.0% |
The %(cookie_name)s cookie has an unknown '%(attribute_name)s' attribute value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 15,437 | 22.7% | 0.1% |
| akamai | 12,887 | 19.0% | 0.1% |
| cloudflare | 11,985 | 17.6% | 0.0% |
| vercel | 9,832 | 14.5% | 0.5% |
| nextjs | 2,004 | 2.9% | 0.0% |
| azure-front-door | 1,786 | 2.6% | 0.1% |
| cloudfront | 1,483 | 2.2% | 0.0% |
| apache | 311 | 0.5% | 0.0% |
| fastly | 131 | 0.2% | 0.0% |
The %(cookie_name)s cookie has an empty domain.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 14,090 | 69.6% | 0.1% |
| cloudfront | 3,646 | 18.0% | 0.0% |
| nginx | 3,391 | 16.8% | 0.0% |
| envoy | 1,443 | 7.1% | 0.0% |
| cloudflare | 326 | 1.6% | 0.0% |
| fastly | 163 | 0.8% | 0.0% |
| nextjs | 2 | 0.0% | 0.0% |
The %(cookie_name)s cookie has the Partitioned attribute but is missing the Secure attribute.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 52,632 | 100.0% | 0.4% |
The %(cookie_name)s cookie has an empty Max-Age.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 1,603 | 100.0% | 0.0% |
The %(cookie_name)s Set-Cookie value is large.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 13,301,005 | 34.6% | 43.4% |
| akamai | 12,855,004 | 33.4% | 100.5% |
| nginx | 5,529,164 | 14.4% | 20.9% |
| envoy | 4,157,029 | 10.8% | 86.4% |
| cloudfront | 3,302,372 | 8.6% | 19.6% |
| nextjs | 2,482,201 | 6.4% | 30.0% |
| apache | 2,397,955 | 6.2% | 18.2% |
| fastly | 1,187,697 | 3.1% | 12.0% |
| vercel | 614,512 | 1.6% | 32.4% |
| nuxt | 224,096 | 0.6% | 21.9% |
| … 1 more layers not shown … | |||
This response sets cookies restricted with Secure, HttpOnly, and SameSite.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 2,859,176 | 29.1% | 9.3% |
| nginx | 1,737,247 | 17.7% | 6.6% |
| cloudfront | 1,239,213 | 12.6% | 7.3% |
| akamai | 848,663 | 8.7% | 6.6% |
| envoy | 806,030 | 8.2% | 16.8% |
| apache | 660,887 | 6.7% | 5.0% |
| nextjs | 459,708 | 4.7% | 5.6% |
| fastly | 379,105 | 3.9% | 3.8% |
| azure-front-door | 187,700 | 1.9% | 13.1% |
| vercel | 139,604 | 1.4% | 7.4% |
| … 1 more layers not shown … | |||
CORS headers are only allowed in preflight responses.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,852,772 | 25.5% | 6.0% |
| nginx | 1,405,818 | 19.3% | 5.3% |
| akamai | 1,172,246 | 16.1% | 9.2% |
| cloudfront | 756,617 | 10.4% | 4.5% |
| apache | 685,244 | 9.4% | 5.2% |
| fastly | 623,040 | 8.6% | 6.3% |
| nextjs | 491,716 | 6.8% | 5.9% |
| envoy | 241,417 | 3.3% | 5.0% |
| azure-front-door | 114,358 | 1.6% | 8.0% |
| nuxt | 79,401 | 1.1% | 7.7% |
| … 1 more layers not shown … | |||
Access-Control-Allow-Origin should not have multiple values.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 259,547 | 66.8% | 0.8% |
| akamai | 76,758 | 19.8% | 0.6% |
| apache | 42,389 | 10.9% | 0.3% |
| nginx | 31,043 | 8.0% | 0.1% |
| envoy | 23,869 | 6.1% | 0.5% |
| nextjs | 18,385 | 4.7% | 0.2% |
| vercel | 6,968 | 1.8% | 0.4% |
| azure-front-door | 4,096 | 1.1% | 0.3% |
| cloudfront | 3,770 | 1.0% | 0.0% |
| fastly | 1,943 | 0.5% | 0.0% |
| … 1 more layers not shown … | |||
Access-Control-Max-Age must be an integer.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 264 | 57.1% | 0.0% |
| nuxt | 52 | 11.3% | 0.0% |
| envoy | 7 | 1.5% | 0.0% |
| akamai | 7 | 1.5% | 0.0% |
Accept-CH lists fields that are missing from Vary.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 352,395 | 15.4% | 2.1% |
| akamai | 297,374 | 13.0% | 2.3% |
| cloudflare | 264,466 | 11.5% | 0.9% |
| fastly | 205,679 | 9.0% | 2.1% |
| envoy | 204,090 | 8.9% | 4.2% |
| apache | 121,055 | 5.3% | 0.9% |
| nginx | 117,231 | 5.1% | 0.4% |
| nextjs | 107,666 | 4.7% | 1.3% |
| azure-front-door | 77,311 | 3.4% | 5.4% |
| vercel | 27,140 | 1.2% | 1.4% |
| … 1 more layers not shown … | |||
Transparent Content Negotiation is not widely supported.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 23,464 | 81.6% | 0.2% |
| cloudflare | 3,941 | 13.7% | 0.0% |
| nginx | 840 | 2.9% | 0.0% |
| fastly | 52 | 0.2% | 0.0% |
| akamai | 32 | 0.1% | 0.0% |
| cloudfront | 5 | 0.0% | 0.0% |
| envoy | 2 | 0.0% | 0.0% |
The Content-Range header is missing a unit (e.g., 'bytes').
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 10,205 | 77.5% | 0.0% |
| envoy | 84 | 0.6% | 0.0% |
The Range header is invalid.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 1 | 100.0% | 0.0% |
This response shouldn't have a Content-Range header.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 10,889 | 61.6% | 0.0% |
| apache | 2,486 | 14.1% | 0.0% |
| azure-front-door | 1,010 | 5.7% | 0.1% |
| vercel | 583 | 3.3% | 0.0% |
| envoy | 109 | 0.6% | 0.0% |
| cloudflare | 33 | 0.2% | 0.0% |
| cloudfront | 6 | 0.0% | 0.0% |
| nextjs | 5 | 0.0% | 0.0% |
This response advertises support for non-standard range-units.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 3 | 3.8% | 0.0% |
| apache | 1 | 1.3% | 0.0% |
| cloudfront | 1 | 1.3% | 0.0% |
The Alt-Svc 'clear' token cannot be used with other values.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nextjs | 1,845 | 9.6% | 0.0% |
| cloudflare | 748 | 3.9% | 0.0% |
| nginx | 365 | 1.9% | 0.0% |
| fastly | 317 | 1.6% | 0.0% |
"%(field_name)s" isn't valid in a response.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 6,336,305 | 22.4% | 20.7% |
| nginx | 6,033,310 | 21.3% | 22.8% |
| akamai | 4,699,436 | 16.6% | 36.7% |
| apache | 4,158,854 | 14.7% | 31.5% |
| cloudfront | 1,774,834 | 6.3% | 10.5% |
| fastly | 851,997 | 3.0% | 8.6% |
| envoy | 755,539 | 2.7% | 15.7% |
| nextjs | 610,284 | 2.2% | 7.4% |
| azure-front-door | 319,659 | 1.1% | 22.4% |
| vercel | 277,925 | 1.0% | 14.7% |
| … 1 more layers not shown … | |||
The server's clock is %(clock_skew_string)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 1,246,827 | 43.4% | 7.4% |
| nginx | 792,031 | 27.6% | 3.0% |
| apache | 571,744 | 19.9% | 4.3% |
| nextjs | 193,733 | 6.7% | 2.3% |
| vercel | 103,393 | 3.6% | 5.5% |
| envoy | 94,227 | 3.3% | 2.0% |
| fastly | 32,039 | 1.1% | 0.3% |
| cloudflare | 14,862 | 0.5% | 0.0% |
| akamai | 7,756 | 0.3% | 0.1% |
| nuxt | 3,357 | 0.1% | 0.3% |
| … 1 more layers not shown … | |||
The %(field_name)s header's value isn't a valid date.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,686,368 | 25.6% | 5.5% |
| nginx | 1,314,247 | 20.0% | 5.0% |
| apache | 588,564 | 8.9% | 4.5% |
| cloudfront | 521,867 | 7.9% | 3.1% |
| akamai | 407,741 | 6.2% | 3.2% |
| envoy | 201,525 | 3.1% | 4.2% |
| fastly | 195,749 | 3.0% | 2.0% |
| azure-front-door | 188,610 | 2.9% | 13.2% |
| nextjs | 52,578 | 0.8% | 0.6% |
| nuxt | 46,233 | 0.7% | 4.5% |
| … 1 more layers not shown … | |||
Only one %(field_name)s field is allowed in a message.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 1,159,144 | 25.5% | 4.4% |
| cloudflare | 962,981 | 21.2% | 3.1% |
| akamai | 707,294 | 15.5% | 5.5% |
| apache | 474,637 | 10.4% | 3.6% |
| fastly | 417,351 | 9.2% | 4.2% |
| cloudfront | 376,215 | 8.3% | 2.2% |
| envoy | 185,873 | 4.1% | 3.9% |
| nextjs | 162,647 | 3.6% | 2.0% |
| azure-front-door | 80,367 | 1.8% | 5.6% |
| vercel | 9,055 | 0.2% | 0.5% |
| … 1 more layers not shown … | |||
The %(field_name)s field value doesn't conform to its specified syntax.
| Value | Note fires | Header occurrences | Fires per occurrence |
|---|---|---|---|
LinkSamples (15)
| 4,627,966 | 43,505,576 | 10.64% |
ViaSamples (15)
| 811,722 | 30,429,667 | 2.67% |
ServerSamples (15)
| 324,252 | 94,787,332 | 0.34% |
Cache-ControlSamples (15)
| 214,998 | 98,177,840 | 0.22% |
Content-LanguageSamples (12)
| 151,503 | 12,220,507 | 1.24% |
Alt-SvcSamples (3)
| 141,166 | 32,351,074 | 0.44% |
Content-Security-PolicySamples (5)
| 78,029 | 38,270,592 | 0.20% |
Server-TimingSamples (11)
| 43,423 | 55,581,820 | 0.08% |
| Vary | 37,159 | 112,681,471 | 0.03% |
| X-Content-Type-Options | 17,068 | 60,244,519 | 0.03% |
Access-Control-Allow-HeadersSamples (1)
| 14,370 | 6,316,158 | 0.23% |
| Access-Control-Allow-Methods | 4,614 | 5,681,593 | 0.08% |
| Upgrade | 271 | 264,816 | 0.10% |
Content-Security-Policy-Report-OnlySamples (2)
| 256 | 3,458,084 | 0.01% |
| Referrer-Policy | 30 | 28,948,190 | 0.00% |
| Warning | 2 | 60,781 | 0.00% |
| WWW-Authenticate | 2 | 13,409 | 0.01% |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,814,407 | 28.1% | 5.9% |
| nginx | 1,391,466 | 21.5% | 5.3% |
| fastly | 1,053,100 | 16.3% | 10.6% |
| akamai | 869,226 | 13.4% | 6.8% |
| envoy | 667,170 | 10.3% | 13.9% |
| cloudfront | 488,311 | 7.6% | 2.9% |
| apache | 349,532 | 5.4% | 2.6% |
| nuxt | 242,938 | 3.8% | 23.7% |
| nextjs | 232,428 | 3.6% | 2.8% |
| azure-front-door | 82,488 | 1.3% | 5.8% |
| … 1 more layers not shown … | |||
The Last-Modified time is in the future.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 122,419 | 32.6% | 0.9% |
| nginx | 111,938 | 29.8% | 0.4% |
| cloudfront | 84,606 | 22.5% | 0.5% |
| cloudflare | 19,640 | 5.2% | 0.1% |
| envoy | 9,543 | 2.5% | 0.2% |
| fastly | 7,127 | 1.9% | 0.1% |
| akamai | 4,969 | 1.3% | 0.0% |
| azure-front-door | 3,176 | 0.8% | 0.2% |
| nuxt | 712 | 0.2% | 0.1% |
| vercel | 467 | 0.1% | 0.0% |
The %(field_name)s field value isn't a valid Structured Field.
| Field | Errors |
|---|---|
| Permissions-Policy 216,269 |
|
| Cross-Origin-Opener-Policy 133,992 |
|
| Cross-Origin-Embedder-Policy 129,084 |
|
| Cross-Origin-Embedder-Policy-Report-Only 57,640 |
|
| Cross-Origin-Opener-Policy-Report-Only 52,231 |
|
| Reporting-Endpoints 49,451 |
|
| Cache-Status 44,312 |
|
| Accept-CH 14,098 |
|
| Proxy-Status 1,489 |
|
| CDN-Cache-Control 1,126 |
|
| Speculation-Rules 1,040 |
|
| Value | Note fires | Header occurrences | Fires per occurrence |
|---|---|---|---|
Permissions-PolicySamples (14)
| 216,269 | 10,508,143 | 2.06% |
Cross-Origin-Opener-PolicySamples (6)
| 133,992 | 4,425,144 | 3.03% |
Cross-Origin-Embedder-PolicySamples (11)
| 129,084 | 986,895 | 13.08% |
Cross-Origin-Embedder-Policy-Report-OnlySamples (7)
| 57,640 | 280,435 | 20.55% |
Cross-Origin-Opener-Policy-Report-OnlySamples (7)
| 52,231 | 411,336 | 12.70% |
Reporting-EndpointsSamples (2)
| 49,451 | 3,012,499 | 1.64% |
Cache-StatusSamples (1)
| 44,312 | 1,083,519 | 4.09% |
| Accept-CH | 14,098 | 3,776,034 | 0.37% |
Proxy-StatusSamples (1)
| 1,489 | 7,880 | 18.90% |
| CDN-Cache-Control | 1,126 | 357,759 | 0.31% |
| Speculation-Rules | 1,040 | 2,165,738 | 0.05% |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 236,797 | 33.8% | 0.8% |
| nginx | 166,084 | 23.7% | 0.6% |
| cloudfront | 89,401 | 12.8% | 0.5% |
| fastly | 83,144 | 11.9% | 0.8% |
| envoy | 75,142 | 10.7% | 1.6% |
| apache | 56,748 | 8.1% | 0.4% |
| akamai | 37,910 | 5.4% | 0.3% |
| nextjs | 10,089 | 1.4% | 0.1% |
| azure-front-door | 9,022 | 1.3% | 0.6% |
| vercel | 2,096 | 0.3% | 0.1% |
The %(field_name)s header value isn't valid JSON.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 90,886 | 73.9% | 0.3% |
| fastly | 15,887 | 12.9% | 0.2% |
| nextjs | 15,515 | 12.6% | 0.2% |
| akamai | 6,583 | 5.4% | 0.1% |
| nginx | 3,064 | 2.5% | 0.0% |
| apache | 2,906 | 2.4% | 0.0% |
| cloudfront | 2,301 | 1.9% | 0.0% |
The %(name)s reporting endpoint is invalid.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 870 | 9.6% | 0.0% |
| cloudfront | 20 | 0.2% | 0.0% |
The Report-To header value has an invalid structure.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,079 | 41.0% | 0.0% |
| cloudfront | 1 | 0.0% | 0.0% |
The '%(param)s' parameter's value cannot be quoted.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 8 | 72.7% | 0.0% |
The %(param)s parameter's value is invalid.
"%(field_name)s" is not a valid field name.
The %(field_name)s header is deprecated.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 26,906,050 | 32.4% | 87.8% |
| nginx | 12,679,519 | 15.3% | 47.9% |
| apache | 9,753,946 | 11.8% | 73.9% |
| cloudfront | 9,563,036 | 11.5% | 56.7% |
| akamai | 8,735,124 | 10.5% | 68.3% |
| fastly | 6,182,849 | 7.5% | 62.3% |
| envoy | 4,406,617 | 5.3% | 91.6% |
| nextjs | 3,302,331 | 4.0% | 39.9% |
| azure-front-door | 748,396 | 0.9% | 52.4% |
| vercel | 682,108 | 0.8% | 36.0% |
| … 1 more layers not shown … | |||
The reporting endpoint '%(value)s' is not defined.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 12,507,607 | 96.3% | 40.8% |
| nextjs | 671,436 | 5.2% | 8.1% |
| fastly | 313,622 | 2.4% | 3.2% |
| cloudfront | 268,123 | 2.1% | 1.6% |
| vercel | 207,589 | 1.6% | 10.9% |
| nuxt | 104,738 | 0.8% | 10.2% |
| envoy | 101,672 | 0.8% | 2.1% |
| nginx | 56,531 | 0.4% | 0.2% |
| akamai | 25,721 | 0.2% | 0.2% |
| apache | 5,745 | 0.0% | 0.0% |
| … 1 more layers not shown … | |||
The %(field_name)s field value doesn't conform to its specified syntax.
| Value | Note fires | Header occurrences | Fires per occurrence |
|---|---|---|---|
ViaSamples (15)
| 5,093,924 | 30,429,667 | 16.74% |
LinkSamples (15)
| 1,794,894 | 43,505,576 | 4.13% |
X-Frame-OptionsSamples (15)
| 1,453,383 | 60,521,378 | 2.40% |
ETagSamples (15)
| 586,614 | 27,061,042 | 2.17% |
Access-Control-Allow-CredentialsSamples (15)
| 583,959 | 4,608,418 | 12.67% |
Access-Control-Allow-OriginSamples (15)
| 470,631 | 16,045,895 | 2.93% |
Strict-Transport-SecuritySamples (15)
| 309,479 | 71,294,722 | 0.43% |
Content-DispositionSamples (15)
| 95,872 | 907,172 | 10.57% |
Content-Security-PolicySamples (1) | 77,527 | 38,270,592 | 0.20% |
Clear-Site-DataSamples (2)
| 67,648 | 52,154 | 129.71% |
Content-TypeSamples (13)
| 60,524 | 122,848,015 | 0.05% |
X-Content-Type-OptionsSamples (7)
| 40,133 | 60,244,519 | 0.07% |
WarningSamples (5)
| 20,933 | 60,781 | 34.44% |
ServerSamples (1) | 18,748 | 94,787,332 | 0.02% |
VarySamples (1)
| 6,294 | 112,681,471 | 0.01% |
| Content-Security-Policy-Report-Only | 3,810 | 3,458,084 | 0.11% |
| Alt-Svc | 3,330 | 32,351,074 | 0.01% |
Server-TimingSamples (1)
| 3,161 | 55,581,820 | 0.01% |
| Location | 2,323 | 11,288 | 20.58% |
| Content-Language | 1,927 | 12,220,507 | 0.02% |
| Cache-Control | 1,293 | 98,177,840 | 0.00% |
| Referrer-Policy | 814 | 28,948,190 | 0.00% |
Content-MD5Samples (2)
| 128 | 67,177 | 0.19% |
Content-LocationSamples (1)
| 61 | 173,135 | 0.04% |
| Access-Control-Allow-Headers | 58 | 6,316,158 | 0.00% |
| … 1 more values not shown … | |||
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 1,779,841 | 16.6% | 5.8% |
| nginx | 1,281,828 | 12.0% | 4.8% |
| cloudfront | 811,152 | 7.6% | 4.8% |
| akamai | 725,414 | 6.8% | 5.7% |
| nextjs | 619,053 | 5.8% | 7.5% |
| fastly | 472,754 | 4.4% | 4.8% |
| apache | 356,631 | 3.3% | 2.7% |
| envoy | 307,027 | 2.9% | 6.4% |
| nuxt | 66,432 | 0.6% | 6.5% |
| azure-front-door | 65,676 | 0.6% | 4.6% |
| … 1 more layers not shown … | |||
It appears that the Date header has been changed by an intermediary.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| fastly | 1,491,574 | 89.8% | 15.0% |
| nginx | 391,328 | 23.6% | 1.5% |
| nextjs | 155,439 | 9.4% | 1.9% |
| envoy | 74,525 | 4.5% | 1.5% |
| vercel | 69,839 | 4.2% | 3.7% |
| cloudfront | 13,808 | 0.8% | 0.1% |
| cloudflare | 11,877 | 0.7% | 0.0% |
| nuxt | 9,920 | 0.6% | 1.0% |
| apache | 9,807 | 0.6% | 0.1% |
| azure-front-door | 14 | 0.0% | 0.0% |
This response doesn't have a Date header.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| envoy | 35 | 0.0% | 0.0% |
| apache | 2 | 0.0% | 0.0% |
The Content-Disposition header doesn't have a 'filename' parameter.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 5,151 | 22.2% | 0.0% |
| fastly | 3,626 | 15.7% | 0.0% |
| nginx | 3,102 | 13.4% | 0.0% |
| cloudflare | 1,696 | 7.3% | 0.0% |
| cloudfront | 1,079 | 4.7% | 0.0% |
| akamai | 854 | 3.7% | 0.0% |
| azure-front-door | 601 | 2.6% | 0.0% |
| envoy | 29 | 0.1% | 0.0% |
The %(field_name)s field is very large (%(field_size)s bytes).
| Value | Note fires | Header occurrences | Fires per occurrence | Largest seen |
|---|---|---|---|---|
Content-Security-PolicySamples (15)
| 509,599 | 38,270,592 | 1.33% | 27.2 KB |
LinkSamples (8)
| 153,667 | 43,505,576 | 0.35% | 32.2 KB |
Content-Security-Policy-Report-OnlySamples (11)
| 83,205 | 3,458,084 | 2.41% | 20.8 KB |
| Set-Cookie | 9,530 | 238,378,526 | 0.00% | 23.1 KB |
X-Content-Security-PolicySamples (1)
| 7,185 | 980,283 | 0.73% | 9.7 KB |
X-Webkit-CSPSamples (1)
| 6,982 | 459,328 | 1.52% | 8.2 KB |
| x-drupal-cache-tags | 4,204 | 58,275 | 7.21% | 18.0 KB |
| cache-tags | 2,378 | 114,180 | 2.08% | 17.2 KB |
| Surrogate-Key | 1,907 | 554,831 | 0.34% | 9.1 KB |
X-Drupal-Cache-TagsSamples (1)
| 692 | 58,275 | 1.19% | 22.6 KB |
x-cache-tagSamples (1)
| 85 | 28,794 | 0.30% | 18.8 KB |
cache-tagSamples (1)
| 82 | 570,401 | 0.01% | 18.8 KB |
| x-cache-tags | 56 | 73,631 | 0.08% | 22.4 KB |
| xkey | 2 | 10,167,065 | 0.00% | 8.9 KB |
x-data-layerSamples (1)
| 2 | 0 | — | 20.4 KB |
| Server-Timing | 2 | 55,581,820 | 0.00% | 9.5 KB |
| cf-h2-pushed | 2 | 609,500 | 0.00% | 8.3 KB |
| x-getclosestlocation | 1 | 0 | — | 14.2 KB |
| Value | Note fires |
|---|---|
| 8-16 KB | 659,544 |
| 16-32 KB | 119,987 |
| 32+ KB | 50 |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 352,665 | 45.2% | 1.2% |
| cloudfront | 184,370 | 23.6% | 1.1% |
| fastly | 145,956 | 18.7% | 1.5% |
| akamai | 96,469 | 12.4% | 0.8% |
| nginx | 67,558 | 8.7% | 0.3% |
| envoy | 53,232 | 6.8% | 1.1% |
| nextjs | 29,132 | 3.7% | 0.4% |
| apache | 28,285 | 3.6% | 0.2% |
| vercel | 14,084 | 1.8% | 0.7% |
| azure-front-door | 9,105 | 1.2% | 0.6% |
| … 1 more layers not shown … | |||
The 'filename' parameter on the Content-Disposition header contains a '%%' character.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 2,658 | 23.4% | 0.0% |
| nginx | 2,142 | 18.9% | 0.0% |
| cloudflare | 813 | 7.2% | 0.0% |
| akamai | 140 | 1.2% | 0.0% |
| cloudfront | 96 | 0.8% | 0.0% |
| azure-front-door | 67 | 0.6% | 0.0% |
| envoy | 65 | 0.6% | 0.0% |
| fastly | 29 | 0.3% | 0.0% |
| vercel | 3 | 0.0% | 0.0% |
| nextjs | 3 | 0.0% | 0.0% |
In %(field_name)s, the %(context)s key '%(key)s' is duplicated.
| Value | Note fires | Header occurrences | Fires per occurrence |
|---|---|---|---|
Permissions-PolicySamples (13)
| 326,367 | 10,508,143 | 3.11% |
Reporting-EndpointsSamples (15)
| 45,537 | 3,012,499 | 1.51% |
Cache-StatusSamples (1)
| 289 | 1,083,519 | 0.03% |
| Value | Note fires |
|---|---|
| Permissions-Policy: ch-ua-model | 102,105 |
| Reporting-Endpoints: heroku-nel | 37,274 |
| Permissions-Policy: geolocation | 19,008 |
| Permissions-Policy: microphone | 18,859 |
| Permissions-Policy: camera | 18,363 |
| Permissions-Policy: browsing-topics | 17,393 |
| Permissions-Policy: attribution-reporting | 16,788 |
| Permissions-Policy: otp-credentials | 16,788 |
| Permissions-Policy: payment | 15,127 |
| Permissions-Policy: magnetometer | 11,612 |
| Permissions-Policy: gyroscope | 9,807 |
| Permissions-Policy: accelerometer | 9,228 |
| Permissions-Policy: usb | 9,166 |
| Reporting-Endpoints: max_age | 8,218 |
| Permissions-Policy: fullscreen | 8,076 |
| Permissions-Policy: vibrate | 5,095 |
| Permissions-Policy: sync-xhr | 4,814 |
| Permissions-Policy: midi | 4,801 |
| Permissions-Policy: picture-in-picture | 4,513 |
| Permissions-Policy: interest-cohort | 3,601 |
| Permissions-Policy: screen-wake-lock | 3,462 |
| Permissions-Policy: autoplay | 2,997 |
| Permissions-Policy: encrypted-media | 2,980 |
| Permissions-Policy: display-capture | 2,901 |
| Permissions-Policy: cross-origin-isolated | 2,899 |
| … 17 more values not shown … | |
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| fastly | 124,689 | 33.5% | 1.3% |
| nextjs | 77,066 | 20.7% | 0.9% |
| cloudflare | 59,104 | 15.9% | 0.2% |
| akamai | 52,883 | 14.2% | 0.4% |
| nginx | 50,162 | 13.5% | 0.2% |
| envoy | 17,664 | 4.7% | 0.4% |
| apache | 16,630 | 4.5% | 0.1% |
| cloudfront | 11,288 | 3.0% | 0.1% |
| vercel | 8,513 | 2.3% | 0.4% |
| nuxt | 3,653 | 1.0% | 0.4% |
The '%(disposition)s' Content-Disposition isn't known.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 36,059 | 55.2% | 0.3% |
| apache | 5,746 | 8.8% | 0.0% |
| nginx | 4,155 | 6.4% | 0.0% |
| cloudflare | 1,106 | 1.7% | 0.0% |
| fastly | 249 | 0.4% | 0.0% |
| cloudfront | 68 | 0.1% | 0.0% |
| envoy | 44 | 0.1% | 0.0% |
| azure-front-door | 1 | 0.0% | 0.0% |
The '%(param)s' parameter on the %(field_name)s header is single-quoted.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 48,435 | 45.0% | 0.2% |
| fastly | 29,074 | 27.0% | 0.3% |
| nginx | 19,871 | 18.5% | 0.1% |
| apache | 5,996 | 5.6% | 0.0% |
| cloudfront | 3,338 | 3.1% | 0.0% |
This status code doesn't define any meaning for the Location header.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 3,323 | 29.4% | 0.0% |
| apache | 3,303 | 29.3% | 0.0% |
| cloudfront | 3,239 | 28.7% | 0.0% |
| nginx | 2,606 | 23.1% | 0.0% |
| cloudflare | 44 | 0.4% | 0.0% |
| fastly | 20 | 0.2% | 0.0% |
| envoy | 19 | 0.2% | 0.0% |
| azure-front-door | 1 | 0.0% | 0.0% |
The '%(param)s' parameter on the '%(metric)s' metric has a non-numeric value.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 125,221 | 82.7% | 1.0% |
| nginx | 24,795 | 16.4% | 0.1% |
| cloudflare | 17,558 | 11.6% | 0.1% |
| envoy | 17,080 | 11.3% | 0.4% |
| nextjs | 8,855 | 5.8% | 0.1% |
| cloudfront | 124 | 0.1% | 0.0% |
The '%(param)s' parameter repeats in the %(field_name)s header.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 117,121 | 66.3% | 0.4% |
| cloudflare | 42,394 | 24.0% | 0.1% |
| cloudfront | 7,631 | 4.3% | 0.0% |
| akamai | 3,484 | 2.0% | 0.0% |
| azure-front-door | 1,563 | 0.9% | 0.1% |
| apache | 96 | 0.1% | 0.0% |
| fastly | 6 | 0.0% | 0.0% |
The filename in the Content-Disposition header contains a path character.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 3,575 | 93.1% | 0.0% |
| cloudflare | 75 | 2.0% | 0.0% |
| apache | 22 | 0.6% | 0.0% |
| fastly | 21 | 0.5% | 0.0% |
| cloudfront | 11 | 0.3% | 0.0% |
| azure-front-door | 6 | 0.2% | 0.0% |
| akamai | 2 | 0.1% | 0.0% |
| envoy | 1 | 0.0% | 0.0% |
The Report-To header value is missing the '%(key)s' key.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 21,507 | 36.5% | 0.1% |
| fastly | 17,247 | 29.3% | 0.2% |
| cloudfront | 13,298 | 22.6% | 0.1% |
| nextjs | 13,146 | 22.3% | 0.2% |
| apache | 152 | 0.3% | 0.0% |
| cloudflare | 13 | 0.0% | 0.0% |
The NEL policy is missing the '%(key)s' key.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 31,663 | 46.6% | 0.1% |
| nginx | 30,662 | 45.1% | 0.1% |
| cloudfront | 14,692 | 21.6% | 0.1% |
The %(field_type)s section is very large (%(section_size)s bytes).
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 172 | 88.7% | 0.0% |
| nuxt | 82 | 42.3% | 0.0% |
The %(rel)s Link target uses an unsupported scheme.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 133 | 97.1% | 0.0% |
| cloudflare | 4 | 2.9% | 0.0% |
The 'rev' parameter on the Link header is deprecated.
The %(field_name)s header's value uses an obsolete format.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 2,670 | 100.0% | 0.0% |
The resource has been deprecated.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| nginx | 24 | 100.0% | 0.0% |
The NEL policy has an invalid type for '%(key)s'.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| azure-front-door | 1,139 | 100.0% | 0.1% |
The Report-To header has an invalid type for '%(key)s'.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| azure-front-door | 1,139 | 100.0% | 0.1% |
The 'type' parameter on the %(link)s Link header isn't a media type.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 386 | 100.0% | 0.0% |
The %(param)s parameter's value uses an encoding other than UTF-8.
The resource last changed %(last_modified_string)s.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 9,174,489 | 37.0% | 29.9% |
| nginx | 3,834,339 | 15.5% | 14.5% |
| fastly | 3,505,938 | 14.1% | 35.3% |
| akamai | 2,949,375 | 11.9% | 23.1% |
| apache | 2,782,922 | 11.2% | 21.1% |
| cloudfront | 2,686,776 | 10.8% | 15.9% |
| envoy | 283,521 | 1.1% | 5.9% |
| nextjs | 244,116 | 1.0% | 2.9% |
| azure-front-door | 215,356 | 0.9% | 15.1% |
| nuxt | 123,043 | 0.5% | 12.0% |
| … 1 more layers not shown … | |||
The %(header_name)s header can probably be removed.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 12,372,127 | 27.7% | 40.4% |
| nginx | 11,102,462 | 24.8% | 41.9% |
| nextjs | 7,889,844 | 17.7% | 95.3% |
| cloudfront | 6,430,225 | 14.4% | 38.1% |
| apache | 3,521,441 | 7.9% | 26.7% |
| fastly | 3,135,013 | 7.0% | 31.6% |
| akamai | 2,612,131 | 5.8% | 20.4% |
| envoy | 1,625,576 | 3.6% | 33.8% |
| vercel | 1,353,348 | 3.0% | 71.4% |
| nuxt | 1,093,958 | 2.4% | 106.7% |
| … 1 more layers not shown … | |||
The '%(metric)s' metric is missing the 'desc' parameter.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 28,330,114 | 64.1% | 92.5% |
| akamai | 13,578,925 | 30.7% | 106.2% |
| nextjs | 3,133,611 | 7.1% | 37.8% |
| cloudfront | 2,751,883 | 6.2% | 16.3% |
| envoy | 2,527,236 | 5.7% | 52.5% |
| nginx | 2,013,980 | 4.6% | 7.6% |
| fastly | 1,851,285 | 4.2% | 18.7% |
| apache | 1,242,016 | 2.8% | 9.4% |
| vercel | 774,891 | 1.8% | 40.9% |
| nuxt | 498,660 | 1.1% | 48.7% |
| … 1 more layers not shown … | |||
The '%(metric)s' metric is missing the 'dur' parameter.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 15,034,640 | 58.6% | 49.1% |
| akamai | 8,374,708 | 32.6% | 65.5% |
| nextjs | 1,714,650 | 6.7% | 20.7% |
| fastly | 1,682,539 | 6.6% | 17.0% |
| cloudfront | 1,609,292 | 6.3% | 9.5% |
| nginx | 1,467,849 | 5.7% | 5.5% |
| envoy | 1,072,676 | 4.2% | 22.3% |
| apache | 766,282 | 3.0% | 5.8% |
| nuxt | 501,646 | 2.0% | 48.9% |
| vercel | 411,898 | 1.6% | 21.7% |
| … 1 more layers not shown … | |||
One or more intermediaries are present.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudfront | 16,345,181 | 54.2% | 96.9% |
| nginx | 7,503,049 | 24.9% | 28.3% |
| fastly | 6,019,270 | 19.9% | 60.7% |
| cloudflare | 3,856,268 | 12.8% | 12.6% |
| nextjs | 3,123,326 | 10.3% | 37.7% |
| apache | 2,671,117 | 8.9% | 20.2% |
| envoy | 1,840,797 | 6.1% | 38.3% |
| nuxt | 221,417 | 0.7% | 21.6% |
| vercel | 147,456 | 0.5% | 7.8% |
| azure-front-door | 113,308 | 0.4% | 7.9% |
| … 1 more layers not shown … | |||
The Server header is long.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| apache | 136,638 | 86.6% | 1.0% |
| akamai | 8,220 | 5.2% | 0.1% |
| cloudfront | 6,185 | 3.9% | 0.0% |
| envoy | 5,417 | 3.4% | 0.1% |
| fastly | 67 | 0.0% | 0.0% |
The Location header contains a relative URI.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 3,246 | 47.9% | 0.0% |
| nginx | 2,606 | 38.4% | 0.0% |
| cloudflare | 13 | 0.2% | 0.0% |
| fastly | 1 | 0.0% | 0.0% |
The %(lang)s language tag appears more than once.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| akamai | 1,801 | 81.6% | 0.0% |
| fastly | 1,801 | 81.6% | 0.0% |
| nginx | 251 | 11.4% | 0.0% |
| apache | 155 | 7.0% | 0.0% |
The server's clock is correct.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 30,616,560 | 26.0% | 99.9% |
| nginx | 25,294,480 | 21.5% | 95.5% |
| cloudfront | 15,611,278 | 13.3% | 92.5% |
| akamai | 12,782,694 | 10.9% | 99.9% |
| apache | 12,609,545 | 10.7% | 95.5% |
| fastly | 8,394,633 | 7.1% | 84.6% |
| nextjs | 7,933,729 | 6.7% | 95.8% |
| envoy | 4,643,212 | 3.9% | 96.5% |
| vercel | 1,722,981 | 1.5% | 90.9% |
| azure-front-door | 1,427,422 | 1.2% | 100.0% |
| … 1 more layers not shown … | |||
This response provides resource hints (%(hints)s).
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 4,083,328 | 31.2% | 13.3% |
| akamai | 3,311,906 | 25.3% | 25.9% |
| nextjs | 2,409,368 | 18.4% | 29.1% |
| nginx | 1,918,884 | 14.6% | 7.2% |
| cloudfront | 1,836,823 | 14.0% | 10.9% |
| fastly | 1,336,463 | 10.2% | 13.5% |
| envoy | 978,124 | 7.5% | 20.3% |
| vercel | 579,506 | 4.4% | 30.6% |
| apache | 491,733 | 3.8% | 3.7% |
| azure-front-door | 117,037 | 0.9% | 8.2% |
| … 1 more layers not shown … | |||
Network Error Logging is configured for this response.
| Layer | Note fires | Share of occurrences | Of layer's traffic |
|---|---|---|---|
| cloudflare | 329,116 | 48.8% | 1.1% |
| fastly | 141,851 | 21.0% | 1.4% |
| nextjs | 73,773 | 10.9% | 0.9% |
| cloudfront | 65,492 | 9.7% | 0.4% |
| akamai | 4,379 | 0.6% | 0.0% |
| vercel | 1,947 | 0.3% | 0.1% |
| azure-front-door | 1,113 | 0.2% | 0.1% |
| nginx | 1,067 | 0.2% | 0.0% |
| apache | 195 | 0.0% | 0.0% |
| nuxt | 189 | 0.0% | 0.0% |
| … 1 more layers not shown … | |||
Which findings clump on the same response — testing whether defects cluster rather than scatter. A cluster is the set of defect notes (bad / warn) that fired on a response; (none) means none did. Mechanical parent/child note pairs (a sub-finding always co-occurs with its parent) are excluded from the pairs below. Responses is occurrence-weighted; Sites is a HyperLogLog estimate of distinct operators. Shares are of all 122,905,867 analysed responses.
4.64% of responses (5,700,030) produced no bad/warn finding.
The long tail of rare values was elided during shuffle to keep cluster memory bounded; counts and percentages below describe the retained head only.
For the most common co-occurring finding pairs: P(A|B) is the share of responses with finding B that also carry A. Lift > 1 means the two fire together more than independent prevalence predicts — the clumping signal.
httplint defines these warn/bad notes and cc-lint's response-header pipeline can reach them; none of them fired on any analysed response.
These notes only fire when the response body is fed to httplint. cc-lint reads WAT metadata records (response headers only), so they are unreachable without a future full-WARC mode.
These notes only fire from httplint's request-side code paths. cc-lint runs HttpResponseLinter against WAT response metadata, so they cannot fire on this pipeline.
Most common response header names. Count is per header occurrence — a response that sends a header more than once counts each line — so the percentage is occurrences ÷ responses and may slightly exceed a header’s response-presence count shown in other sections.
The long tail of rare values was elided during shuffle to keep cluster memory bounded; counts and percentages below describe the retained head only.
| Header | Count | % of responses |
|---|---|---|
| set-cookie | 238,378,526 | 194.0% |
| content-length | 122,875,593 | 100.0% |
| content-type | 122,848,015 | 100.0% |
| date | 122,298,911 | 99.5% |
| vary | 112,681,471 | 91.7% |
| cache-control | 98,177,840 | 79.9% |
| server | 94,787,332 | 77.1% |
| strict-transport-security | 71,294,722 | 58.0% |
| x-frame-options | 60,521,378 | 49.2% |
| x-content-type-options | 60,244,519 | 49.0% |
| server-timing | 55,581,820 | 45.2% |
| expires | 44,968,544 | 36.6% |
| link | 43,505,576 | 35.4% |
| x-xss-protection | 41,103,756 | 33.4% |
| content-security-policy | 38,270,592 | 31.1% |
| x-cache | 32,362,559 | 26.3% |
| alt-svc | 32,351,074 | 26.3% |
| cf-ray | 30,599,767 | 24.9% |
| via | 30,429,667 | 24.8% |
| cf-cache-status | 30,131,520 | 24.5% |
| referrer-policy | 28,948,190 | 23.6% |
| x-powered-by | 27,941,512 | 22.7% |
| pragma | 27,337,916 | 22.2% |
| etag | 27,061,042 | 22.0% |
| last-modified | 25,956,008 | 21.1% |
| accept-ranges | 21,869,020 | 17.8% |
| age | 17,943,691 | 14.6% |
| x-amz-cf-pop | 17,267,002 | 14.0% |
| x-amz-cf-id | 16,825,393 | 13.7% |
| access-control-allow-origin | 16,045,895 | 13.1% |
| connection | 15,389,562 | 12.5% |
| report-to | 14,955,363 | 12.2% |
| nel | 13,808,649 | 11.2% |
| content-language | 12,220,507 | 9.9% |
| permissions-policy | 10,508,143 | 8.5% |
| xkey | 10,167,065 | 8.3% |
| x-served-by | 8,411,512 | 6.8% |
| x-akamai-transformed | 8,229,609 | 6.7% |
| x-cache-hits | 7,908,507 | 6.4% |
| x-request-id | 7,618,476 | 6.2% |
| x-permitted-cross-domain-policies | 7,282,295 | 5.9% |
| x-timer | 6,897,853 | 5.6% |
| access-control-allow-headers | 6,316,158 | 5.1% |
| keep-alive | 6,182,623 | 5.0% |
| x-download-options | 6,169,336 | 5.0% |
| access-control-allow-methods | 5,681,593 | 4.6% |
| x-ua-compatible | 5,210,198 | 4.2% |
| x-envoy-upstream-service-time | 4,811,999 | 3.9% |
| access-control-allow-credentials | 4,608,418 | 3.7% |
| cross-origin-opener-policy | 4,425,144 | 3.6% |
How many bytes of response header the corpus ships, and how that budget splits by field category. Bytes are uncompressed — len(name) + len(value) + 4 (the : and CRLF framing) per header occurrence, summed over a response’s field lines. HTTP/2 and HTTP/3 compress repeated headers heavily with HPACK/QPACK, so this overstates on-the-wire cost; it measures origin / pre-compression intent. Crawler-injected x-crawler-* headers are excluded.
Mean header block: 1.3 KB per response across 122,905,867 responses.
| Header-block size | Responses | % of responses | |
|---|---|---|---|
| <256 B | 5,092,293 | 4.1% | |
| 256-1023 B | 68,632,667 | 55.9% | |
| 1-4 KB | 42,609,543 | 34.7% | |
| 4-8 KB | 5,246,260 | 4.3% | |
| 8-16 KB | 1,120,494 | 0.9% | |
| 16-32 KB | 173,035 | 0.1% | |
| 32+ KB | 194 | 0.0% |
The long tail of rare values was elided during shuffle to keep cluster memory bounded; counts and percentages below describe the retained head only.
Share of the head-of-distribution header bytes carried by registered, deprecated, and non-registered fields. Classification reuses httplint’s field knowledge (the same registered/non-standard boundary the Vary section uses).
| Category | Bytes | % of header bytes | |
|---|---|---|---|
| Standard (registered) | 136.6 GB | 88.1% | |
| Deprecated / obsoleted | 3.6 GB | 2.3% | |
| Proprietary (non-registered) | 14.8 GB | 9.6% |
| Header | Bytes | % of header bytes | Note |
|---|---|---|---|
set-cookie | 36.8 GB | 23.7% | Cost is upstream and recurring: each cookie is echoed on every subsequent request, so this understates its real traffic share. |
content-security-policy | 31.7 GB | 20.4% | The largest single policy header; see the per-site CSP size distribution below. |
The long tail of rare values was elided during shuffle to keep cluster memory bounded; counts and percentages below describe the retained head only.
A different ranking than top-by-count: a header can be rare but huge (a giant CSP) or ubiquitous but small.
| Header | Bytes | % of header bytes |
|---|---|---|
| set-cookie | 36.8 GB | 23.7% |
| content-security-policy | 31.7 GB | 20.4% |
| link | 12.6 GB | 8.1% |
| content-security-policy-report-only | 5.3 GB | 3.4% |
| content-type | 4.4 GB | 2.9% |
| cache-control | 4.3 GB | 2.7% |
| date | 4.2 GB | 2.7% |
| strict-transport-security | 3.9 GB | 2.5% |
| report-to | 3.3 GB | 2.1% |
| vary | 3.1 GB | 2.0% |
| content-length | 2.7 GB | 1.7% |
| server-timing | 2.7 GB | 1.7% |
| x-content-type-options | 1.9 GB | 1.2% |
| server | 1.7 GB | 1.1% |
| x-frame-options | 1.7 GB | 1.1% |
| via | 1.5 GB | 1.0% |
| expires | 1.5 GB | 1.0% |
| permissions-policy | 1.5 GB | 0.9% |
| referrer-policy | 1.2 GB | 0.8% |
| x-xss-protection | 1.2 GB | 0.8% |
| last-modified | 1.1 GB | 0.7% |
| x-amz-cf-id | 1.1 GB | 0.7% |
| alt-svc | 1.1 GB | 0.7% |
| nel | 954.7 MB | 0.6% |
| etag | 931.8 MB | 0.6% |
| cf-ray | 875.5 MB | 0.6% |
| x-cache | 798.6 MB | 0.5% |
| cf-cache-status | 726.1 MB | 0.5% |
| x-powered-by | 690.4 MB | 0.4% |
| x-content-security-policy | 682.3 MB | 0.4% |
| xkey | 619.1 MB | 0.4% |
| reporting-endpoints | 595.6 MB | 0.4% |
| access-control-allow-origin | 592.9 MB | 0.4% |
| access-control-allow-headers | 538.3 MB | 0.3% |
| x-served-by | 484.5 MB | 0.3% |
| x-webkit-csp | 481.8 MB | 0.3% |
| pragma | 466.7 MB | 0.3% |
| accept-ranges | 457.4 MB | 0.3% |
| x-amz-cf-pop | 399.8 MB | 0.3% |
| x-request-id | 380.9 MB | 0.2% |
| connection | 351.2 MB | 0.2% |
| accept-ch | 335.8 MB | 0.2% |
| x-akamai-transformed | 311.0 MB | 0.2% |
| x-permitted-cross-domain-policies | 288.9 MB | 0.2% |
| access-control-allow-methods | 286.4 MB | 0.2% |
| content-language | 268.6 MB | 0.2% |
| p3p | 266.2 MB | 0.2% |
| x-timer | 259.0 MB | 0.2% |
| origin-trial | 244.7 MB | 0.2% |
| feature-policy | 220.7 MB | 0.1% |
Proprietary response headers — names httplint has no parser for and that are not deprecated, the same registered/non-standard boundary the Vary and byte-economics sections use. This is where the vendor-owned x- namespace lives and where de-facto conventions are born. Only header names are counted — values are never retained, since many carry opaque request-ids or tokens. Crawler-injected x-crawler-* headers are excluded. Counts are responses carrying the header (a header is counted once per response).
The long tail of rare values was elided during shuffle to keep cluster memory bounded; counts and percentages below describe the retained head only.
Cluster totals are head-only lower bounds: they are derived from the shuffle-retained head of the header distribution, so the long tail of rare proprietary names is already discarded before this clustering runs.
5,000 distinct non-standard header names in the retained head, across 364,324,054 response-header appearances (14.8 GB). 15 (0%) are well-known-but-unregistered de-facto headers (x-forwarded-*, x-request-id, …); the other 4,985 are the novel tail.
Attribution is by header name (the same fingerprint signal table the infrastructure section uses, so the two agree on vendor identity); a name in no vendor namespace is Unattributed. This view tells the incentives story.
| Cluster | Distinct headers | Responses | % of non-standard bytes | Example members |
|---|---|---|---|---|
| Unattributed | 4,873 | 221,845,472 | 64.2% | x-cache-hits, x-request-id, x-permitted-cross-domain-policies, x-dns-prefetch-control, x-cache-status, x-drupal-dynamic-cache, request-context, x-cacheable |
| cloudflare | 17 | 64,066,400 | 12.2% | cf-ray, cf-cache-status, cf-edge-cache, cf-apo-via, cf-h2-pushed, cf-ipcountry, cf-placement, cf-connecting-ip |
| cloudfront | 2 | 33,650,826 | 10.2% | x-amz-cf-pop, x-amz-cf-id |
| fastly | 3 | 15,856,771 | 5.4% | x-served-by, x-timer, surrogate-key |
| akamai | 62 | 14,221,662 | 4.3% | x-akamai-transformed, akamai-grn, akamai-cache-status, akamai-request-bc, x-akamai-reference-id, x-akamai-request-id, x-akamai-trace-id, x-akamai-erpolicy |
| envoy | 7 | 5,394,944 | 1.4% | x-envoy-upstream-service-time, x-envoy-decorator-operation, x-envoy-attempt-count, x-envoy-response-flags, x-envoy-datacenter, x-envoy-upstream-address, x-envoy-cluster |
| vercel | 22 | 4,623,043 | 1.2% | x-vercel-id, x-vercel-cache, x-vercel-ip-country, x-vercel-ip-latitude, x-vercel-ip-longitude, x-vercel-ip-city, x-vercel-ip-country-region, x-vercel-ip-as-number |
| nextjs | 7 | 3,142,330 | 0.5% | x-nextjs-cache, x-nextjs-prerender, x-nextjs-stale-time, x-nextjs-date, x-nextjs-postponed, x-nextjs-rewritten-path, x-nextjs-matched-path |
| azure-front-door | 7 | 1,522,606 | 0.7% | x-azure-ref, x-azure-clientip, x-azure-originstatuscode, x-azure-fdid, x-azure-ja4-fingerprint, x-azure-requestchainv2, x-azure-socketip |
What the header is for, from a data-driven name-pattern table.
| Cluster | Distinct headers | Responses | % of non-standard bytes | Example members |
|---|---|---|---|---|
| Routing / forwarding | 142 | 37,657,299 | 8.7% | x-amz-cf-pop, x-served-by, x-vhost, host-header, x-pantheon-styx-hostname, x-backend, x-dispatcher, x-host |
| Caching | 254 | 65,617,615 | 14.7% | cf-cache-status, x-cache-hits, x-cache-status, x-drupal-dynamic-cache, x-cacheable, x-vercel-cache, x-nextjs-cache, cf-edge-cache |
| Observability / tracing | 64 | 86,457,720 | 26.1% | cf-ray, x-amz-cf-id, x-request-id, x-timer, x-envoy-upstream-service-time, akamai-grn, request-context, x-vercel-id |
| Security | 9 | 7,269,823 | 2.0% | x-permitted-cross-domain-policies, x-framework, x-content-security-policy-report-only, x-frame-ancestors, x-webkit-csp-report-only, x-xssprotection, x-frames-options, x-frameoptions |
| Other / unclassified | 4,531 | 167,321,597 | 48.5% | x-akamai-transformed, x-dns-prefetch-control, x-robots-tag, x-matched-path, x-rq, x-middleware-rewrite, x-hacker, origin-agent-cluster |
Auto-derived from the name, so a brand-new vendor namespace forms its own cluster the moment it appears.
| Cluster | Distinct headers | Responses | % of non-standard bytes | Example members |
|---|---|---|---|---|
| cf-* | 18 | 64,094,698 | 12.2% | cf-ray, cf-cache-status, cf-edge-cache, cf-apo-via, cf-h2-pushed, cf-ipcountry, cf-placement, cf-connecting-ip |
| x-amz-* | 45 | 36,291,097 | 11.0% | x-amz-cf-pop, x-amz-cf-id, x-amz-server-side-encryption, x-amz-apigw-id, x-amz-version-id, x-amz-request-id, x-amz-id-2, x-amz-rid |
| x-cache-* | 120 | 14,698,820 | 2.4% | x-cache-hits, x-cache-status, x-cache-group, x-cache-key, x-cache-ttl, x-cache-age, x-cache-rule, x-cache-info |
| x-akamai-* | 44 | 9,325,413 | 2.5% | x-akamai-transformed, x-akamai-reference-id, x-akamai-request-id, x-akamai-trace-id, x-akamai-erpolicy, x-akamai-erruleid, x-akamai-edgescape, x-akamai-user-cache-control |
| x-request-* | 34 | 8,474,197 | 2.8% | x-request-id, x-request-category, x-request-ip, x-request-originated-from, x-request-source, x-request-counters, x-request-timestamp, x-request-detected-device |
| x-served-* | 5 | 8,441,299 | 3.2% | x-served-by, x-served-by-dyno, x-served, x-served-by-pod, x-served-version |
| x-permitted-* | 1 | 7,198,491 | 1.9% | x-permitted-cross-domain-policies |
| x-timer-* | 1 | 6,897,853 | 1.7% | x-timer |
| cdn-* | 27 | 6,148,891 | 1.2% | cdn-requestid, cdn-cache, cdn-proxyver, cdn-pullzone, cdn-requestcountrycode, cdn-requesttime, cdn-status, cdn-cachedat |
| x-envoy-* | 7 | 5,394,944 | 1.4% | x-envoy-upstream-service-time, x-envoy-decorator-operation, x-envoy-attempt-count, x-envoy-response-flags, x-envoy-datacenter, x-envoy-upstream-address, x-envoy-cluster |
| akamai-* | 19 | 4,900,105 | 1.8% | akamai-grn, akamai-cache-status, akamai-request-bc, akamai-grn-www.adobe.com, akamai-origin-hop, akamai-edgescape, akamai-mon-iucid-del, akamai-x-url |
| x-arc-* | 7 | 4,774,096 | 1.0% | x-arc-request-id, x-arc-pb-request-id, x-arc-pb-mx-id, x-arc-ttl, x-arc-pb-edge, x-arc, x-arc-edgecontroller |
| x-vercel-* | 22 | 4,623,043 | 1.2% | x-vercel-id, x-vercel-cache, x-vercel-ip-country, x-vercel-ip-latitude, x-vercel-ip-longitude, x-vercel-ip-city, x-vercel-ip-country-region, x-vercel-ip-as-number |
| x-dns-* | 1 | 4,358,541 | 0.8% | x-dns-prefetch-control |
| x-td-* | 31 | 3,177,073 | 0.7% | x-td-cu2, x-td-cachecontrol, x-td-cachecontrol-type, x-td-control-ttlreal, x-td-control, x-td-cache-touch, x-td-control-ex, x-td-group |
| x-nextjs-* | 7 | 3,142,330 | 0.5% | x-nextjs-cache, x-nextjs-prerender, x-nextjs-stale-time, x-nextjs-date, x-nextjs-postponed, x-nextjs-rewritten-path, x-nextjs-matched-path |
| x-ftr-* | 6 | 2,948,103 | 1.1% | x-ftr-backend, x-ftr-backend-server, x-ftr-balancer, x-ftr-cache-status, x-ftr-request-id, x-ftr-kiosq-server-side |
| request-* | 8 | 2,745,560 | 1.1% | request-context, request-id, request-grn, request-handler-metrics, request-uuid, request-uri, request-time, request-url |
| x-drupal-* | 11 | 2,646,971 | 1.7% | x-drupal-dynamic-cache, x-drupal-cache-max-age, x-drupal-cache-tags, x-drupal-cache-contexts, x-drupal-cache-control, x-drupal-cache-tags-1, x-drupal-cache-tags-2, x-drupal-cache-tags-3 |
| x-amzn-* | 9 | 2,520,503 | 1.1% | x-amzn-trace-id, x-amzn-requestid, x-amzn-remapped-content-length, x-amzn-remapped-date, x-amzn-remapped-connection, x-amzn-remapped-server, x-amzn-remapped-x-amzn-requestid, x-amzn-remapped-x-amzn-remapped-connection |
| origin-* | 10 | 2,211,847 | 1.9% | origin-agent-cluster, origin-trial, origin-cache-control, origin-edge-control, origin-cc, origin-ex, origin-name, origin-cache-tag |
| x-cacheable-* | 2 | 1,915,248 | 0.3% | x-cacheable, x-cacheable-ttl |
| x-middleware-* | 9 | 1,908,196 | 1.1% | x-middleware-rewrite, x-middleware-set-cookie, x-middleware-locale, x-middleware-servicename, x-middleware-next, x-middleware-cache, x-middleware-start, x-middleware-duration |
| x-robots-* | 2 | 1,851,473 | 0.5% | x-robots-tag, x-robots-tag-host |
| x-matched-* | 2 | 1,813,515 | 0.5% | x-matched-path, x-matched-location |
| x-cdn-* | 25 | 1,778,908 | 0.2% | x-cdn, x-cdn-cache-status, x-cdn-cache-id, x-cdn-pop, x-cdn-cache, x-cdn-traceid, x-cdn-ttl, x-cdn-pop-ip |
| x-rq-* | 1 | 1,756,669 | 0.2% | x-rq |
| x-server-* | 25 | 1,679,254 | 0.3% | x-server, x-server-name, x-server-lifecycle-phase, x-server-version, x-server-id, x-server-powered-by, x-server-generated, x-server-varnish-web |
| x-vhost-* | 2 | 1,634,696 | 0.2% | x-vhost, x-vhost-debug |
| x-country-* | 10 | 1,582,021 | 0.2% | x-country-code, x-country-code-real, x-country, x-country-filter, x-country-name, x-country-code-2, x-country-origin, x-country-region |
| Header | Inferred vendor | Responses | Class |
|---|---|---|---|
cf-ray | cloudflare | 30,599,767 | novel |
cf-cache-status | cloudflare | 30,131,520 | novel |
x-amz-cf-pop | cloudfront | 16,825,433 | novel |
x-amz-cf-id | cloudfront | 16,825,393 | novel |
x-served-by | fastly | 8,411,506 | novel |
x-akamai-transformed | akamai | 8,229,609 | novel |
x-cache-hits | — | 7,908,507 | novel |
x-request-id | — | 7,570,558 | de-facto |
x-permitted-cross-domain-policies | — | 7,198,491 | de-facto |
x-timer | fastly | 6,897,853 | novel |
x-envoy-upstream-service-time | envoy | 4,811,999 | novel |
x-dns-prefetch-control | — | 4,358,541 | de-facto |
akamai-grn | akamai | 2,996,859 | novel |
x-cache-status | — | 2,756,845 | novel |
x-drupal-dynamic-cache | — | 2,442,962 | novel |
request-context | — | 2,335,770 | novel |
x-cacheable | — | 1,898,968 | novel |
x-vercel-id | vercel | 1,896,213 | novel |
x-vercel-cache | vercel | 1,895,576 | novel |
x-robots-tag | — | 1,838,450 | novel |
x-matched-path | — | 1,794,439 | novel |
x-rq | — | 1,756,669 | novel |
x-vhost | — | 1,619,767 | novel |
host-header | — | 1,566,455 | novel |
x-middleware-rewrite | — | 1,522,242 | novel |
x-azure-ref | azure-front-door | 1,427,985 | novel |
x-iinfo | — | 1,424,353 | novel |
x-nextjs-cache | nextjs | 1,403,016 | novel |
x-hacker | — | 1,387,748 | novel |
origin-agent-cluster | — | 1,290,004 | novel |
cf-edge-cache | cloudflare | 1,275,994 | novel |
x-styx-req-id | — | 1,269,482 | novel |
x-pantheon-styx-hostname | — | 1,267,678 | novel |
x-cdn | — | 1,176,451 | novel |
cf-apo-via | cloudflare | 1,135,245 | novel |
timing-allow-origin | — | 1,107,935 | novel |
x-age | — | 1,102,220 | novel |
x-cache-group | — | 1,050,040 | novel |
x-oneagent-js-injection | — | 1,015,328 | novel |
x-dw-request-base-id | — | 1,014,149 | novel |
akamai-cache-status | akamai | 1,009,861 | novel |
surrogate-control | — | 973,513 | novel |
status | — | 949,918 | novel |
x-arc-request-id | — | 946,627 | novel |
x-backend | — | 938,390 | novel |
x-arc-pb-request-id | — | 930,610 | novel |
x-arc-pb-mx-id | — | 930,403 | novel |
x-arc-ttl | — | 929,520 | novel |
x-amzn-trace-id | — | 878,801 | novel |
xkey | — | 831,913 | novel |
Best-effort fingerprint of the CDN / server / framework / platform behind each response, from signal headers. A response can match several layers (a stack), so the counts below overlap and need not sum to the response total. Fingerprinted 81.1% of responses; 23,261,311 matched no known layer.
| Layer | Role | Responses | % of responses |
|---|---|---|---|
| cloudflare | cdn | 30,643,299 | 24.9% |
| nginx | server | 26,488,665 | 21.6% |
| cloudfront | cdn | 16,873,790 | 13.7% |
| apache | server | 13,203,682 | 10.7% |
| akamai | cdn | 12,790,450 | 10.4% |
| fastly | cdn | 9,918,246 | 8.1% |
| nextjs | framework | 8,282,901 | 6.7% |
| envoy | mesh | 4,811,999 | 3.9% |
| vercel | platform | 1,896,213 | 1.5% |
| azure-front-door | cdn | 1,427,985 | 1.2% |
| nuxt | framework | 1,024,818 | 0.8% |
For the highest-volume response headers, how that header's occurrences are split across fingerprint layers: each percentage is the layer's share of this header's total occurrences, not the fraction of that layer's responses carrying the header. So a near-universal header roughly mirrors each platform's overall traffic share. Layers overlap, so shares need not sum to 100%.
The long tail of rare values was elided during shuffle to keep cluster memory bounded; counts and percentages below describe the retained head only.
| Header | Layers (share of this header's occurrences) |
|---|---|
| set-cookie | cloudflare 25% akamai 25% nginx 16% cloudfront 10% apache 9% envoy 8% |
| date | cloudflare 25% nginx 22% cloudfront 14% apache 11% akamai 10% fastly 8% |
| content-length | cloudflare 25% nginx 22% cloudfront 14% apache 11% akamai 10% fastly 8% |
| content-type | cloudflare 25% nginx 22% cloudfront 14% apache 11% akamai 10% fastly 8% |
| vary | cloudflare 29% nginx 20% cloudfront 15% akamai 11% apache 10% fastly 8% |
| server | cloudflare 32% nginx 28% apache 14% cloudfront 13% akamai 7% nextjs 6% |
| cache-control | cloudflare 25% nginx 21% cloudfront 14% akamai 12% apache 9% fastly 9% |
| strict-transport-security | cloudflare 23% nginx 19% akamai 14% cloudfront 14% fastly 12% apache 8% |
| server-timing | cloudflare 51% akamai 48% nextjs 7% fastly 6% nginx 5% envoy 5% |
| x-frame-options | cloudflare 23% nginx 22% akamai 14% cloudfront 14% fastly 10% apache 10% |
| x-content-type-options | cloudflare 25% nginx 19% cloudfront 15% akamai 14% apache 10% fastly 10% |
| link | cloudflare 30% nginx 28% akamai 12% fastly 12% cloudfront 11% nextjs 9% |
| x-cache | cloudfront 51% nginx 26% fastly 23% cloudflare 13% nextjs 8% apache 7% |
| expires | cloudflare 23% nginx 21% akamai 18% apache 15% cloudfront 7% fastly 6% |
| x-xss-protection | cloudflare 22% nginx 20% cloudfront 16% akamai 14% fastly 9% apache 9% |
| via | cloudfront 54% nginx 25% fastly 20% cloudflare 13% nextjs 10% apache 9% |
| content-security-policy | cloudflare 22% akamai 16% cloudfront 16% nginx 15% fastly 11% apache 8% |
| cf-ray | cloudflare 100% nextjs 7% cloudfront 4% fastly 4% envoy 3% vercel 2% |
| cf-cache-status | cloudflare 100% nextjs 7% cloudfront 4% fastly 3% envoy 3% vercel 2% |
| alt-svc | cloudflare 53% cloudfront 16% nginx 10% fastly 8% akamai 8% nextjs 8% |
| x-powered-by | cloudflare 30% nextjs 28% nginx 23% cloudfront 16% apache 7% akamai 6% |
| etag | nginx 24% cloudfront 23% akamai 19% nextjs 14% fastly 13% apache 8% |
| referrer-policy | cloudflare 26% nginx 19% cloudfront 18% akamai 10% fastly 8% apache 8% |
Autonomous System the crawl-time IP resolved to, by response count. Reflects the outermost network the crawler reached (a fronting CDN, or the origin's host). Operator names who owns the network (a seeded map of well-known ASNs); Layer is the header-derived fingerprint, if any. The two are complementary -- a generic cloud ASN carries no CDN fingerprint, which is itself informative.
| ASN | Operator | Layer | Responses | % of responses |
|---|---|---|---|---|
| AS16509 | Amazon (AWS) | 14,911,433 | 12.1% | |
| AS54113 | Fastly | fastly | 5,307,181 | 4.3% |
| AS13335 | Cloudflare | cloudflare | 4,249,461 | 3.5% |
| AS16625 | akamai | 4,131,612 | 3.4% | |
| AS20940 | Akamai | akamai | 3,203,015 | 2.6% |
| AS396982 | 2,343,247 | 1.9% | ||
| AS14618 | Amazon (AWS) | 2,339,738 | 1.9% | |
| AS16276 | OVH | 1,700,907 | 1.4% | |
| AS24940 | Hetzner | 1,617,162 | 1.3% | |
| AS8075 | Microsoft | 1,352,030 | 1.1% | |
| AS19551 | 1,275,196 | 1.0% | ||
| AS209242 | 920,211 | 0.7% | ||
| AS2635 | 853,113 | 0.7% | ||
| AS51115 | 804,455 | 0.7% | ||
| AS14061 | DigitalOcean | 675,367 | 0.5% | |
| AS57724 | 535,141 | 0.4% | ||
| AS63949 | 472,824 | 0.4% | ||
| AS680 | 461,243 | 0.4% | ||
| AS49505 | 342,428 | 0.3% | ||
| AS2497 | 329,559 | 0.3% | ||
| AS50340 | 282,155 | 0.2% | ||
| AS24429 | 262,565 | 0.2% | ||
| AS30148 | 259,008 | 0.2% | ||
| AS60068 | 258,706 | 0.2% | ||
| AS52580 | 248,788 | 0.2% | ||
| AS31898 | 203,342 | 0.2% | ||
| AS200350 | 184,480 | 0.2% | ||
| AS35280 | 183,107 | 0.1% | ||
| AS197695 | 181,718 | 0.1% | ||
| AS8560 | 176,616 | 0.1% | ||
| AS36351 | 166,438 | 0.1% | ||
| AS135905 | 162,588 | 0.1% | ||
| AS201706 | 158,338 | 0.1% | ||
| AS786 | 156,702 | 0.1% | ||
| AS137 | 151,415 | 0.1% | ||
| AS54994 | 148,740 | 0.1% | ||
| AS60781 | 141,316 | 0.1% | ||
| AS43298 | 140,502 | 0.1% | ||
| AS32244 | 137,817 | 0.1% | ||
| AS36459 | 130,989 | 0.1% | ||
| AS12876 | 122,891 | 0.1% | ||
| AS37963 | 122,579 | 0.1% | ||
| AS24638 | 122,284 | 0.1% | ||
| AS57352 | 120,584 | 0.1% | ||
| AS135354 | 120,466 | 0.1% | ||
| AS4694 | 118,569 | 0.1% | ||
| AS7941 | 116,029 | 0.1% | ||
| AS15830 | 115,586 | 0.1% | ||
| AS45899 | 113,087 | 0.1% | ||
| AS139341 | 112,597 | 0.1% |
Composition of Vary across the 102,952,832 responses that carried one. A recipe is the lowercased, deduped, sorted set of field-names in a response's Vary — where synthetic cache-key engineering shows up. Responses is occurrence-weighted (one CDN origin can emit a recipe across millions of responses); Sites is a HyperLogLog estimate of distinct operators.
| Recipe | Responses | % of Vary | Sites | Synthetic tokens |
|---|---|---|---|---|
| accept-encoding | 74,080,755 | 71.96% | ~37,460 | — |
| accept-encoding, cookie | 5,622,613 | 5.46% | ~3,212 | — |
| accept-encoding, user-agent | 5,465,497 | 5.31% | ~2,674 | — |
| accept-encoding, origin | 2,259,001 | 2.19% | ~1,625 | — |
| accept-encoding, next-router-prefetch, next-router-segment-prefetch, next-router-state-tree, rsc | 2,094,758 | 2.03% | ~1,034 | 4 |
| accept-encoding, next-router-prefetch, next-router-state-tree, rsc | 720,701 | 0.70% | ~565 | 3 |
| origin | 614,755 | 0.60% | ~613 | — |
| next-router-prefetch, next-router-segment-prefetch, next-router-state-tree, rsc | 612,375 | 0.59% | ~356 | 4 |
| user-agent | 543,460 | 0.53% | ~530 | — |
| accept-encoding, x-country-code, x-ftr-abtest-group, x-ftr-kiosq-server-side-entitlements, x-ftr-kiosq-server-side-user-status, x-ftr-kiosq-user-status | 520,908 | 0.51% | ~44 | 5 |
| cookie | 480,902 | 0.47% | ~533 | — |
| accept-encoding, cookie, user-agent | 424,276 | 0.41% | ~163 | — |
| accept-encoding, cookie, origin | 333,814 | 0.32% | ~133 | — |
| * | 332,898 | 0.32% | ~267 | — |
| accept, accept-encoding, content-type | 330,320 | 0.32% | ~81 | — |
| accept-encoding, x-forwarded-proto | 277,215 | 0.27% | ~175 | 1 |
| accept-encoding, access-control-request-headers, access-control-request-method, origin | 269,910 | 0.26% | ~167 | — |
| accept-encoding, accept-language | 255,111 | 0.25% | ~97 | — |
| accept, accept-encoding | 249,257 | 0.24% | ~669 | — |
| accept-encoding, accept-language, cookie | 223,998 | 0.22% | ~118 | — |
| accept-encoding, origin, x-nfl-geo | 206,148 | 0.20% | ~30 | 1 |
| device-memory, sec-ch-dpr, sec-ch-viewport-width | 185,052 | 0.18% | ~1 | 3 |
| accept-language, cookie | 144,955 | 0.14% | ~55 | — |
| accept-encoding, host | 140,657 | 0.14% | ~46 | — |
| accept-encoding, origin, user-agent | 139,948 | 0.14% | ~77 | — |
| … 1001 more recipes not shown … | ||||
Accept-Encoding appears in the large majority of Vary headers and flattens the ranking. Here it is removed from each recipe and the remainders re-merged (site counts union exactly), so the meaningful axes surface.
| Recipe | Responses | % of Vary | Sites | Synthetic tokens |
|---|---|---|---|---|
| (accept-encoding only) | 74,080,755 | 71.96% | ~37,460 | — |
| cookie | 6,103,515 | 5.93% | ~3,515 | — |
| user-agent | 6,008,957 | 5.84% | ~2,834 | — |
| origin | 2,873,756 | 2.79% | ~1,793 | — |
| next-router-prefetch, next-router-segment-prefetch, next-router-state-tree, rsc | 2,707,133 | 2.63% | ~1,360 | 4 |
| next-router-prefetch, next-router-state-tree, rsc | 844,311 | 0.82% | ~715 | 3 |
| x-country-code, x-ftr-abtest-group, x-ftr-kiosq-server-side-entitlements, x-ftr-kiosq-server-side-user-status, x-ftr-kiosq-user-status | 520,908 | 0.51% | ~44 | 5 |
| cookie, user-agent | 472,472 | 0.46% | ~179 | — |
| * | 418,063 | 0.41% | ~334 | — |
| cookie, origin | 413,249 | 0.40% | ~184 | — |
| access-control-request-headers, access-control-request-method, origin | 406,506 | 0.39% | ~243 | — |
| accept-language, cookie | 368,953 | 0.36% | ~170 | — |
| accept | 363,586 | 0.35% | ~732 | — |
| accept, content-type | 336,970 | 0.33% | ~92 | — |
| x-forwarded-proto | 288,244 | 0.28% | ~195 | 1 |
| accept-language | 266,068 | 0.26% | ~102 | — |
| origin, x-nfl-geo | 206,179 | 0.20% | ~30 | 1 |
| device-memory, sec-ch-dpr, sec-ch-viewport-width | 185,052 | 0.18% | ~1 | 3 |
| origin, user-agent | 183,683 | 0.18% | ~81 | — |
| host | 148,429 | 0.14% | ~68 | — |
| x-requested-with | 126,616 | 0.12% | ~65 | 1 |
| accept, sec-fetch-site, turbo-frame, turbo-visit, x-pjax, x-pjax-container, x-requested-with | 123,804 | 0.12% | ~1 | 6 |
| https | 122,130 | 0.12% | ~112 | 1 |
| next-router-prefetch, next-router-state-tree, next-url, rsc | 117,850 | 0.11% | ~107 | 4 |
| x-ua-device | 114,159 | 0.11% | ~35 | 1 |
| … 859 more recipes not shown … | ||||
Prevalence of the cache-key / availability axes, as a share of responses carrying Vary.
| Field-name | Responses | % of Vary | Sites |
|---|---|---|---|
| accept-encoding | 98,824,092 | 95.99% | ~37,141 |
| cookie | 8,503,390 | 8.26% | ~4,560 |
| user-agent | 7,573,150 | 7.36% | ~2,878 |
| accept-language | 967,418 | 0.94% | ~450 |
| Field-name | Responses | % of Vary | Sites | Registered? |
|---|---|---|---|---|
| accept-encoding | 98,824,092 | 95.99% | ~37,141 | yes |
| cookie | 8,503,390 | 8.26% | ~4,560 | yes |
| user-agent | 7,573,150 | 7.36% | ~2,878 | yes |
| origin | 4,952,442 | 4.81% | ~2,498 | yes |
| rsc | 4,052,191 | 3.94% | ~2,239 | no |
| next-router-prefetch | 4,006,255 | 3.89% | ~2,219 | no |
| next-router-state-tree | 3,995,845 | 3.88% | ~2,206 | no |
| next-router-segment-prefetch | 2,882,150 | 2.80% | ~1,477 | no |
| accept | 1,112,366 | 1.08% | ~1,060 | yes |
| accept-language | 967,418 | 0.94% | ~450 | yes |
| content-type | 556,060 | 0.54% | ~149 | yes |
| x-country-code | 528,739 | 0.51% | ~61 | no |
| x-ftr-kiosq-user-status | 520,908 | 0.51% | ~44 | no |
| x-ftr-kiosq-server-side-user-status | 520,908 | 0.51% | ~44 | no |
| x-ftr-kiosq-server-side-entitlements | 520,908 | 0.51% | ~44 | no |
| x-ftr-abtest-group | 520,908 | 0.51% | ~44 | no |
| x-forwarded-proto | 504,313 | 0.49% | ~304 | no |
| access-control-request-headers | 438,720 | 0.43% | ~248 | yes |
| access-control-request-method | 438,590 | 0.43% | ~248 | yes |
| x-ua-device | 348,494 | 0.34% | ~51 | no |
| x-requested-with | 339,399 | 0.33% | ~104 | no |
| authorization | 300,710 | 0.29% | ~112 | yes |
| host | 270,019 | 0.26% | ~101 | yes |
| x-device | 269,837 | 0.26% | ~43 | no |
| x-nfl-geo | 206,511 | 0.20% | ~28 | no |
| … 764 more not shown … | ||||
Tokens httplint's field registry does not recognise (≈ not IANA-registered), approximating the synthetic cache-key population. A lower bound: some schemes are consumed at the edge and never appear in Vary, and the classification is approximate (a real request header httplint lacks a parser for also lands here).
| Field-name | Responses | % of Vary | Sites |
|---|---|---|---|
| rsc | 4,052,191 | 3.94% | ~2,239 |
| next-router-prefetch | 4,006,255 | 3.89% | ~2,219 |
| next-router-state-tree | 3,995,845 | 3.88% | ~2,206 |
| next-router-segment-prefetch | 2,882,150 | 2.80% | ~1,477 |
| x-country-code | 528,739 | 0.51% | ~61 |
| x-ftr-kiosq-user-status | 520,908 | 0.51% | ~44 |
| x-ftr-kiosq-server-side-user-status | 520,908 | 0.51% | ~44 |
| x-ftr-kiosq-server-side-entitlements | 520,908 | 0.51% | ~44 |
| x-ftr-abtest-group | 520,908 | 0.51% | ~44 |
| x-forwarded-proto | 504,313 | 0.49% | ~304 |
| x-ua-device | 348,494 | 0.34% | ~51 |
| x-requested-with | 339,399 | 0.33% | ~104 |
| x-device | 269,837 | 0.26% | ~43 |
| x-nfl-geo | 206,511 | 0.20% | ~28 |
| x-consumer-id | 206,462 | 0.20% | ~77 |
| sec-ch-viewport-width | 190,070 | 0.18% | ~10 |
| sec-fetch-site | 187,559 | 0.18% | ~94 |
| sec-ch-dpr | 185,052 | 0.18% | ~1 |
| device-memory | 185,052 | 0.18% | ~1 |
| x-vary-tcdn | 184,955 | 0.18% | ~21 |
| fastly-ssl | 182,153 | 0.18% | ~23 |
| next-url | 156,763 | 0.15% | ~112 |
| x-pjax | 131,408 | 0.13% | ~2 |
| x-pjax-container | 130,983 | 0.13% | ~1 |
| turbo-visit | 130,983 | 0.13% | ~1 |
| … 732 more not shown … | |||
Composition of Cache-Control across the 95,671,749 responses that carried one. A recipe is the normalised, deduped, sorted set of directives in a response's Cache-Control, with every directive value collapsed to =N — so max-age=0 and max-age=31536000 share one recipe (the actual numbers are a separate distribution). This shows the whole shape operators ship, where CC_CONFLICTING flags only the conflict. Responses is occurrence-weighted (one CDN origin can emit a recipe across millions of responses); Sites is a HyperLogLog estimate of distinct operators.
| Recipe | Responses | % of Cache-Control | Sites | Non-standard |
|---|---|---|---|---|
| max-age=N, public | 11,162,264 | 11.67% | ~6,571 | — |
| max-age=N | 9,887,726 | 10.34% | ~6,222 | — |
| must-revalidate, no-cache, no-store | 9,023,064 | 9.43% | ~6,224 | — |
| max-age=N, must-revalidate, no-cache, no-store, private | 6,237,941 | 6.52% | ~3,537 | — |
| private | 4,511,362 | 4.72% | ~3,395 | — |
| max-age=N, must-revalidate, private | 3,885,230 | 4.06% | ~1,575 | — |
| no-cache | 3,598,355 | 3.76% | ~2,745 | — |
| max-age=N, no-cache, no-store | 3,326,020 | 3.48% | ~1,408 | — |
| max-age=N, must-revalidate | 2,959,694 | 3.09% | ~2,948 | — |
| no-cache, no-store | 2,859,856 | 2.99% | ~1,857 | — |
| max-age=N, private | 2,754,864 | 2.88% | ~1,247 | — |
| no-cache, private | 2,546,648 | 2.66% | ~1,813 | — |
| max-age=N, must-revalidate, no-cache, no-store | 2,456,801 | 2.57% | ~2,110 | — |
| max-age=N, public, s-maxage=N | 2,327,755 | 2.43% | ~1,178 | — |
| max-age=N, must-revalidate, public | 1,964,142 | 2.05% | ~2,069 | — |
| must-revalidate, no-cache, no-store, post-check=N, pre-check=N | 1,720,931 | 1.80% | ~1,930 | — |
| no-store | 1,666,370 | 1.74% | ~894 | — |
| must-revalidate, no-cache | 1,348,322 | 1.41% | ~620 | — |
| must-revalidate, no-cache, no-store, private | 1,287,027 | 1.35% | ~625 | — |
| max-age=N, public, s-maxage=N, stale-if-error=N, stale-while-revalidate=N | 1,218,685 | 1.27% | ~297 | — |
| no-store, private | 981,213 | 1.03% | ~379 | — |
| max-age=N, no-cache | 954,009 | 1.00% | ~357 | — |
| max-age=N, public, stale-if-error=N, stale-while-revalidate=N | 887,240 | 0.93% | ~235 | — |
| max-age=N, s-maxage=N | 799,210 | 0.84% | ~902 | — |
| s-maxage=N | 743,169 | 0.78% | ~905 | — |
| … 1138 more recipes not shown … | ||||
Prevalence of each directive, regardless of value or combination, as a share of responses carrying Cache-Control.
| Directive | Responses | % of Cache-Control | Sites | Standard? |
|---|---|---|---|---|
| max-age | 59,506,235 | 62.20% | ~24,588 | yes |
| no-cache | 39,775,437 | 41.57% | ~20,652 | yes |
| must-revalidate | 36,271,952 | 37.91% | ~18,799 | yes |
| no-store | 32,425,774 | 33.89% | ~17,109 | yes |
| private | 25,951,332 | 27.13% | ~12,822 | yes |
| public | 22,989,446 | 24.03% | ~11,018 | yes |
| s-maxage | 10,358,681 | 10.83% | ~4,803 | yes |
| stale-while-revalidate | 6,556,969 | 6.85% | ~2,055 | yes |
| stale-if-error | 4,266,667 | 4.46% | ~1,168 | yes |
| pre-check | 2,528,324 | 2.64% | ~2,061 | yes |
| post-check | 2,526,676 | 2.64% | ~2,061 | yes |
| proxy-revalidate | 930,375 | 0.97% | ~695 | yes |
| no-transform | 829,232 | 0.87% | ~413 | yes |
| immutable | 155,042 | 0.16% | ~279 | yes |
| max-stale | 93,076 | 0.10% | ~41 | yes |
| s-max-age | 88,366 | 0.09% | ~33 | no |
| store | 55,904 | 0.06% | ~30 | no |
| stale-while-error | 47,196 | 0.05% | ~3 | no |
| maxage | 34,593 | 0.04% | ~25 | no |
| cache | 32,289 | 0.03% | ~12 | no |
| v-stale-while-revalidate | 31,795 | 0.03% | ~2 | no |
| v-maxage | 31,795 | 0.03% | ~2 | no |
| off | 31,606 | 0.03% | ~7 | no |
| public; max-age | 31,319 | 0.03% | ~11 | no |
| nocache | 24,210 | 0.03% | ~9 | no |
| min-age | 16,340 | 0.02% | ~1 | no |
| private no-store | 16,333 | 0.02% | ~4 | no |
| 300 | 15,761 | 0.02% | ~1 | no |
| min-fresh:2000000 | 14,583 | 0.02% | ~1 | no |
| vary | 13,669 | 0.01% | ~2 | no |
| … 577 more not shown … | ||||
Directives outside httplint's RFC 9111 registry — vendor knobs, edge-CDN extensions, and typos. Approximate: a registered directive httplint lacks a parser for would also land here.
| Directive | Responses | % of Cache-Control | Sites |
|---|---|---|---|
| s-max-age | 88,366 | 0.09% | ~33 |
| store | 55,904 | 0.06% | ~30 |
| stale-while-error | 47,196 | 0.05% | ~3 |
| maxage | 34,593 | 0.04% | ~25 |
| cache | 32,289 | 0.03% | ~12 |
| v-stale-while-revalidate | 31,795 | 0.03% | ~2 |
| v-maxage | 31,795 | 0.03% | ~2 |
| off | 31,606 | 0.03% | ~7 |
| public; max-age | 31,319 | 0.03% | ~11 |
| nocache | 24,210 | 0.03% | ~9 |
| min-age | 16,340 | 0.02% | ~1 |
| private no-store | 16,333 | 0.02% | ~4 |
| 300 | 15,761 | 0.02% | ~1 |
| min-fresh:2000000 | 14,583 | 0.02% | ~1 |
| vary | 13,669 | 0.01% | ~2 |
| max-age 604800 | 8,238 | 0.01% | ~1 |
| x-overridden-by-server-settings | 5,768 | 0.01% | ~3 |
| no-cache max-age | 4,763 | 0.00% | ~1 |
| public%2c+max-age%3d3600 | 3,786 | 0.00% | ~1 |
| m-maxage | 3,671 | 0.00% | ~1 |
| m-cache-type | 3,591 | 0.00% | ~1 |
| no-cache; no-store; must-revalidate; max-age | 3,185 | 0.00% | ~1 |
| cache-control: public | 3,160 | 0.00% | ~5 |
| 60 | 3,082 | 0.00% | ~2 |
| no-cache;no-store;must-revalidate | 3,058 | 0.00% | ~1 |
| crsexpiresafter | 2,946 | 0.00% | ~1 |
| no-transform always | 2,483 | 0.00% | ~1 |
| max-age 60 | 2,379 | 0.00% | ~1 |
| false-cache | 2,148 | 0.00% | ~1 |
| must-ridate | 2,043 | 0.00% | ~1 |
| … 561 more not shown … | |||
Per-occurrence distributions of numeric and temporal header values across all analysed responses that carried the field. Lifetimes use a shared log-scaled bucket set, so the histograms are comparable. The "negative" bucket holds anomalies (a value that parsed negative, or an Expires that predates Date — stale on arrival); "0" is a distinct deliberate "do not reuse" signal.
Total occurrences: 59,819,132.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 14,387 | 0.0% | |
| 0 | 25,750,237 | 43.0% | |
| <1 min | 3,008,730 | 5.0% | |
| 1-10 min | 12,977,402 | 21.7% | |
| 10-60 min | 5,743,992 | 9.6% | |
| 1-24 hours | 6,319,429 | 10.6% | |
| 1-7 days | 3,070,242 | 5.1% | |
| 7-30 days | 984,257 | 1.6% | |
| 30-365 days | 1,215,685 | 2.0% | |
| 1-10 years | 720,422 | 1.2% | |
| >10 years | 14,349 | 0.0% |
Total occurrences: 10,380,653.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 80 | 0.0% | |
| 0 | 791,871 | 7.6% | |
| <1 min | 704,261 | 6.8% | |
| 1-10 min | 2,543,715 | 24.5% | |
| 10-60 min | 1,715,458 | 16.5% | |
| 1-24 hours | 1,859,584 | 17.9% | |
| 1-7 days | 872,310 | 8.4% | |
| 7-30 days | 562,574 | 5.4% | |
| 30-365 days | 734,859 | 7.1% | |
| 1-10 years | 578,414 | 5.6% | |
| >10 years | 17,527 | 0.2% |
Total occurrences: 17,936,255.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 0 | 0.0% | |
| 0 | 11,384,429 | 63.5% | |
| <1 min | 578,406 | 3.2% | |
| 1-10 min | 359,194 | 2.0% | |
| 10-60 min | 511,613 | 2.9% | |
| 1-24 hours | 2,772,349 | 15.5% | |
| 1-7 days | 1,831,884 | 10.2% | |
| 7-30 days | 445,025 | 2.5% | |
| 30-365 days | 53,001 | 0.3% | |
| 1-10 years | 354 | 0.0% | |
| >10 years | 0 | 0.0% |
Total occurrences: 69,367,959.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 3,524 | 0.0% | |
| 0 | 1,083,198 | 1.6% | |
| <1 min | 84,232 | 0.1% | |
| 1-10 min | 1,908,613 | 2.8% | |
| 10-60 min | 776,992 | 1.1% | |
| 1-24 hours | 473,531 | 0.7% | |
| 1-7 days | 2,047,910 | 3.0% | |
| 7-30 days | 372,508 | 0.5% | |
| 30-365 days | 12,808,666 | 18.5% | |
| 1-10 years | 49,651,119 | 71.6% | |
| >10 years | 157,666 | 0.2% |
Total occurrences: 154,354,389.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 8,607,822 | 5.6% | |
| 0 | 6,550,114 | 4.2% | |
| <1 min | 554,122 | 0.4% | |
| 1-10 min | 1,282,426 | 0.8% | |
| 10-60 min | 15,708,579 | 10.2% | |
| 1-24 hours | 21,732,811 | 14.1% | |
| 1-7 days | 11,699,569 | 7.6% | |
| 7-30 days | 11,335,544 | 7.3% | |
| 30-365 days | 29,211,561 | 18.9% | |
| 1-10 years | 36,256,202 | 23.5% | |
| >10 years | 11,415,639 | 7.4% |
Total occurrences: 54,039,743.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 4,881,784 | 9.0% | |
| 0 | 15,051,258 | 27.9% | |
| <1 min | 3,054,769 | 5.7% | |
| 1-10 min | 13,044,899 | 24.1% | |
| 10-60 min | 5,765,382 | 10.7% | |
| 1-24 hours | 6,294,887 | 11.6% | |
| 1-7 days | 3,043,655 | 5.6% | |
| 7-30 days | 957,826 | 1.8% | |
| 30-365 days | 1,222,049 | 2.3% | |
| 1-10 years | 708,607 | 1.3% | |
| >10 years | 14,627 | 0.0% |
Total occurrences: 39,092,913.
| Value | Occurrences | % | |
|---|---|---|---|
| negative | 19,633,825 | 50.2% | |
| 0 | 7,214,354 | 18.5% | |
| <1 min | 874,295 | 2.2% | |
| 1-10 min | 4,835,350 | 12.4% | |
| 10-60 min | 1,778,801 | 4.6% | |
| 1-24 hours | 2,320,175 | 5.9% | |
| 1-7 days | 1,291,539 | 3.3% | |
| 7-30 days | 370,898 | 0.9% | |
| 30-365 days | 584,923 | 1.5% | |
| 1-10 years | 172,342 | 0.4% | |
| >10 years | 16,411 | 0.0% |
Which security / policy response headers travel together. A bundle is the set of those headers present on a response. The alphabet is scoped to a fixed, curated set of security/policy headers (configured in cooccur_alphabet.toml) so the bundle space stays bounded; (none) means none were present. Responses is occurrence-weighted (one CDN origin can emit a bundle across millions of responses); Sites is a HyperLogLog estimate of distinct operators. Shares are of all 122,905,867 analysed responses.
20.09% of responses (24,688,674) carried no security header from the tracked set.
| Bundle | Responses | % of responses | Sites |
|---|---|---|---|
| (none) | 24,688,674 | 20.09% | ~15,835 |
| strict-transport-security | 9,812,078 | 7.98% | ~5,786 |
| strict-transport-security, x-content-type-options, x-frame-options, x-xss-protection | 4,742,146 | 3.86% | ~1,992 |
| nel, report-to | 4,715,488 | 3.84% | ~4,219 |
| x-frame-options | 4,042,631 | 3.29% | ~2,162 |
| content-security-policy, strict-transport-security, x-content-type-options, x-frame-options, x-xss-protection | 3,780,009 | 3.08% | ~1,501 |
| content-security-policy, referrer-policy, strict-transport-security, x-content-type-options, x-frame-options, x-xss-protection | 3,306,030 | 2.69% | ~1,582 |
| strict-transport-security, x-frame-options | 3,290,199 | 2.68% | ~1,267 |
| strict-transport-security, x-content-type-options, x-frame-options | 3,216,720 | 2.62% | ~1,432 |
| referrer-policy, strict-transport-security, x-content-type-options, x-frame-options, x-xss-protection | 2,660,498 | 2.16% | ~1,446 |
| content-security-policy | 2,539,384 | 2.07% | ~888 |
| content-security-policy, strict-transport-security | 2,073,691 | 1.69% | ~856 |
| content-security-policy, strict-transport-security, x-content-type-options, x-frame-options | 1,913,810 | 1.56% | ~726 |
| content-security-policy, strict-transport-security, x-frame-options | 1,838,410 | 1.50% | ~880 |
| x-content-type-options, x-frame-options, x-xss-protection | 1,688,310 | 1.37% | ~1,028 |
| strict-transport-security, x-content-type-options | 1,563,874 | 1.27% | ~1,158 |
| content-security-policy, strict-transport-security, x-content-type-options | 1,486,813 | 1.21% | ~634 |
| x-content-type-options, x-frame-options | 1,455,156 | 1.18% | ~1,347 |
| strict-transport-security, x-content-type-options, x-xss-protection | 1,424,989 | 1.16% | ~626 |
| content-security-policy, permissions-policy, referrer-policy, strict-transport-security, x-content-type-options, x-frame-options, x-xss-protection | 1,210,784 | 0.99% | ~923 |
| content-security-policy, x-frame-options | 1,185,561 | 0.96% | ~496 |
| nel, report-to, strict-transport-security | 1,057,601 | 0.86% | ~546 |
| referrer-policy, strict-transport-security, x-content-type-options, x-frame-options, x-permitted-cross-domain-policies, x-xss-protection | 996,099 | 0.81% | ~359 |
| content-security-policy, referrer-policy, strict-transport-security, x-content-type-options, x-frame-options | 917,338 | 0.75% | ~496 |
| content-security-policy, strict-transport-security, x-content-type-options, x-xss-protection | 913,857 | 0.74% | ~384 |
| … 1339 more bundles not shown … | |||
For the most common co-occurring pairs: P(A|B) is the share of responses carrying B that also carry A. Lift > 1 means the two appear together more than independent prevalence predicts — the bundling signal.
| Header A | Header B | Co-occurrences | P(A|B) | P(B|A) | Lift |
|---|---|---|---|---|---|
| strict-transport-security | x-content-type-options | 47,031,347 | 81.3% | 67.6% | 1.4× |
| x-content-type-options | x-frame-options | 43,264,076 | 75.0% | 74.8% | 1.6× |
| strict-transport-security | x-frame-options | 43,248,426 | 74.9% | 62.1% | 1.3× |
| x-content-type-options | x-xss-protection | 36,959,641 | 91.8% | 63.9% | 2.0× |
| strict-transport-security | x-xss-protection | 32,449,509 | 80.6% | 46.6% | 1.4× |
| x-frame-options | x-xss-protection | 31,216,059 | 77.6% | 54.1% | 1.7× |
| content-security-policy | strict-transport-security | 29,272,395 | 42.1% | 78.6% | 1.4× |
| content-security-policy | x-content-type-options | 26,152,429 | 45.2% | 70.2% | 1.5× |
| referrer-policy | x-content-type-options | 25,302,069 | 43.8% | 89.3% | 1.9× |
| content-security-policy | x-frame-options | 23,960,024 | 41.5% | 64.3% | 1.4× |
| referrer-policy | strict-transport-security | 23,737,436 | 34.1% | 83.8% | 1.5× |
| referrer-policy | x-frame-options | 21,537,548 | 37.3% | 76.0% | 1.6× |
| referrer-policy | x-xss-protection | 18,886,973 | 46.9% | 66.7% | 2.0× |
| content-security-policy | x-xss-protection | 18,818,429 | 46.8% | 50.5% | 1.5× |
| content-security-policy | referrer-policy | 14,416,206 | 50.9% | 38.7% | 1.7× |
| nel | report-to | 13,712,592 | 92.2% | 99.6% | 8.2× |
| permissions-policy | x-content-type-options | 8,901,824 | 15.4% | 86.0% | 1.8× |
| permissions-policy | strict-transport-security | 8,836,999 | 12.7% | 85.3% | 1.5× |
| permissions-policy | x-frame-options | 7,483,810 | 13.0% | 72.3% | 1.5× |
| permissions-policy | referrer-policy | 7,047,325 | 24.9% | 68.1% | 3.0× |
| x-content-type-options | x-permitted-cross-domain-policies | 7,036,920 | 97.8% | 12.2% | 2.1× |
| report-to | strict-transport-security | 6,909,925 | 9.9% | 46.4% | 0.8× |
| report-to | x-content-type-options | 6,763,050 | 11.7% | 45.5% | 1.0× |
| x-permitted-cross-domain-policies | x-xss-protection | 6,441,795 | 16.0% | 89.5% | 2.7× |
| content-security-policy | permissions-policy | 6,368,114 | 61.5% | 17.1% | 2.0× |
| Header | Responses | % of responses | Sites |
|---|---|---|---|
| strict-transport-security | 69,604,896 | 56.63% | ~25,470 |
| x-content-type-options | 57,813,603 | 47.04% | ~20,883 |
| x-frame-options | 57,719,354 | 46.96% | ~21,610 |
| x-xss-protection | 40,251,037 | 32.75% | ~14,168 |
| content-security-policy | 37,256,807 | 30.31% | ~15,178 |
| referrer-policy | 28,322,526 | 23.04% | ~11,669 |
| report-to | 14,876,493 | 12.10% | ~10,066 |
| nel | 13,771,426 | 11.20% | ~9,532 |
| permissions-policy | 10,355,982 | 8.43% | ~4,443 |
| x-permitted-cross-domain-policies | 7,198,491 | 5.86% | ~2,999 |
| cross-origin-opener-policy | 4,379,265 | 3.56% | ~1,797 |
| content-security-policy-report-only | 3,333,330 | 2.71% | ~1,422 |
| reporting-endpoints | 2,970,219 | 2.42% | ~858 |
| cross-origin-resource-policy | 2,242,274 | 1.82% | ~1,094 |
| origin-agent-cluster | 1,290,004 | 1.05% | ~403 |
| cross-origin-embedder-policy | 957,329 | 0.78% | ~488 |
Each fingerprint layer's modal bundle — the single most common security-header set among the responses attributed to it — and that bundle's share of the layer's fingerprinted responses. This is where defaultability shows: a high share means the platform ships that set by default. Layers overlap (a response can match several).
| Layer | Role | Responses | Default bundle | Share |
|---|---|---|---|---|
| cloudflare | cdn | 30,643,299 | nel, report-to | 15.4% |
| nginx | server | 26,457,284 | (none) | 27.6% |
| cloudfront | cdn | 16,850,118 | (none) | 21.8% |
| apache | server | 13,203,682 | (none) | 35.0% |
| akamai | cdn | 12,790,450 | content-security-policy, strict-transport-security, x-content-type-options, x-frame-options, x-xss-protection | 10.2% |
| fastly | cdn | 9,918,246 | strict-transport-security | 11.1% |
| nextjs | framework | 8,282,901 | (none) | 24.1% |
| envoy | mesh | 4,811,999 | (none) | 10.5% |
| vercel | platform | 1,896,213 | strict-transport-security | 37.6% |
| azure-front-door | cdn | 1,427,985 | strict-transport-security | 16.6% |
| nuxt | framework | 1,024,818 | (none) | 47.5% |
Distribution of the maximum CSP header byte size each site served, across all responses analyzed. A site appears in exactly one bucket -- the largest CSP it ever returned, regardless of how many WAT files it appeared in. Total sites with header data: 48,896.
| CSP size | Sites | % of sites | |
|---|---|---|---|
| No CSP header | 33,788 | 69.1% | |
| 1-99 B | 7,608 | 15.6% | |
| 100-499 B | 3,135 | 6.4% | |
| 500-999 B | 1,090 | 2.2% | |
| 1000-1999 B | 1,090 | 2.2% | |
| 2000-4999 B | 1,505 | 3.1% | |
| 5000-9999 B | 524 | 1.1% | |
| 10000+ B | 156 | 0.3% |
For a curated set of deprecated/replacement header pairs, how far the corpus has moved from the legacy header to its modern equivalent. Each response is binned per pair: both sides present (a site mid-migration, paying the dual-emit cost), modern only, legacy only, or neither. Modern share is modern / (modern + legacy) over the legacy+modern presence signal — a both response counts on each side, and responses carrying neither are excluded so they can't drown the signal. Detection reads inside CSP and Cache-Control where the modern side is a directive, not a header. Shares are of all 122,905,867 analysed responses.
| Pair (legacy → modern) | Both | Modern only | Legacy only | Modern share | Sites both |
|---|---|---|---|---|---|
| Expires → Cache-Control: max-age | 25,451,914 (20.71%) | 34,054,321 | 19,389,979 | 57.0% | ~12,482 |
| X-Frame-Options → CSP frame-ancestors | 16,601,858 (13.51%) | 8,794,928 | 41,117,496 | 30.6% | ~7,682 |
| Pragma: no-cache → Cache-Control: no-cache | 22,265,740 (18.12%) | 17,509,697 | 3,276,585 | 60.9% | ~12,693 |
| X-XSS-Protection → (no replacement) | 0 (0.00%) | 0 | 40,251,037 | n/a (no replacement) | — |
| Report-To → Reporting-Endpoints | 1,358,229 (1.11%) | 1,611,990 | 13,518,264 | 16.6% | ~358 |
| Feature-Policy → Permissions-Policy | 457,143 (0.37%) | 9,898,839 | 1,001,890 | 87.7% | ~259 |
Per-site view (the meaningful unit for adoption): distinct operators emitting each side, with the modern share computed over sites.
| Pair (legacy → modern) | Legacy sites | Modern sites | Modern share (sites) |
|---|---|---|---|
| Expires → Cache-Control: max-age | ~21,291 | ~24,588 | 53.6% |
| X-Frame-Options → CSP frame-ancestors | ~21,610 | ~9,730 | 31.0% |
| Pragma: no-cache → Cache-Control: no-cache | ~13,866 | ~20,652 | 59.8% |
| X-XSS-Protection → (no replacement) | ~14,168 | — | n/a (no replacement) |
| Report-To → Reporting-Endpoints | ~10,066 | ~858 | 7.9% |
| Feature-Policy → Permissions-Policy | ~675 | ~4,443 | 86.8% |