Haitham AssoliRead this in Arabicاقرأ هذه الصفحة بالإنجليزية
Back to the sheet

Extensions2026

Sada

Arabic subtitles for English YouTube, translated on your device.

A Chrome extension that renders Arabic subtitles over English YouTube videos by translating the video's own captions entirely in the browser, using a bundled NLLB-200 model. No account, no cloud translation service, and caption text never leaves the machine.

Production
Sada
Role
Solo
Year
2026
Status
Live
Format
Extensions
Built with
JavaScriptManifest V3transformers.jsNLLB-200WebGPUWASM
Where to find it
Sada — Arabic subtitles for English YouTube, translated on your device.صدى — ترجمة عربية لفيديوهات يوتيوب الإنجليزية، تُترجَم على جهازك.

Treatment

Auto-translated captions on YouTube mean your viewing history goes to a translation service. Sada does the same job without that: the model and runtime download once at install, and after that the engine runs with remote models disabled.

الترجمة التلقائية للتسميات على يوتيوب تعني ذهاب سجل مشاهدتك إلى خدمة ترجمة. يؤدي «صدى» العمل نفسه بلا ذلك: يُنزَّل النموذج وبيئة التشغيل مرة واحدة عند التثبيت، وبعدها يعمل المحرّك والنماذج البعيدة معطّلة.

At runtime the only network traffic is YouTube itself, meaning the video and its caption cues fetched same-origin, plus extension-local asset loads. Any request to a third-party origin would be a bug, and the privacy claim is written to be falsifiable rather than reassuring.

أثناء التشغيل، حركة الشبكة الوحيدة هي يوتيوب نفسه، أي الفيديو وتسمياته من الأصل ذاته، إضافة إلى تحميل أصول محلية للإضافة. وأي طلب إلى أصل خارجي خلل، وصياغة ادعاء الخصوصية قابلة للتكذيب لا للطمأنة.

Challenges

  1. A translation model in a browser tab

    The problem

    NLLB-200 is not a small model, and running it in the page means competing with the video for memory and compute on the same machine that is decoding 1080p.

    What I did

    The distilled 600M variant runs through transformers.js on WebGPU where available and falls back to WASM otherwise. Assets are fetched once at install rather than per session, so the cost is paid one time.

  2. Subtitles have to keep up with the video

    The problem

    Translation takes time, and a subtitle that arrives after the line has been spoken is worse than none. The viewer reads one sentence while hearing the next.

    What I did

    Cues are translated ahead of the playhead rather than on demand, so the work happens during the gap before the line is needed instead of after it has passed.

Results

  • 100% on-device translation with remote models disabled after install.ترجمة على الجهاز بالكامل مع تعطيل النماذج البعيدة بعد التثبيت.
  • Toggleable, resizable subtitle overlay on any English YouTube watch page.طبقة ترجمة قابلة للتبديل وتغيير الحجم على أي صفحة مشاهدة إنجليزية في يوتيوب.
Next design — PlayroomSee all 14