Model Comparison 80% sign agreement
Model Editorial Structural Class Conf SETL Theme
@cf/meta/llama-3.3-70b-instruct-fp8-fast lite 0.00 ND Neutral 0.80 0.00 Web security
@cf/meta/llama-4-scout-17b-16e-instruct lite +0.40 ND Moderate positive 0.90 0.00 Privacy Security
deepseek/deepseek-v3.2-20251201 +0.42 +0.17 Moderate positive 0.13 0.37 Security & Privacy
claude-haiku-4-5-20251001 +0.30 +0.24 Moderate positive 0.18 0.09 Digital Security & Knowledge
meta-llama/llama-3.3-70b-instruct:free ND ND
Section @cf/meta/llama-3.3-70b-instruct-fp8-fast lite @cf/meta/llama-4-scout-17b-16e-instruct lite deepseek/deepseek-v3.2-20251201 claude-haiku-4-5-20251001 meta-llama/llama-3.3-70b-instruct:free
Preamble ND ND 0.20 0.31 ND
Article 1 ND ND ND 0.26 ND
Article 2 ND ND ND 0.37 ND
Article 3 ND ND 0.30 ND ND
Article 4 ND ND ND ND ND
Article 5 ND ND ND ND ND
Article 6 ND ND ND ND ND
Article 7 ND ND ND ND ND
Article 8 ND ND ND ND ND
Article 9 ND ND ND ND ND
Article 10 ND ND ND ND ND
Article 11 ND ND ND ND ND
Article 12 ND ND 0.23 -0.24 ND
Article 13 ND ND ND ND ND
Article 14 ND ND ND ND ND
Article 15 ND ND ND ND ND
Article 16 ND ND ND ND ND
Article 17 ND ND ND ND ND
Article 18 ND ND ND ND ND
Article 19 ND ND 0.78 0.78 ND
Article 20 ND ND ND ND ND
Article 21 ND ND ND ND ND
Article 22 ND ND ND ND ND
Article 23 ND ND ND ND ND
Article 24 ND ND ND ND ND
Article 25 ND ND ND 0.35 ND
Article 26 ND ND 0.51 0.72 ND
Article 27 ND ND 0.66 0.56 ND
Article 28 ND ND ND 0.23 ND
Article 29 ND ND ND 0.28 ND
Article 30 ND ND ND ND ND
+0.30 Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 (hacks.mozilla.org S:+0.24 )
371 points by todsacerdoti 5 days ago | 158 comments on HN | Moderate positive Contested Editorial · v3.7 · 2026-02-26 04:27:31 0
Summary Digital Security & Knowledge Advocates
This technical blog post advocates for web security standards through education and knowledge-sharing. The content champions the Sanitizer API as a developer tool to prevent cross-site scripting attacks, framing security as a collective good. Mozilla's non-profit role and open-access publishing support education and freedom of expression, though the site's use of Google Analytics tracking creates tension with the privacy protection advocacy.
Article Heatmap
Preamble: +0.31 — Preamble P Article 1: +0.26 — Freedom, Equality, Brotherhood 1 Article 2: +0.37 — Non-Discrimination 2 Article 3: ND — Life, Liberty, Security Article 3: No Data — Life, Liberty, Security 3 Article 4: ND — No Slavery Article 4: No Data — No Slavery 4 Article 5: ND — No Torture Article 5: No Data — No Torture 5 Article 6: ND — Legal Personhood Article 6: No Data — Legal Personhood 6 Article 7: ND — Equality Before Law Article 7: No Data — Equality Before Law 7 Article 8: ND — Right to Remedy Article 8: No Data — Right to Remedy 8 Article 9: ND — No Arbitrary Detention Article 9: No Data — No Arbitrary Detention 9 Article 10: ND — Fair Hearing Article 10: No Data — Fair Hearing 10 Article 11: ND — Presumption of Innocence Article 11: No Data — Presumption of Innocence 11 Article 12: -0.24 — Privacy 12 Article 13: ND — Freedom of Movement Article 13: No Data — Freedom of Movement 13 Article 14: ND — Asylum Article 14: No Data — Asylum 14 Article 15: ND — Nationality Article 15: No Data — Nationality 15 Article 16: ND — Marriage & Family Article 16: No Data — Marriage & Family 16 Article 17: ND — Property Article 17: No Data — Property 17 Article 18: ND — Freedom of Thought Article 18: No Data — Freedom of Thought 18 Article 19: +0.78 — Freedom of Expression 19 Article 20: ND — Assembly & Association Article 20: No Data — Assembly & Association 20 Article 21: ND — Political Participation Article 21: No Data — Political Participation 21 Article 22: ND — Social Security Article 22: No Data — Social Security 22 Article 23: ND — Work & Equal Pay Article 23: No Data — Work & Equal Pay 23 Article 24: ND — Rest & Leisure Article 24: No Data — Rest & Leisure 24 Article 25: +0.35 — Standard of Living 25 Article 26: +0.72 — Education 26 Article 27: +0.56 — Cultural Participation 27 Article 28: +0.23 — Social & International Order 28 Article 29: +0.28 — Duties to Community 29 Article 30: ND — No Destruction of Rights Article 30: No Data — No Destruction of Rights 30
Negative Neutral Positive No Data
Aggregates
Editorial Mean +0.30 Structural Mean +0.24
Weighted Mean +0.41 Unweighted Mean +0.36
Max +0.78 Article 19 Min -0.24 Article 12
Signal 10 No Data 21
Volatility 0.27 (High)
Negative 1 Channels E: 0.6 S: 0.4
SETL +0.09 Editorial-dominant
FW Ratio 62% 28 facts · 17 inferences
Evidence 18% coverage
2H 5M 3L 21 ND
Theme Radar
Foundation Security Legal Privacy & Movement Personal Expression Economic & Social Cultural Order & Duties Foundation: 0.31 (3 articles) Security: 0.00 (0 articles) Legal: 0.00 (0 articles) Privacy & Movement: -0.24 (1 articles) Personal: 0.00 (0 articles) Expression: 0.78 (1 articles) Economic & Social: 0.35 (1 articles) Cultural: 0.64 (2 articles) Order & Duties: 0.26 (2 articles)
HN Discussion 20 top-level · 20 replies
entuno 2026-02-24 13:29 UTC link
This kind of thing always makes me nervous, because you end with a mix of methods where you can (supposedly) pass arbitrary user input to them and they'll safely handle it, and methods where you can't do that without introducing vulnerabilities - but it's not at all clear which is which from the names. Ideally you design that in from the state, so any dangerous functions are very clearly dangerous from the name. But you can't easily do that down the line.

