Hi everyone,
Due to the numerous issues VoiceOver users face with the Telegram app on iOS and the frustrating lack of attention from Telegram’s developers regarding accessibility, I decided to take action myself and make Telegram Web more accessible. Now, Telegram is largely usable through Safari.
To get started, follow these steps carefully:
- First, install the Userscripts app from the App Store:
Download Userscripts from the App Store - Next, open the Settings app on your iPhone. Scroll down to your list of apps to find and tap Safari. From there, go to Extensions and enable the Userscripts extension.
- Now, open the Files app, navigate to the Userscripts folder (by default located under the "On My iPhone" path), and place the script file you downloaded from this post into this folder.
- Inside that same folder, you must delete the default demo.js file that is included with the Userscripts app, as it will cause conflicts.
- Finally, completely close Safari (from the app switcher) and re-open it to have the script activated.
From now on, when you visit web.telegram.org/a/, all your channels, groups, and chats will be properly labeled and accessible. Inside groups and channels, you can set the VoiceOver Rotor to Headings to move more easily between messages. To open and access the options related to a message, channel, or group, use the double-tap and hold gesture, which will bring up the context menu to access stuff like copy, forward, etc.
This script also makes it possible to download audio files and access comments.
Please be aware of a few things. If audio playback does not start, you need to select "Close Audio Player" and try again. This issue is not related to the script but comes from Telegram Web on iOS. Sometimes, after recording a voice message, VoiceOver audio may switch to the top earpiece of the iPhone. This is another bug in Telegram Web.
I also want to add that while I have done my best to minimize issues, this script may not be perfect. Given the complexity of Telegram Web, you might still encounter occasional bugs, such as a group being misidentified as a channel.
You are free to modify the source code of this script, and if you add new features, please share them with others. If you encounter problems with the script itself, please leave a comment on this post so we can see whether it is possible to work around them given the limitations of Telegram Web.
Download:
Download the script from Google Drive
Comments
re: Thank you so much!
Hi Ambro,
Thank you so much for your thoughtful and detailed feedback! I'm thrilled to hear that the script is working well for you and has made Telegram 90% accessible on your iPhone. It's very rewarding to know it's making a real difference.
You made an excellent discovery that the links work with the /k version of Telegram Web. That's very useful information, thank you for checking and reporting back. Regarding your request to make that version accessible, I will definitely look into it and try my best, but I can't make any promises at this time. Adapting the script for a different web client can sometimes be a complex task.
Please remember that this script is open-source and free. You, or anyone else in the community, are encouraged to modify it. If you or someone else manages to adapt the script to work with the /k version, I would be very happy if you shared it with everyone so we can all benefit.
Thanks again for your valuable feedback!
about web.telegram.org/k/
Just a quick note for anyone following the accessibility of web.telegram.org/k/: I've had to pause my efforts for the iOS version. I can't proceed because inspecting the web source on iOS requires a Mac, which I don't have access to. The code is different on mobile, making it impossible to debug from other platforms. I wanted to inform you all of the situation.
Mahmood, can I help you?
I have a Mac, can I help you with this? Do you need the code only for Telegram’s homepage or for other pages as well?
If you have a Windows PC and change the user agent to simulate a Mac, I think that should work anyway, right? Let me know.
Telegram Accessibility on Mac
So I tried the script on my M 1 Mac mini. Actually, it works priti well. However, it's really tricky to find the chat I want. When I press the chat element, I don't know it's not a button on my end, Voiceover gos until the new chat button. I can't see my chats. I need to tipe to the search box, but as I said, reaching the chat and tiping a message is a bit dificult and tricky on my end, unfortunately I don't know the reason.
re: Mahmood, can I help you?
Hello Ambro,
Just wanted to give you a quick and positive update! For now, I've actually managed to solve the problem using another method, which is great news.
However, your generous offer to help with your Mac is still something I truly value. If you are still willing, I would be very grateful if you could send me your contact details through my AppleVis contact form—especially if you have a Telegram account.
That way, if I run into another roadblock or need assistance in the future, I'll know how to reach you.
Thank you once again for your fantastic willingness to help!
Best,
Mahmood
re: Telegram Accessibility on Mac
Hi Cankut,
Thank you so much for taking the time to test the script on your M1 Mac mini and for sharing this valuable feedback. I'm glad to hear that it's working pretty well for the most part.
I understand the main issue is with navigating the chat list, and how activating a chat incorrectly moves the VoiceOver focus to the "New Chat" button. This is certainly a frustrating experience.
This problem likely happens because the script was primarily developed and tested for VoiceOver on iOS, which is a touch-based interface. The way VoiceOver interacts with web pages using keyboard commands on macOS can be quite different.
For the best and most consistent accessibility, the Telegram Web interface should ideally be structured in a specific way:
Each chat in the chat list should be a proper button. This would make them clearly actionable elements for screen readers on all platforms.
Inside a chat, every message from a person, group, or channel should be a heading. This allows screen reader users to efficiently navigate from message to message using the heading shortcut (e.g., the 'H' key or the Rotor).
Unfortunately, I don't have access to a Mac to directly test and debug this behavior. The structure of the Telegram Web page might also be slightly different on macOS browsers compared to iOS or Windows, which could be contributing to the issue.
Thanks again for your insightful feedback.
Best regards,
Mahmood