Algorithm v1 · historical
How EcoMark scores a website.
- EnterAdd your website address.
- CrawlEco checks your site.
- AnalyseMeasure the key signals.
- GradeCalculate your EcoMark using our algorithm.
- ImproveGet simple steps how to improve.
Scoring
Five areas. One grade.
Grades
A simple final band.
80–89
70–79
60–69
50–59
0–49
Algorithm v1
The rules used for this version.
This is the published evidence scope, criterion scale, scoring formula and metric thresholds used by EcoMark v1.
Evidence sample
On
Up to 3
Up to 24
Criterion scale
Scoring formula
| Stage | Published rule |
|---|---|
| Criterion points | criterion_points = max_points × level ÷ 4 |
| Category score | category_score = sum(criterion_points) |
| Overall score | overall_score = round(sum(category_score × category_weight)) |
| Ranking | competition ranking: equal scores share a rank and the next rank skips accordingly (1, 1, 3) |
| Comparison | rankings compare assessments produced by the same EcoMark version only |
All criteria
The 25 scoring rules.
Thresholds are applied from level 4 down to level 1. The first matching threshold wins; otherwise the criterion receives level 0.
25% of the final score
Efficiency
Resource use, page weight and avoidable computation.
| Criterion | Metric | 4 · Strong | 3 · Good | 2 · Mixed | 1 · Poor | 0 · Fail |
|---|---|---|---|---|---|---|
| PayloadMeasured HTML and asset payload is proportionate and optimised. | average_page_kbLower is better | ≤ 500 KB/page | ≤ 1000 KB/page | ≤ 2000 KB/page | ≤ 4000 KB/page | > 4000 KB/page |
| JavaScriptReferenced JavaScript weight is kept proportionate. | average_javascript_kbLower is better | ≤ 100 KB/page | ≤ 250 KB/page | ≤ 500 KB/page | ≤ 1000 KB/page | > 1000 KB/page |
| RequestsPages avoid excessive resource references and third-party connections. | average_resource_referencesLower is better | ≤ 20 resources/page | ≤ 40 resources/page | ≤ 70 resources/page | ≤ 100 resources/page | > 100 resources/page |
| MediaImages and video avoid obvious loading and autoplay waste. | media_issue_countLower is better | ≤ 0 issues | ≤ 1 issues | ≤ 3 issues | ≤ 6 issues | > 6 issues |
| Caching and compressionSampled static assets expose effective cache policy. | cacheable_asset_percentHigher is better | ≥ 80% | ≥ 60% | ≥ 40% | ≥ 20% | < 20% |
25% of the final score
Privacy
Tracking, cookies, profiling, analytics and consent.
| Criterion | Metric | 4 · Strong | 3 · Good | 2 · Mixed | 1 · Poor | 0 · Fail |
|---|---|---|---|---|---|---|
| Behavioural trackingKnown advertising pixels and cross-site trackers are absent or minimised. | tracker_countLower is better | ≤ 0 known trackers | ≤ 1 known trackers | ≤ 2 known trackers | ≤ 4 known trackers | > 4 known trackers |
| Analytics minimisationAnalytics technology is absent or privacy-preserving and proportionate. | analytics_riskLower is better | ≤ 0 risk level | ≤ 1 risk level | ≤ 2 risk level | ≤ 3 risk level | > 3 risk level |
| Cookies and consentNon-essential response cookies are avoided before interaction. | nonessential_cookie_countLower is better | ≤ 0 response cookies | ≤ 1 response cookies | ≤ 3 response cookies | ≤ 6 response cookies | > 6 response cookies |
| Third-party disclosureResource loading does not unnecessarily disclose visits to third parties. | third_party_percentLower is better | ≤ 0% | ≤ 10% | ≤ 25% | ≤ 50% | > 50% |
| Invasive techniquesKnown session replay and similarly invasive tools are absent. | invasive_tracker_countLower is better | ≤ 0 known invasive tools | ≤ 0 known invasive tools | ≤ 0 known invasive tools | ≤ 1 known invasive tools | > 1 known invasive tools |
20% of the final score
Sovereignty
Ownership, geography, portability and dependency.
| Criterion | Metric | 4 · Strong | 3 · Good | 2 · Mixed | 1 · Poor | 0 · Fail |
|---|---|---|---|---|---|---|
| Provider jurisdictionObservable dependencies minimise reliance on US-headquartered platform ecosystems. | us_provider_countLower is better | ≤ 0 provider ecosystems | ≤ 1 provider ecosystems | ≤ 3 provider ecosystems | ≤ 6 provider ecosystems | > 6 provider ecosystems |
| Third-party geographyKnown non-EU third-party data exposure is minimised. | known_non_eu_data_percentLower is better | ≤ 0% | ≤ 10% | ≤ 30% | ≤ 60% | > 60% |
| Portable deliveryPages minimise proprietary embeds and platform-specific content dependencies. | proprietary_embed_countLower is better | ≤ 0 embeds | ≤ 1 embeds | ≤ 3 embeds | ≤ 6 embeds | > 6 embeds |
| Supplier concentrationThird-party resource loading is not dominated by one provider ecosystem. | top_provider_share_percentLower is better | ≤ 0% | ≤ 40% | ≤ 65% | ≤ 85% | > 85% |
| First-party deliveryAssets are delivered directly from the site where practical. | first_party_asset_percentHigher is better | ≥ 95% | ≥ 80% | ≥ 60% | ≥ 40% | < 40% |
15% of the final score
Accessibility
Inclusive, semantic and resilient implementation.
| Criterion | Metric | 4 · Strong | 3 · Good | 2 · Mixed | 1 · Poor | 0 · Fail |
|---|---|---|---|---|---|---|
| SemanticsHTML exposes basic language, heading and landmark structure. | semantic_issue_countLower is better | ≤ 0 issues | ≤ 1 issues | ≤ 2 issues | ≤ 4 issues | > 4 issues |
| Keyboard accessMarkup avoids obvious keyboard-hostile interaction patterns. | keyboard_issue_countLower is better | ≤ 0 issues | ≤ 1 issues | ≤ 3 issues | ≤ 6 issues | > 6 issues |
| Forms and controlsForm controls expose labels or accessible names. | unlabelled_control_percentLower is better | ≤ 0% | ≤ 5% | ≤ 15% | ≤ 30% | > 30% |
| Visual accessibilityViewport and media markup avoid obvious visual accessibility barriers. | visual_issue_countLower is better | ≤ 0 issues | ≤ 1 issues | ≤ 2 issues | ≤ 4 issues | > 4 issues |
| ResilienceMeaningful text remains present without relying entirely on client rendering. | raw_text_ratio_percentHigher is better | ≥ 80% | ≥ 60% | ≥ 40% | ≥ 20% | < 20% |
15% of the final score
Responsibility
Transparency, security basics and responsible choices.
| Criterion | Metric | 4 · Strong | 3 · Good | 2 · Mixed | 1 · Poor | 0 · Fail |
|---|---|---|---|---|---|---|
| TransparencyPrivacy, cookies, accessibility and contact information are discoverable. | missing_transparency_linksLower is better | ≤ 0 missing links | ≤ 1 missing links | ≤ 2 missing links | ≤ 3 missing links | > 3 missing links |
| Security basicsThe main response exposes sensible browser security headers. | security_header_countHigher is better | ≥ 5 headers | ≥ 4 headers | ≥ 3 headers | ≥ 2 headers | < 2 headers |
| Consent designTracking and consent markup avoids obvious one-sided choice patterns. | consent_issue_scoreLower is better | ≤ 0 risk level | ≤ 1 risk level | ≤ 2 risk level | ≤ 3 risk level | > 3 risk level |
| Supplier disclosureDetected material providers are reflected in discoverable privacy information. | undisclosed_provider_percentLower is better | ≤ 0% | ≤ 25% | ≤ 50% | ≤ 75% | > 75% |
| Responsible defaultsThe observable site defaults avoid trackers, autoplay and weak transparency/security. | responsible_default_issue_countLower is better | ≤ 0 issues | ≤ 1 issues | ≤ 2 issues | ≤ 4 issues | > 4 issues |
Version history
First published algorithm version.
There is no earlier EcoMark algorithm to compare with v1.
Versioning
Scoring changes get a new version.
Historical results keep the algorithm that produced them.