> ## Documentation Index
> Fetch the complete documentation index at: https://docs.responsivevoice.org/llms.txt
> Use this file to discover all available pages before exploring further.

# WordPress Plugin

![ResponsiveVoice for WordPress — "Give your pages a voice", the text-to-speech toolkit for WordPress, showing the WebPlayer control and a v2 badge on a purple gradient.](https://docs.responsivevoice.org/img/wordpress/banner.png)

The [**ResponsiveVoice Text To Speech**](https://wordpress.org/plugins/responsivevoice-text-to-speech/) plugin adds spoken audio to WordPress posts and pages. There are two ways to use it:

- **The WebPlayer** — an automatic floating audio player that reads a post aloud, with paragraph highlighting and playback controls. No per-post markup required.
- **Listen buttons** — classic "read this" buttons you place with a shortcode or a Gutenberg block.

With a free API key, both speak in **100+ voices across 50+ languages**. They work on smartphone, tablet, and desktop, with nothing extra to install on your server.

## Requirements

| Requirement | Minimum        |
| ----------- | -------------- |
| WordPress   | 6.3            |
| PHP         | 7.4            |
| License     | GPLv2 or later |

An API key is optional but recommended — without one the plugin runs in a limited [demo mode](#get-an-api-key).

## Install and activate

1. Install **ResponsiveVoice Text To Speech** from the [WordPress plugin directory](https://wordpress.org/plugins/responsivevoice-text-to-speech/), or upload the plugin ZIP under **Plugins → Add New → Upload Plugin**.
2. Activate it through the **Plugins** menu.
3. Open the **ResponsiveVoice** admin page from the WordPress sidebar.

## Get an API key

Your API key is a **public website identifier**, not a secret — it names your site to the ResponsiveVoice service so the right voice catalog and configuration load.

1. [Register for a free account](https://responsivevoice.org/register).
2. Copy your API key from the [ResponsiveVoice dashboard](https://app.responsivevoice.org).
3. Paste it into the **ResponsiveVoice** admin page in WordPress.

> [!NOTE]
> **Demo mode**
>
> With no API key the listen buttons and shortcodes still work, speaking with
> the browser's built-in voice, and the plugin's admin page shows a prompt to
> register. Adding a free API key unlocks the full voice catalog and the
> WebPlayer once your domain is verified — its controls appear on the settings
> page as soon as the key is in place.

![The ResponsiveVoice settings page without an API key: a "Get started" prompt with a Register your website button above the empty API Key field.](https://docs.responsivevoice.org/img/wordpress/settings-demo-mode.png)

## Verify your website

With an API key set, text to speech activates once your site's domain is verified in the [ResponsiveVoice dashboard](https://app.responsivevoice.org) — on an unverified site the listen buttons and the WebPlayer stay silent. Verification is detected in the visitor's browser — no secret is stored in WordPress.

Until your domain is verified, the plugin shows a **"verify your website"** prompt in place of the player, and wp-admin shows a dashboard notice and admin-bar reminder.

![The WordPress dashboard with a ResponsiveVoice warning notice and admin-bar badge prompting to verify the website's domain.](https://docs.responsivevoice.org/img/wordpress/verify-cta-notice.png)

## The WebPlayer

The WebPlayer is a drop-in article reader — paragraph highlighting, click-to-jump, playback controls, and a floating mini-player that follows the reader once the main controls scroll out of view.

Try it live: the [Web Player example](https://examples.responsivevoice.org/browser/web-player/) shows the full player in action.

![A WordPress page on the front end with the WebPlayer pill control sitting above the content, ready to read the page aloud.](https://docs.responsivevoice.org/img/wordpress/webplayer-reading-post.png)

### Enable modes

The single **ResponsiveVoice** settings page holds your API key and a **WebPlayer** control at the top, with a collapsed **Advanced** section below. The WebPlayer control is a segmented switch:

- **Account default** — follow your ResponsiveVoice account setting.
- **Enabled** — show the WebPlayer on this site.
- **Disabled** — hide the WebPlayer on this site.

### Advanced delivery

The **Advanced** section also controls how the ResponsiveVoice library is delivered: from `cdn.responsivevoice.org` (default, always current), pinned to an exact version, or **bundled** — served from your own site, for CSP-strict setups.

### Choose where it shows

The WebPlayer switch sets the site-wide default; two finer levels narrow it down:

- **Per content type** — the **Show the WebPlayer on** setting toggles it for posts, pages, and custom content types.
- **Per post** — a **ResponsiveVoice WebPlayer** panel in the editor sidebar overrides the default for a single post: **Use default**, **Enabled**, or **Disabled**.

![The WordPress page editor sidebar with a ResponsiveVoice WebPlayer panel offering a per-page override dropdown set to Use default.](https://docs.responsivevoice.org/img/wordpress/per-post-override.png)

### Customizer

The admin page includes a live **customizer** with an instant preview. It surfaces a curated set of the player's options — the rest come from your dashboard configuration, which the plugin's settings layer over:

- **Theme** — presets plus custom colors.
- **Layout** — how the player sits relative to the content.
- **Controls** — which buttons and readouts appear.
- **Voice** — the default voice for the player.
- **Position** — where the player is placed; it aligns to your theme's content column.

![The ResponsiveVoice settings page in wp-admin: API key, WebPlayer switches, per-content-type toggles, and the customizer with a live preview of the player.](https://docs.responsivevoice.org/img/wordpress/settings-customizer.png)

For a re-themed player in action, see the [customization example](https://examples.responsivevoice.org/browser/web-player-customization/). For everything the player can do beyond these, see the [Web Player guide](/guides/web-player/) and [dashboard configuration](/guides/app-features/#web-player).

## Listen buttons

Prefer a tap-to-listen button over an automatic player? Place one anywhere with a shortcode or the Gutenberg block. Buttons speak with your account's default voice unless you set the `voice` attribute. Output is CSP-clean — the buttons carry `data-*` attributes with no inline JavaScript.

### Shortcodes

**Read the whole post**

Adds a button that reads the entire post or page.

```text
[responsivevoice_button]
[responsivevoice_button voice="US English Female" buttontext="Play"]
```

Aliases: `[ListenToPostButton]`, `[RVListenButton]`.
Defaults: `buttontext="Listen to this"`.

**Read a section**

Wraps a passage; only the enclosed text is read.

```text
[responsivevoice]Text you want read aloud[/responsivevoice]
[responsivevoice buttonposition="after"]Text read aloud, button after[/responsivevoice]
```

Alias: `[ResponsiveVoice]`.
Defaults: `buttontext="Play"`, `buttonposition="before"`.

#### Shortcode attributes

| Attribute        | Applies to      | Description                               |
| ---------------- | --------------- | ----------------------------------------- |
| `voice`          | all             | Voice name, e.g. `US English Female`.     |
| `buttontext`     | button, section | Label shown on the button.                |
| `buttonposition` | section         | `before` (default) or `after` the text.   |
| `class`          | button, section | Extra CSS classes on the rendered button. |
| `rate`           | button, section | Speech rate.                              |
| `pitch`          | button, section | Speech pitch.                             |
| `volume`         | button, section | Speech volume.                            |

> [!NOTE]
> `rate`, `pitch`, and `volume` are optional and take a numeric value; leave
> them off to use the default. Their ranges are those of the underlying
> ResponsiveVoice library. Voice names come from the same catalog as the rest of
> ResponsiveVoice — browse it in the [Gutenberg block's](#gutenberg-block)
> **Voice** picker or the [customizer's](#customizer) **Voice** dropdown, or
> call `responsiveVoice.getVoices()`. See [Voice
> Selection](/guides/voice-selection/) for how fallback works and the broader
> speech options.

### Gutenberg block

In the block editor, add the **Listen Button** block (`rvtts/listen-button`) — a server-rendered listen button. Its settings panel offers:

- **Voice** — a live picker of your account's voice catalog, with a **Default (account voice)** option.
- **Preview voice** — hear the selected voice without leaving the editor.
- **Button text** — the button label.
- **Playback** — rate, pitch, and volume sliders.

The block also supports WordPress's native styling controls — color (including gradients), typography, spacing, and border.

![The Listen Button block in the Gutenberg editor: the block settings sidebar shows a voice picker with a Default (account voice) option, a Preview voice button, and a Button text field.](https://docs.responsivevoice.org/img/wordpress/block-voice-picker.png)

## Languages and voices

The full catalog — **100+ voices across 50+ languages** — is resolved through the ResponsiveVoice [voice resolution chain](/guides/voice-selection/) (native Web Speech where available, server fallback otherwise). Bring-Your-Own-Key providers add [premium neural voices](#can-i-use-premium-neural-voices) on top.

The catalog is fetched and cached at runtime, so it improves without updating the plugin. Browse the current list in the [Gutenberg block's](#gutenberg-block) **Voice** picker or the [customizer's](#customizer) **Voice** dropdown — both always reflect your account's catalog — or call `responsiveVoice.getVoices()`.

## Upgrading from 1.7.x

Version 2.0 upgrades in place — your API key, settings, and existing shortcodes carry over with no changes required.

- All 1.x shortcode tags and attributes keep working.
- Buttons now use a neutral style with the ResponsiveVoice icon; restyle them with the `class` attribute or your own CSS.
- The `[responsivevoice_box]` voicebox shortcode (and its aliases) was removed.
- v1 (legacy) accounts keep Listen buttons and shortcodes in full — the WebPlayer needs a v2 account (see [the FAQ](#im-on-a-v1-legacy-account--what-do-i-get)).

## FAQ

### Do I need an API key?

No, but you'll want one. Without a key, the listen buttons speak with the browser's built-in voice and the WebPlayer is unavailable. A free API key unlocks the full voice catalog — delivered through a fast text-to-speech API for high-quality voices — plus the WebPlayer; both activate once your domain is [verified](#verify-your-website). It also opens the door to audio streaming and premium neural voices (Google Cloud, Microsoft Azure, OpenAI) via [Bring Your Own Key](#can-i-use-premium-neural-voices). The key is a public website identifier, not a secret.

### Why isn't the WebPlayer playing?

First make sure an API key is set — the WebPlayer's controls appear on the settings page only once a key is in place. Then check that your domain is [verified](#verify-your-website) — an unverified site silences all text to speech, listen buttons included. If both are in order, one of the [three visibility levels](#choose-where-it-shows) may be hiding it.

### I upgraded from 1.7.x — will my existing shortcodes keep working?

Yes — all 1.x shortcode tags and attributes keep working, and your API key and settings carry over. See [Upgrading from 1.7.x](#upgrading-from-17x) for the two visible changes.

### How do I show the WebPlayer only on some content?

Three levels — the site-wide switch, per-content-type toggles, and a per-post override in the editor. Details in [Choose where it shows](#choose-where-it-shows).

### Can I control where the player appears on the page?

Yes — the customizer's **Position** control places it before, after, or inside your content, aligned to your theme's content column, or attaches it to any CSS selector you choose. For everything beyond the customizer, see the [Web Player guide](/guides/web-player/).

### I'm on a v1 (legacy) account — what do I get?

Listen buttons and shortcodes work fully. The WebPlayer needs a v2 account — the settings page offers a reversible **Try the v2 WebPlayer** preview, and upgrading is free.

### Can I use premium neural voices?

Yes — on ResponsiveVoice v2, Bring Your Own Key (BYOK) connects premium providers (Google Cloud, Microsoft Azure, OpenAI and more) through your dashboard, adding thousands of neural voices to your catalog. Voices you add appear in the plugin automatically — in the block's voice picker and the WebPlayer — with no plugin configuration.

### Does it work with page builders and the Classic editor?

Yes — the shortcodes work in any editor or page builder that renders WordPress shortcodes (the Classic editor, Elementor, and the like), and the WebPlayer attaches to your rendered content no matter what built it. The Listen Button block needs the block editor. More editor integrations are planned.

### What data is sent to ResponsiveVoice?

When a visitor plays audio, the text to read and your site's public API key are sent to the ResponsiveVoice API from their browser. Full detail in [External services and privacy](#external-services-and-privacy).

### Will the plugin slow my site down?

It's built not to — its scripts load at the end of the page and don't block rendering, and speech is synthesized only when a visitor presses play. Sites with strict CSP or asset policies can switch to bundled delivery or pin a library version — see [Advanced delivery](#advanced-delivery).

## External services and privacy

This plugin relies on the ResponsiveVoice service to synthesize speech, so text and your API key are sent to it from visitors' browsers.

- The ResponsiveVoice SDK loads from `cdn.responsivevoice.org`, or, in **bundled** delivery mode, is served from your own site.
- When a visitor plays audio, the **text to read** and your site's **public API key** are sent to the ResponsiveVoice Text-To-Speech API to generate audio. The plugin also reads your site configuration from the API to enable the WebPlayer.

See the [Terms of Service](https://responsivevoice.org/terms/) and [Privacy Policy](https://responsivevoice.org/privacy-policy/).

## Support and links

- [ResponsiveVoice Text To Speech on WordPress.org](https://wordpress.org/plugins/responsivevoice-text-to-speech/)
- [Register for a free API key](https://responsivevoice.org/register)
- [ResponsiveVoice dashboard](https://app.responsivevoice.org)
- [Web Player guide](/guides/web-player/)
- [Voice Selection](/guides/voice-selection/)
- [Support](https://responsivevoice.org/support)