I'm also rather sceptical of things that "sanitise" HTML, both because there's a long history of them having holes, and because it's not immediately clear what that means, and what exactly is considered "safe".

simonw 2026-02-24 13:30 UTC link
Great to see this start to show up, but it looks like it will be a while before browser support is widely distributed enough to rely on it being present: https://caniuse.com/mdn-api_element_sethtml
antonyh 2026-02-24 13:48 UTC link
A rather deceptive title, given that 'innerHTML' isn't going away.
tuyiown 2026-02-24 13:50 UTC link
This is nice. The best part is that all aspects of network access are now properly controlled so that security transitioned from a chain of trusted code to a chain of trusted security setup on hosts, with existing workable safe defaults.
bingemaker 2026-02-24 13:59 UTC link
Nice one. Will there be any impact on __dangerouslySetInnerHTML (React)?
Aachen 2026-02-24 14:22 UTC link
So you can still inject <h1> or <br><br><br>... etc into your username, in the given example

Preventing one bug class (script execution) is good, but this still allows arbitrary markup to the page (even <style> CSS rules) if I'm reading the docs correctly. You could give Paypal a fresh look for anyone who opens your profile page, if they use this. Who would ever want this?

cogman10 2026-02-24 14:26 UTC link
Seems like this has a bunch of footguns. Particularly if you interact with the Sanitizer api, and particularly if you use the "remove" sanitizer api.

Don't get me wrong, better than nothing, but also really really consider just using "setText" instead and never allow the user to add any sort of HTML too the document.

dbvn 2026-02-24 14:44 UTC link
at what point can we consider the development of "set this element's text/html" to be done?
shadowgovt 2026-02-24 15:31 UTC link
Oh, that's nice-to-have. Good work, Mozilla.

It would close the loop better if you could also use policy to switch off innerHTML in a given page, but definitely a step in the right direction for plain-JavaScript applications.

