Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.F404 Error PageActionHTTP 404, bare pageFIX
DWeb ManifestActionNot foundFIX
No web manifest found.
DDark Mode SupportActionNo dark mode signalsFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
BLandmark Structure4 landmarksREVIEW
Multiple navigations need aria-label to distinguish them for screen readers.
Some <nav> elements lack aria-label — screen-reader users hear 'navigation' multiple times with no way to distinguish them.
Learn more ▾ ▴
When a page has multiple <nav> regions (primary, footer, breadcrumb), each needs aria-label or aria-labelledby. AT users navigate by landmark; identical 'navigation' announcements force them to enter each one to discover purpose.
Source: WAI-ARIA Authoring Practices
Add a skip link as the first focusable element so keyboard users can bypass repeated navigation.
Without a skip-nav link, keyboard users tab through every nav item before reaching content — every page, every visit.
Learn more ▾ ▴
WCAG 2.4.1 (Bypass Blocks) requires a mechanism to skip past repeated content. The standard implementation is a 'Skip to main content' link that's the first focusable element, visually hidden until focused. Three lines of HTML + four of CSS.
Source: WCAG 2.1 SC 2.4.1
BLink & Button Quality2 issue(s) across 23 links and 4 buttonsREVIEW
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
Icon-only buttons need an aria-label so screen readers can announce them.
button.md:hidden (#50 on page); button.p-2 (#59 on page)
Buttons with no accessible text (icon-only, no aria-label) can't be activated by voice control or understood by screen readers.
Source: WCAG 2.1 SC 4.1.2
BFavicon & Branding3 icon(s) detectedREVIEW
CColor Contrast (Screenshot)Action20 text elements analyzed, 20 fail WCAG AAREVIEW
Analyzes text contrast against the actual rendered page, including background images, gradients, and overlays that CSS-based tools cannot detect.
Show all checked elements (20)
| Element | Ratio | Required | FG | BG | Result |
|---|---|---|---|---|---|
| h2 Why sTELgano | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 Feature Comparison | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 How it Works | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 The Core Invariant | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 Security Model | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 Use Cases | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 FAQ | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h2 Under the Hood | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Privacy that doesn't… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Zero-Knowledge Archi… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Ephemeral Identity. | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Client-Side Cryptogr… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 How we stack up | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Three steps. Under a… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 N=1 Messaging. | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Transparent about wh… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Built for people who… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Frequently Asked Que… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Serious cryptography… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
| h3 Open source. Auditab… | 1.05:1 | 3.0:1 | #000000 | #040818 | Fail |
Methodology: The top 20 text elements by font size were checked. Background color was sampled from the desktop screenshot using a 5-point pattern. WCAG 2.1 AA requires 4.5:1 for normal text and 3:1 for large text.
BLighthouse Accessibility AuditsScore 89/100 — 2 failing, 20 passedREVIEW
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
Names and labels
When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. Learn how to make buttons more accessible.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
div.max-w-7xl > div.flex > div.flex > button.md:hidden div.max-w-7xl > div.flex > div.flex > button.md:hidden |
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Contrast
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
No plaintext ever touches the backend. Even a full database breach reveals noth… ul.space-y-4 > li.flex > div > p.text-slate-500 |
The protocol is designed so you don't even have to trust us. The cryptography g… ul.space-y-4 > li.flex > div > p.text-slate-500 |
We don't want to know who you are. The system is designed to prevent us from ev… ul.space-y-4 > li.flex > div > p.text-slate-500 |
Session keys are kept strictly in volatile memory. Close the browser, and the e… ul.space-y-4 > li.flex > div > p.text-slate-500 |
Your encryption keys are derived from your PIN and the Steg Number using 600,00… ul.space-y-4 > li.flex > div > p.text-slate-500 |
Because the payload is encrypted with AES-256-GCM before it ever hits the netwo… ul.space-y-4 > li.flex > div > p.text-slate-500 |
The moment a reply is sent, the previous message is atomically wiped from the d… ul.space-y-6 > li.flex > div > p.text-slate-500 |
Because old messages are actively destroyed to make room for new ones, there is… ul.space-y-6 > li.flex > div > p.text-slate-500 |
Even if a server is physically seized or fully compromised, there is nothing to… ul.space-y-6 > li.flex > div > p.text-slate-500 |
Pro Tip: Use Incognito/Private Mode to ensure no local traces remain. div.w-full > section.px-6 > div.relative > p.text-xs |
The messaging app hidden in your contacts. footer.px-6 > div.max-w-6xl > div.flex > p.text-slate-500 |
STEL·GAH·NO — STEGANOGRAPHY + TEL footer.px-6 > div.max-w-6xl > div.flex > p.text-slate-600 |
AGPL-3.0 div.max-w-6xl > div.flex > div.flex > div.px-2 |
BUILD 2026.04 div.max-w-6xl > div.flex > div.flex > div.px-2 |
© 2026 sTELgano Contributors footer.px-6 > div.max-w-6xl > div.flex > p.text-[9px] |
These are opportunities to improve the legibility of your content.
A+Heading Hierarchy45 headingsPASS
- H1 sTELgano
- H2 Why sTELgano
- H3 Privacy that doesn't advertise itself.
- H3 Zero-Knowledge Architecture.
- H4 Opaque by Default
- H4 Untrusted Backend
- H3 Ephemeral Identity.
- H4 No Email, No Phone
- H4 Memory-Only Sessions
- H3 Client-Side Cryptography.
- H4 Local Key Derivation
- H4 End-to-End by Design
- H2 Feature Comparison
- H3 How we stack up against the rest.
- H2 How it Works
- H3 Three steps. Under a minute.
- H4 Generate a Steg Number
- H4 Choose Your PIN
- H4 Open the Channel
- H2 The Core Invariant
- H3 N=1 Messaging.
- H4 Instant Annihilation
- H4 No Chat History
- H4 Zero Long-Term Liability
- H2 Security Model
- H3 Transparent about what we store.
- H4 What the server stores
- H4 What the server never sees
- H2 Use Cases
- H3 Built for people who need real discretion.
- H4 Personal Privacy
- H4 Confidential Sources
- H4 Sensitive Coordination
- H4 Cross-Border Communication
- H2 FAQ
- H3 Frequently Asked Questions.
- H4 How does contact-layer steganography work?
- H4 What happens to my messages?
- H4 Can the server read my messages?
- H4 If there's no account, how do I log in?
- H4 What happens if I forget my PIN?
- H2 Under the Hood
- H3 Serious cryptography. Simple interface.
- H3 Open source. Auditable. Forkable.
- H3 Ready to chat privately?