Accessibility
A statement worth reading is one that names the things that are wrong. This one does, along with what we build to and how to report what we have missed.
- WCAG 2.2 AA as the target
- Contrast measured, not judged
- Known gaps listed
The position
We build this website to WCAG 2.2 level AA, and we check it rather than assume it: contrast is measured against the colour each element is actually painted on, and a failure blocks the build. This is not a target we announce and revisit annually — it runs on every release.
It is not a claim of full conformance. Known shortfalls are listed below rather than omitted. If something on this site or in the app is unusable for you, write to [email protected] with the subject Accessibility and tell us what happened — that is treated as a defect report, not as feedback.
In force since
What is built in
- Every page works without JavaScript. Nothing is hidden by default and revealed by a script, so a page with a failed script, a strict content blocker or a text-only client still shows its content. Interactive elements are enhancements on top of pages that already work.
- Contrast is measured against the real painted background, by resolving each element to the first opaque ancestor behind it, rather than being eyeballed against an assumed colour. Body text on this site was once at 4.49:1 — under AA and perfectly plausible to look at — and it took a measurement to find.
- A skip link and visible focus. Every page opens with a skip-to-content link, and every interactive element has a visible focus indicator rather than the outline being removed for tidiness.
- Semantic structure. One h1 per page, headings in order without skipped levels, real lists, tables with proper header cells and captions, and landmarks a screen reader can navigate by.
- Motion respects the system setting. Every animation is disabled under prefers-reduced-motion, and content is visible immediately rather than waiting for an entrance.
- Text scales. Layouts use relative units and reflow rather than breaking or scrolling sideways when text is enlarged or the window is narrow.
- Meaningful alternative text, and deliberately empty alt on an image inside a link that already carries its own text — a description there makes a screen reader announce the same thing twice.
Known shortfalls
This section is the reason the page is worth publishing. Each item is real, we know about it, and none of them is presented here as fixed.
The site is published in thirty languages and has not been tested with a screen reader in all of them. Testing has been done in English. Pronunciation and reading order in right-to-left languages, and in scripts where our display typefaces have no coverage and the platform font substitutes, have not been verified with assistive technology.
Our two typefaces cover Latin only. Cyrillic, Devanagari, Georgian, Thai, Arabic, Hebrew, Bengali, Ethiopic and CJK all fall back to the platform's own fonts. That is generally good for legibility and it does mean the typographic detail we control in English — weight, spacing, the size at which small text stops being small enough — is not something we control in those locales.
Some interactive elements are recent and less tested. The comparison matrix and the help search filter rows in place, which is the right pattern, but the announcement of a changed result count to a screen reader has been implemented rather than user-tested.
The app is held to the same intent and is audited less often than the site. It supports the platform's own text sizing and screen reader, both of which do most of the work, but we do not currently run a formal accessibility audit against each release.
No formal third-party audit has been carried out on either the site or the app. We would rather say that than imply a certification we do not hold.
The app, and one thing worth knowing
The Telvio app relies on the accessibility features of the operating system it runs on: VoiceOver and Dynamic Type on iOS, TalkBack and font scaling on Android. Those cover most of what matters in an app whose interface is a keypad, a balance and a list of rates.
One design decision is worth calling out as an accessibility property rather than a feature. Because the app requires no account, there is no sign-up form, no password to enter, no email verification step and no code to retrieve from a message — the whole class of interaction that most frequently defeats people using assistive technology, or anybody who finds forms difficult, simply is not present. Install, dial, talk.
The corresponding limitation is on the same page as everything else: the app cannot call emergency services, which is set out at emergency calls. If somebody sets this app up for a relative — a common pattern, particularly for older people calling family abroad — that is the single most important thing to explain while doing it.
Telling us something is wrong
Email [email protected] with the subject Accessibility. Useful detail: the page or screen, what you were trying to do, what assistive technology you were using including its version, and what happened instead. None of it is required — a sentence saying “I cannot use the rates table with a screen reader” is a perfectly good report and we would rather have it than nothing.
We aim to reply within five working days with an assessment and, where we agree there is a defect, a rough timescale. Things that block somebody from completing a task are fixed ahead of other work; things that make a task harder are queued honestly rather than promised vaguely.
If you are in the European Union and believe an accessibility obligation is not being met, you may also raise it with the relevant national enforcement body. We would rather you came to us first, and we will answer either way.
How the checks actually run
Two things are worth describing because they are the difference between a statement and a practice.
Contrast is painted, not parsed. A colour value read out of a stylesheet tells you what an element was asked to be, not what it ended up looking like — a semi-transparent element over a dark band, a modern colour function a regex does not understand, a fixed header over a hero image. The check renders each element's real background by walking up to the first opaque ancestor and resolving the colour through the browser itself, then computes the ratio. It found body text on this site sitting at 4.49:1, which is under AA and looks entirely normal in isolation.
The page is checked as rendered, not as written. A separate probe loads each page in a real browser and asks whether any text in the viewport is at zero opacity, whether the document scrolls sideways, and whether anything is painted in its own background colour. That last one sounds absurd until it ships: a single grouped CSS rule once set a label's colour and its background to the same value, producing a 1:1 contrast ratio that is invisible in the markup, invisible in the DOM, and invisible in a screenshot of the source.
Things we decided deliberately
- No motion without permission. Scroll animations are opt-in from a script that first confirms motion is wanted, so a reader with reduced motion enabled sees content immediately and never sees it arrive.
- No content behind JavaScript. Nothing is authored invisible. This is an accessibility decision as much as a performance one — a page that depends on a script to become visible is a page that fails for everybody the script fails for.
- Words rather than icons in data. The comparison tables say “Yes”, “None” and “Rounded up” instead of ticks and crosses, because a tick is ambiguous when announced and invisible when copied.
- Empty alt where a description would repeat. An image inside a link that already carries its own text gets
alt="", so a screen reader announces the destination once rather than twice. - Wide tables scroll inside their own box rather than pushing the page sideways, so a phone never scrolls horizontally to read a paragraph.
Bottom line
We build to WCAG 2.2 AA and verify it on every release, with contrast measured against the real painted background rather than assumed. This is not a claim of full conformance.
Known shortfalls: screen reader testing has been done in English only across thirty languages, our typefaces cover Latin only so other scripts fall back to platform fonts, the newest interactive elements are less tested, and no third-party audit has been carried out.
Report anything unusable to [email protected] with the subject Accessibility. It is treated as a defect report, and things that block a task are fixed ahead of other work.
Frequently asked questions
What accessibility standard does Telvio follow?
WCAG 2.2 level AA is the target for the website, checked on every release rather than reviewed periodically. Contrast is measured against the background each element is actually painted on, and a failure blocks the build. Full conformance is not claimed.
Does the Telvio website work without JavaScript?
Yes. Nothing is hidden by default and revealed by a script, so every page shows its content with JavaScript disabled or blocked. Interactive features such as the comparison filters are enhancements on top of pages that already work.
Has Telvio had an accessibility audit?
No third-party audit has been carried out on either the website or the app. Automated and manual checks run on every release of the site, and this statement lists the known shortfalls rather than omitting them.
Is the Telvio app accessible with a screen reader?
The app relies on the platform's own accessibility features — VoiceOver and Dynamic Type on iOS, TalkBack and font scaling on Android. It is audited less often than the website, and no formal accessibility audit is run against each release.
How do I report an accessibility problem?
Email [email protected] with the subject Accessibility, saying which page or screen, what you were trying to do, and what happened. Assistive technology and version help but are not required. We aim to reply within five working days.
Why does the site use a different font in my language?
The two typefaces the site is designed in cover Latin script only. Cyrillic, Devanagari, Georgian, Thai, Arabic, Hebrew, Bengali, Ethiopic and CJK fall back to the platform's own fonts, which is generally better for legibility but means the typographic detail is not under our control in those locales.