bryanrasmussen 2026-02-24 16:14 UTC link
is there any situation where innerHTML would be preferable? I could suppose it might be more performant and so if you were constructing something that was not open to XSS it might theoretically be better (with the usual caveat that people always make mistakes about this kind of thing)
kevincloudsec 2026-02-24 16:23 UTC link
naming the old behavior setHTMLUnsafe is what did it for me. security features that require developers to opt in don't work. making the unsafe path feel unsafe does.
shevy-java 2026-02-24 16:59 UTC link
Well, the name SetHTML, or let's say:

    .set_html()
Makes objectively more sense than:

    .inner_html()
    .inner_html =
    .set_inner_html()
It is a fairly small thing, but ... really. One day someone should clean up the mess that is JavaScript. Guess it will never happen, but JavaScript has so many strange things ...

I understand that this here is about protection against attacks rather than a better API design, but really - APIs should ideally be as great as possible the moment they are introduced and shown to the public.

giancarlostoro 2026-02-24 17:05 UTC link
My corporate firewall blocks it due to the "hacks" in the subdomain / url. This is silly.
dogtimeimmortal 2026-02-24 17:42 UTC link
Title was a bit rage-baity. And I think you can already do sanitation by writing a function to check input before passing it to innerHTML?

This really just seems like another attempt at reinventing the wheel. Somewhat related, I find it ironic how i cannot browse hacks.mozilla.org in my old version of firefox("Browser not supported"). Also, developer.mozilla.org loads mangled to various degrees in current versions of palemoon, basilisk, and seamonkey

It's like there is some sort of "browser cartel" trying to screw up The Web.

dvh 2026-02-24 18:01 UTC link
Kids in the '90s:

  SQL("select * from user where name = " + name);
Kids in the '20s:

  div.innerHTML = "Hello " + user.name;
pier25 2026-02-24 18:56 UTC link
Tangential but it's amazing in 2026 browsers still don't ship a native DOM morph/merge API like morphdom or idiomorph.
pyrolistical 2026-02-24 19:50 UTC link
And for those who want a better innerHTML, use insertAdjacentHTML https://developer.mozilla.org/en-US/docs/Web/API/Element/ins...

I don’t ever use it with user input, but use it often when building SPA without frameworks

austin-cheney 2026-02-24 20:02 UTC link
Another solution is just use this at the start of your code:

    delete Element.prototype.innerHTML;
Then assignments to innerHTML do not modify the element's textContent or child node list and assignments to it will not throw an error.
jjcm 2026-02-24 21:12 UTC link
What I really want is a <sandbox> element that can safely run dangerous code, not something that modifies dangerous code.

Iframes have significant restrictions as they can’t flow with the DOM. With AI and the increase in dynamic content, there’s going to be even more situations where you run untrusted code. I want configurable encapsulation.

Avamander 2026-02-25 01:37 UTC link
What's the benefit over Trusted Types?
voxic11 2026-02-24 13:43 UTC link
The idea is you wouldn't mix innerHTML and setHTML, you would eliminate all usage of innerHTML and use the new setHTMLUnsafe if you needed the old functionality.
jraph 2026-02-24 13:44 UTC link
Indeed, as any browser API, it might be for in a few years (months if happy with the most recent versions), and we may have polyfills in the meantime.
jncraton 2026-02-24 14:03 UTC link
You are right that the concept of "safe" is nebulous, but the goal here is specifically to be XSS-safe [1]. Elements or properties that could allow scripts to execute are removed. This functionality lives in the user agent and prevents adding unsafe elements to the DOM itself, so it should be easier to get correct than a string-to-string sanitizer. The logic of "is the element currently being added to the DOM a <script>" is fundamentally easier to get right than "does this HTML string include a script tag".

[1] https://developer.mozilla.org/en-US/docs/Web/API/Element/set...

cogman10 2026-02-24 14:32 UTC link
> Who would ever want this?

The main case I can think of is wanting some forum functionality. Perhaps you want to allow your users to be able to write in markdown. This would provide an extra layer of protection as you could take the HTML generated from the markdown and further lock it down to only an allowed set of elements like `h1`. Just in case someone tried some of the markdown escape hatches that you didn't expect.

byproxy 2026-02-24 14:42 UTC link
> but this still allows arbitrary markup to the page (even <style> CSS rules) if I'm reading the docs correctly.

