EcoMark algorithm v1 · current

The analyser is public.

EcoMark v1 uses observable website measurements, not AI judgement. Every stored result records the exact algorithm version and hash that produced it.

Analysis flow

URL → crawl → analyse → grade.

  1. Browser-render the homepage where Browser Run is available.
  2. Crawl up to 3 public same-site pages and respect robots.txt.
  3. Sample up to 24 referenced assets.
  4. Turn observable metrics into 0–4 criterion levels using the versioned thresholds below.
  5. criterion_points = max_points × level ÷ 4.
  6. overall_score = round(sum(category_score × category_weight)).
  7. competition ranking: equal scores share a rank and the next rank skips accordingly (1, 1, 3).

EcoMark v1 scores observable website behaviour. It does not claim to rate an organisation as ethical or sustainable.

0/4Fails materially or creates clear harm in this criterion.
1/4Poor. Significant problems or unnecessary impact remain.
2/4Mixed. Some good practice is present, but material gaps remain.
3/4Good. The criterion is mostly met with only limited gaps.
4/4Strong. The criterion is deliberately and consistently met.

Published rules

Twenty-five deterministic criteria.

25%

Efficiency

Resource use, page weight and avoidable computation.

  • Payload
    Measured HTML and asset payload is proportionate and optimised.
    Metric: average_page_kb · lower is better · bands 500 / 1000 / 2000 / 4000 KB/page
  • JavaScript
    Referenced JavaScript weight is kept proportionate.
    Metric: average_javascript_kb · lower is better · bands 100 / 250 / 500 / 1000 KB/page
  • Requests
    Pages avoid excessive resource references and third-party connections.
    Metric: average_resource_references · lower is better · bands 20 / 40 / 70 / 100 resources/page
  • Media
    Images and video avoid obvious loading and autoplay waste.
    Metric: media_issue_count · lower is better · bands 0 / 1 / 3 / 6 issues
  • Caching and compression
    Sampled static assets expose effective cache policy.
    Metric: cacheable_asset_percent · higher is better · bands 80 / 60 / 40 / 20 %
25%

Privacy

Tracking, cookies, profiling, analytics and consent.

  • Behavioural tracking
    Known advertising pixels and cross-site trackers are absent or minimised.
    Metric: tracker_count · lower is better · bands 0 / 1 / 2 / 4 known trackers
  • Analytics minimisation
    Analytics technology is absent or privacy-preserving and proportionate.
    Metric: analytics_risk · lower is better · bands 0 / 1 / 2 / 3 risk level
  • Cookies and consent
    Non-essential response cookies are avoided before interaction.
    Metric: nonessential_cookie_count · lower is better · bands 0 / 1 / 3 / 6 response cookies
  • Third-party disclosure
    Resource loading does not unnecessarily disclose visits to third parties.
    Metric: third_party_percent · lower is better · bands 0 / 10 / 25 / 50 %
  • Invasive techniques
    Known session replay and similarly invasive tools are absent.
    Metric: invasive_tracker_count · lower is better · bands 0 / 0 / 0 / 1 known invasive tools
20%

Sovereignty

Ownership, geography, portability and dependency.

  • Provider jurisdiction
    Observable dependencies minimise reliance on US-headquartered platform ecosystems.
    Metric: us_provider_count · lower is better · bands 0 / 1 / 3 / 6 provider ecosystems
  • Third-party geography
    Known non-EU third-party data exposure is minimised.
    Metric: known_non_eu_data_percent · lower is better · bands 0 / 10 / 30 / 60 %
  • Portable delivery
    Pages minimise proprietary embeds and platform-specific content dependencies.
    Metric: proprietary_embed_count · lower is better · bands 0 / 1 / 3 / 6 embeds
  • Supplier concentration
    Third-party resource loading is not dominated by one provider ecosystem.
    Metric: top_provider_share_percent · lower is better · bands 0 / 40 / 65 / 85 %
  • First-party delivery
    Assets are delivered directly from the site where practical.
    Metric: first_party_asset_percent · higher is better · bands 95 / 80 / 60 / 40 %
15%

Accessibility

Inclusive, semantic and resilient implementation.

  • Semantics
    HTML exposes basic language, heading and landmark structure.
    Metric: semantic_issue_count · lower is better · bands 0 / 1 / 2 / 4 issues
  • Keyboard access
    Markup avoids obvious keyboard-hostile interaction patterns.
    Metric: keyboard_issue_count · lower is better · bands 0 / 1 / 3 / 6 issues
  • Forms and controls
    Form controls expose labels or accessible names.
    Metric: unlabelled_control_percent · lower is better · bands 0 / 5 / 15 / 30 %
  • Visual accessibility
    Viewport and media markup avoid obvious visual accessibility barriers.
    Metric: visual_issue_count · lower is better · bands 0 / 1 / 2 / 4 issues
  • Resilience
    Meaningful text remains present without relying entirely on client rendering.
    Metric: raw_text_ratio_percent · higher is better · bands 80 / 60 / 40 / 20 %
15%

Responsibility

Transparency, security basics and responsible choices.

  • Transparency
    Privacy, cookies, accessibility and contact information are discoverable.
    Metric: missing_transparency_links · lower is better · bands 0 / 1 / 2 / 3 missing links
  • Security basics
    The main response exposes sensible browser security headers.
    Metric: security_header_count · higher is better · bands 5 / 4 / 3 / 2 headers
  • Consent design
    Tracking and consent markup avoids obvious one-sided choice patterns.
    Metric: consent_issue_score · lower is better · bands 0 / 1 / 2 / 3 risk level
  • Supplier disclosure
    Detected material providers are reflected in discoverable privacy information.
    Metric: undisclosed_provider_percent · lower is better · bands 0 / 25 / 50 / 75 %
  • Responsible defaults
    The observable site defaults avoid trackers, autoplay and weak transparency/security.
    Metric: responsible_default_issue_count · lower is better · bands 0 / 1 / 2 / 4 issues

Grades

A transparent final band.

A 90–100 · B 80–89 · C 70–79 · D 60–69 · E 50–59 · F 0–49

Versioning rule

Changed scoring means a new version.

If a measurement, threshold, category weight or grade rule changes in a way that can change a score, EcoMark increments to the next whole-number version.