# ResponsiveVoice

_Browser-based JavaScript text-to-speech API_

2014 · Creator & architect · shipped

A cross-browser JavaScript text-to-speech library that grew from an internal accessibility feature into a standalone product with 90M+ monthly users, and spun out as an independent company in 2023.

**Technologies:** JavaScript, TypeScript, HTML5, PHP

[Visit website](https://responsivevoice.org) · [GitHub](https://github.com/responsivevoice)

**Related expertise:** [Backend & infrastructure](https://jfcampos.dev/expertise/backend-infrastructure.md), [Audio & speech](https://jfcampos.dev/expertise/audio-speech.md)

![ResponsiveVoice](https://jfcampos.dev/images/projects/responsive-voice.jpg)

## Overview

ResponsiveVoice is a JavaScript text-to-speech API that runs in the browser. By the time it spun out as an independent company, it was reaching **90M+ monthly users** across millions of websites.

The library supports 100+ voices across 50+ languages. It has a widget that follows the reader through the article, highlights the current passage, and lets them jump directly to the part they care about.

It has a browser SDK for websites and apps, and a REST API for server-side integration.

## Background

This project started as an internal accessibility feature inside the [Hyperspace](https://jfcampos.dev/projects/hyperspace.md) platform around 2014. I built the first version of the library in one weekend and started using it immediately in our experiences.

As demand from outside the platform grew, we packaged it as a standalone product. In 2023 it spun out as an independent company. More about that time in [Becoming a CTO](https://jfcampos.dev/articles/becoming-a-cto.md).

In 2025 we migrated the library to TypeScript and added support for AI voices from Google Cloud, Microsoft Azure, OpenAI and others.

## How it works

**Native voices come first.** Most browsers and operating systems ship their own speech engine, and the library uses it whenever it can. On a device without one, it switches to our voice service, a small PHP gateway that gets the audio from a real-time TTS provider and sends it back.

**Long text was the tricky part.** Speech engines only accept so many characters at once, so the library cuts long text into pieces and plays them one after another. The hand-off between pieces has to be timed precisely, or the voice stops sounding natural.

**The voice service grew into one of the busiest parts of the product.** With 90 million users a month, the audio it served had to be cached and stored on a very large scale.

## My involvement

- Designed and built the entire original technical stack from scratch.
- Led the technical and strategic transition to spin out as an independent company in 2023.
- Today I remain involved as a technical advisor and shareholder.

More about this project, by area:

- [Audio & speech](https://jfcampos.dev/expertise/audio-speech.md#responsivevoice)
- [Backend & infrastructure](https://jfcampos.dev/expertise/backend-infrastructure.md#responsivevoice)

---

Web page: <https://jfcampos.dev/projects/responsivevoice>