If that's true, seems like it's still a security risk given what you can do with CSS these days: https://news.ycombinator.com/item?id=47132102

evilpie 2026-02-24 14:47 UTC link
Using an allowlist based Sanitizer you are definitely less likely to shoot yourself in the foot, but as long as you use setHTML you can't introduce XSS at least.
jaffathecake 2026-02-24 14:54 UTC link
fwiw, if you serve your page with:

Content-Security-Policy: require-trusted-types-for 'script'

…then it blocks you from passing regular strings to the methods that don't sanitize.

Aachen 2026-02-24 14:57 UTC link
When browsers implement a variant that lets you separate data and code perhaps. That's what I expected when reading the headline: setHtml(code, data, data, ...), just like parameterised SQL works: prepare("select rowid from %s where time < %n", tablename, mynumber)

This new method they've cooked up would be called eval(code,options) if html was anything other than a markup language

itishappy 2026-02-24 15:02 UTC link
> If the default configuration of setHTML( ) is too strict (or not strict enough) for a given use case, developers can provide a custom configuration that defines which HTML elements and attributes should be kept or removed.
jerf 2026-02-24 15:17 UTC link
If I'm reading this right,

    .setHTML("<h1>Hello</h1>", new Sanitizer({}))
will strip all elements out. That's not too difficult.

Plus this is defense-in-depth. Backends will still need to sanitize usernames on some standard anyhow (there's not a lot of systems out there that should take arbitrary Unicode input as usernames), and backends SHOULD (in the RFC sense [1]) still HTML-escape anything they output that they don't want to be raw HTML.

[1]: https://www.rfc-editor.org/rfc/rfc2119

piccirello 2026-02-24 15:33 UTC link
`setHTML` is meant as a replacement for `innerHTML`. In the use case you describe, you would have never wanted `innerHTML` anyway. You'd want `innerText` or `textContent`.
Cthulhu_ 2026-02-24 15:37 UTC link
Ideally you should be able to set a global property somewhere (as a web developer) that disallows outdated APIs like `innerHTML`, but with the Big Caveat that your website will not work on browsers older than X. But maybe there's web standards for that already, backup content if a browser is considered outdated.
jandrese 2026-02-24 15:56 UTC link
I think the title is trying to convince you to switch from InnerHTML to SetHTML.
lloydatkinson 2026-02-24 17:02 UTC link
To be pedantic that’s the DOM API, which is exposed to JavaScript.

The DOM API has always felt like, and still does, it was written by people that have never made an API.

GalaxyNova 2026-02-24 17:29 UTC link
It's worse than nothing, since inevitably people will use this thinking it's 100% safe when it's not.
Retr0id 2026-02-24 17:45 UTC link
> you can already do sanitation by writing a function to check input before passing it to innerHTML

This is like saying C is memory safe as long as your code doesn't have any bugs.

More saliently, it does not consider parser differentials.

lelanthran 2026-02-24 18:38 UTC link
> never allow the user to add any sort of HTML too the document.

What about when the author of the page wants to add large html fragments to the page?

Are you saying that you cannot think of a single use for this, considering how often innerHTML is being used?

ok123456 2026-02-24 19:59 UTC link
That's why the DNS for hackernews is news.ycombinator.com and not hackernews.org
cxr 2026-02-24 20:34 UTC link
> it's not at all clear which is which from the names. Ideally you design that in from the [start]

It was, and there is: setting elementNode.textContent is safe for untrusted inputs, and setting elementNode.innerHTML is unsafe for untrusted inputs. The former will escape everything, and the latter won't escape anything.

You are right that these "sanitizers" are fundamentally confused:

> "HTML sanitization" is never going to be solved because it's not solvable.¶ There's no getting around knowing whether or any arbitrary string is legitimate markup from a trusted source or some untrusted input that needs to be treated like text. This is a hard requirement.

<https://news.ycombinator.com/item?id=46222923>

The Web platform folks who are responsible for getting fundamental APIs standardized and implemented natively are in a position to know better, and they should know better. This API should not have made it past proposal stage and should not have been added to browsers.

Legend2440 2026-02-24 21:38 UTC link
Kids in the '30s:

  "Summarize this email:  " + email.contents
Prompt injection is just the same problem on a new technology. We didn't learn anything from the 90s.
Editorial Channel
What the content says
+0.55
Article 26 Education
High Advocacy Framing
Editorial
+0.55
SETL
-0.17

Content explicitly educates developers about security best practices. Knowledge sharing supports right to education and technical literacy. Explains CSP history and Sanitizer API design, building developer competency.

+0.50
Article 19 Freedom of Expression
High Advocacy Framing Coverage
Editorial
+0.50
SETL
+0.16

Article directly addresses freedom of expression through technical education. Content advocates for developers' capacity to protect user data and security. Transparent attribution supports freedom of expression infrastructure.

+0.40
Article 27 Cultural Participation
Medium Advocacy Framing
Editorial
+0.40
SETL
+0.20

Content participates in scientific and technical progress through standardization work. Sanitizer API represents collective advancement in web security knowledge.

+0.35
Preamble Preamble
Medium Advocacy Framing
Editorial
+0.35
SETL
+0.19

Content explicitly advocates for safer web through technical security standards. Language emphasizes collective benefit ('advancing a safer web for everyone') aligned with UDHR's universal dignity framing.

+0.35
Article 25 Standard of Living
Medium Framing
Editorial
+0.35
SETL
ND

Content addresses adequate standard of living through security protection. XSS attacks can compromise financial data and personal security; preventing XSS indirectly protects users' economic welfare.

+0.30
Article 1 Freedom, Equality, Brotherhood
Low Framing
Editorial
+0.30
SETL
+0.17

Content indirectly addresses dignity and equality by advocating for security standards that protect all web users equally from XSS attacks.

+0.30
Article 29 Duties to Community
Low Framing
Editorial
+0.30
SETL
+0.12

Content emphasizes developer responsibility in implementing security standards. Implicitly frames security implementation as duty to protect others.

+0.25
Article 2 Non-Discrimination
Medium Framing
Editorial
+0.25
SETL
-0.12

Article advocates non-discriminatory security standards; technical solutions presented as available to all developers.

+0.25
Article 28 Social & International Order
Low Framing
Editorial
+0.25
SETL
+0.11

Content indirectly supports social and international order for human rights by advocating for security standards that protect all users globally from exploitation.

-0.25
Article 12 Privacy
Medium Practice
Editorial
-0.25
SETL
+0.19

Content advocates for privacy protection against XSS attacks (which steal user data), but site itself implements Google Analytics and GTM tracking.

ND
Article 3 Life, Liberty, Security

No observable content addressing right to life and liberty.

ND
Article 4 No Slavery

No observable content addressing slavery or servitude.

ND
Article 5 No Torture

No observable content addressing torture or cruel treatment.

ND
Article 6 Legal Personhood

No observable content addressing right to recognition as person before law.

ND
Article 7 Equality Before Law

No observable content addressing equality before law and equal protection.

ND
Article 8 Right to Remedy

No observable content addressing effective remedy for rights violations.

ND
Article 9 No Arbitrary Detention

No observable content addressing freedom from arbitrary arrest or detention.

ND
Article 10 Fair Hearing

No observable content addressing fair and public hearing.

ND
Article 11 Presumption of Innocence

No observable content addressing presumption of innocence or criminal liability.

ND
Article 13 Freedom of Movement

No observable content addressing freedom of movement.

ND
Article 14 Asylum

No observable content addressing right to asylum.

ND
Article 15 Nationality

No observable content addressing nationality.

ND
Article 16 Marriage & Family

No observable content addressing marriage or family rights.

ND
Article 17 Property

No observable content addressing property rights.

ND
Article 18 Freedom of Thought

No observable content addressing freedom of thought, conscience, or religion.

ND
Article 20 Assembly & Association

No observable content addressing freedom of assembly or association.

ND
Article 21 Political Participation

No observable content addressing participation in government or public affairs.

ND
Article 22 Social Security

No observable content addressing social security or welfare rights.

ND
Article 23 Work & Equal Pay

No observable content addressing labor rights or employment.

ND
Article 24 Rest & Leisure

No observable content addressing right to rest and leisure.

ND
Article 30 No Destruction of Rights

No observable content addressing prohibition of rights destruction.

Structural Channel
What the site does
Element Modifier Affects Note
Legal & Terms
Privacy +0.15
Article 12
Site implements Google Analytics and GTM tracking with UTM parameter removal utility, indicating awareness of privacy concerns but continued analytics deployment.
Terms of Service
Terms of service not observable in provided content.
Identity & Mission
Mission +0.20
Article 19 Article 27
Mozilla's stated mission around open web and developer empowerment aligns with knowledge-sharing and technical security education.
Editorial Code +0.05
Article 19
Technical blog format with clear author attribution and date stamps supports editorial transparency.
Ownership +0.10
Article 19
Mozilla Foundation ownership as non-profit organization supports commitment to public interest over profit-driven content.
Access & Distribution
Access Model +0.15
Article 26
Open access technical content published without paywall or registration barrier.
Ad/Tracking -0.10
Article 12
Google Analytics and GTM tracking present on page reduces privacy score despite Mozilla's privacy advocacy.
Accessibility +0.10
Article 2 Article 19
Standard WordPress accessibility CSS classes present (wp-block structure), indicating baseline accessibility standards.
+0.60
Article 26 Education
High Advocacy Framing
Structural
+0.60
Context Modifier
+0.15
SETL
-0.17

Open access model (no paywall) makes technical education freely available to all developers globally. WordPress accessibility standards support universal usability. Clear explanations reduce barriers to learning.

+0.45
Article 19 Freedom of Expression
High Advocacy Framing Coverage
Structural
+0.45
Context Modifier
+0.30
SETL
+0.16

Open access publication (no paywall or registration). Clear authorship attribution (Tom Schuster, Frederik Braun, Christoph Kerschbaumer). Mozilla Foundation ownership (non-profit) supports public interest over profit-driven information gatekeeping. Content freely redistributable.

+0.30
Article 2 Non-Discrimination
Medium Framing
Structural
+0.30
Context Modifier
+0.10
SETL
-0.12

WordPress accessibility classes (wp-block structure) present; content structure supports screen reader compatibility.

+0.30
Article 27 Cultural Participation
Medium Advocacy Framing
Structural
+0.30
Context Modifier
+0.20
SETL
+0.20

Mozilla Foundation's role in web standards development (CSP, Sanitizer API) supports accessibility to benefits of scientific progress.

+0.25
Preamble Preamble
Medium Advocacy Framing
Structural
+0.25
Context Modifier
0.00
SETL
+0.19

Open access publishing without paywall; transparent author attribution and date stamps support accessibility to knowledge.

+0.25
Article 29 Duties to Community
Low Framing
Structural
+0.25
Context Modifier
0.00
SETL
+0.12

Attribution and transparency support accountability for content accuracy.

+0.20
Article 1 Freedom, Equality, Brotherhood
Low Framing
Structural
+0.20
Context Modifier
0.00
SETL
+0.17

No observable structural signals specific to Article 1.

+0.20
Article 28 Social & International Order
Low Framing
Structural
+0.20
Context Modifier
0.00
SETL
+0.11

No observable structural signals specific to Article 28.

-0.35
Article 12 Privacy
Medium Practice
Structural
-0.35
Context Modifier
+0.05
SETL
+0.19

Google Analytics (UA-35433268-8) and Google Tag Manager (G-5WVW12ST9K) tracking scripts present. Analytics fingerprinting contradicts privacy advocacy.

ND
Article 3 Life, Liberty, Security

No observable structural signals related to Article 3.

ND
Article 4 No Slavery

No observable structural signals related to Article 4.

ND
Article 5 No Torture

No observable structural signals related to Article 5.

ND
Article 6 Legal Personhood

No observable structural signals related to Article 6.

ND
Article 7 Equality Before Law

No observable structural signals related to Article 7.

ND
Article 8 Right to Remedy

No observable structural signals related to Article 8.

ND
Article 9 No Arbitrary Detention

No observable structural signals related to Article 9.

ND
Article 10 Fair Hearing

No observable structural signals related to Article 10.

ND
Article 11 Presumption of Innocence

No observable structural signals related to Article 11.

ND
Article 13 Freedom of Movement

No observable structural signals related to Article 13.

ND
Article 14 Asylum

No observable structural signals related to Article 14.

ND
Article 15 Nationality

No observable structural signals related to Article 15.

ND
Article 16 Marriage & Family

No observable structural signals related to Article 16.

ND
Article 17 Property

No observable structural signals related to Article 17.

ND
Article 18 Freedom of Thought

No observable structural signals related to Article 18.

ND
Article 20 Assembly & Association

No observable structural signals related to Article 20.

ND
Article 21 Political Participation

No observable structural signals related to Article 21.

ND
Article 22 Social Security

No observable structural signals related to Article 22.

ND
Article 23 Work & Equal Pay

No observable structural signals related to Article 23.

ND
Article 24 Rest & Leisure

No observable structural signals related to Article 24.

ND
Article 25 Standard of Living
Medium Framing

No observable structural signals related to Article 25.

ND
Article 30 No Destruction of Rights

No observable structural signals related to Article 30.

Supplementary Signals
How this content communicates, beyond directional lean. Learn more
Epistemic Quality
How well-sourced and evidence-based is this content?
0.76 low claims
Sources
0.8
Evidence
0.8
Uncertainty
0.7
Purpose
0.8
Propaganda Flags
1 manipulative rhetoric technique found
1 techniques detected
appeal to authority
Firefox 148 is the first browser to ship this standardized security enhancing API,' asserting technical leadership without comparative data.
Emotional Tone
Emotional character: positive/negative, intensity, authority
measured
Valence
+0.4
Arousal
0.5
Dominance
0.6
Transparency
Does the content identify its author and disclose interests?
0.67
✓ Author
More signals: context, framing & audience
Solution Orientation
Does this content offer solutions or only describe problems?
0.75 solution oriented
Reader Agency
0.8
Stakeholder Voice
Whose perspectives are represented in this content?
0.55 2 perspectives
Speaks: institutionindividuals
About: corporationindividuals
Temporal Framing
Is this content looking backward, at the present, or forward?
present short term
Geographic Scope
What geographic area does this content cover?
global
Complexity
How accessible is this content to a general audience?
moderate high jargon domain specific
Longitudinal 45 HN snapshots · 6 evals
+1 0 −1 HN
Audit Trail 26 entries
2026-02-28 14:30 model_divergence Cross-model spread 0.50 exceeds threshold (4 models) - -
2026-02-28 14:30 eval_success Lite evaluated: Neutral (0.00) - -
2026-02-28 14:30 eval Evaluated by llama-3.3-70b-wai: 0.00 (Neutral) 0.00
reasoning
Tech blog with security focus
2026-02-28 14:25 eval_success Lite evaluated: Neutral (0.00) - -
2026-02-28 14:25 model_divergence Cross-model spread 0.50 exceeds threshold (4 models) - -
2026-02-28 14:25 eval Evaluated by llama-3.3-70b-wai: 0.00 (Neutral)
reasoning
Tech blog with security focus
2026-02-26 23:03 eval_success Light evaluated: Moderate positive (0.40) - -
2026-02-26 23:03 eval Evaluated by llama-4-scout-wai: +0.40 (Moderate positive)
2026-02-26 20:12 dlq Dead-lettered after 1 attempts: Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 - -
2026-02-26 20:09 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 20:08 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 20:07 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 17:32 dlq Dead-lettered after 1 attempts: Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 - -
2026-02-26 17:29 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 17:28 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 17:27 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 09:00 dlq Dead-lettered after 1 attempts: Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 - -
2026-02-26 08:59 dlq Dead-lettered after 1 attempts: Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 - -
2026-02-26 08:59 dlq Dead-lettered after 1 attempts: Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 - -
2026-02-26 08:59 dlq Dead-lettered after 1 attempts: Goodbye InnerHTML, Hello SetHTML: Stronger XSS Protection in Firefox 148 - -
2026-02-26 08:58 rate_limit OpenRouter rate limited (429) model=hermes-3-405b - -
2026-02-26 08:58 rate_limit OpenRouter rate limited (429) model=mistral-small-3.1 - -
2026-02-26 08:58 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 08:24 eval Evaluated by deepseek-v3.2: +0.50 (Moderate positive) 14,729 tokens
2026-02-26 04:27 eval Evaluated by claude-haiku-4-5-20251001: +0.41 (Moderate positive) 17,320 tokens -0.17
2026-02-26 04:06 eval Evaluated by claude-haiku-4-5-20251001: +0.58 (Moderate positive) 16,378 tokens